Bỏ qua để đến nội dung

Màn Bán hàng (Sale Workspace)

Màn Bán hàng (/point-of-sale/sale) là giao diện chính để xử lý bán hàng. Màn này gồm:

  • Danh mục sản phẩm (bên trái) — duyệt và tìm hàng
  • Giỏ hàng (bên phải) — xem lại, chỉnh số lượng, áp dụng giảm giá
  • Modal thanh toán — xử lý thanh toán và in bill

Điều hướng Thu ngân

Màn bán hàng trống

I. Quy trình bán hàng 5 bước (kiểu KiotViet)

Phần tiêu đề “I. Quy trình bán hàng 5 bước (kiểu KiotViet)”

Phần này hướng dẫn toàn bộ một đơn bán theo đúng thứ tự thu ngân gặp trên màn. Mỗi bước liên kết tới màn tương ứng và có ảnh minh hoạ.

Bước 1 — Mở Màn Bán hàng và chọn cửa hàng/quầy

Phần tiêu đề “Bước 1 — Mở Màn Bán hàng và chọn cửa hàng/quầy”

Tình huống: Bạn đã đăng nhập và sẵn sàng bắt đầu một đơn mới.

Thao tác thực hiện:

  1. Từ thanh điều hướng trái, bấm Bán hàng (hoặc vào /point-of-sale/sale).
  2. Nếu cửa hàng có nhiều quầy, chọn quầy từ bộ chọn trên thanh trên. Quầy gắn đơn này với một ca, ngăn kéo và máy in cụ thể.
  3. Xác nhận chip cửa hàng trên thanh trên hiện đúng vị trí (bảng giá và danh mục phụ thuộc vào đó).
  4. Giỏ trống hiện bên phải; danh mục bên trái sẵn sàng nhập hàng.

Màn bán hàng trống

Mẹo: Cửa hàng nhiều quầy sẽ hiện pos.laneRequiredBanner nếu bạn cố thêm hàng trước khi chọn quầy — hãy chọn quầy trước rồi tiếp tục.

Tình huống: Khách nói họ muốn mua gì. Bạn cần dựng giỏ thật nhanh.

Thao tác thực hiện:

  1. Tìm kiếm (thanh trên): gõ tên sản phẩm, SKU hoặc mã vạch; bấm Enter hoặc đợi debounce. Phím tắt / focus ô tìm.
  2. Quét mã vạch (USB / camera / keyboard wedge) — sản phẩm khớp tự thêm vào giỏ, mỗi lần quét +1 số lượng.
  3. Chạm vào tile sản phẩm trong lưới danh mục để thêm.
  4. Quick pick (hàng tile ngang phía trên lưới) — sản phẩm bán chạy hoặc đã ghim, một chạm là thêm.
  5. Nhấn giữ tile để ghim hoặc bỏ ghim khỏi hàng quick pick.
  6. Chỉnh số lượng bằng + / − trên dòng giỏ, hoặc gõ trực tiếp vào ô.

Giỏ có dòng sản phẩm

Mẹo: Hệ thống tạo dòng riêng cho mỗi kênh giá (Lẻ vs Sỉ). Chuyển kênh sau khi đã thêm sẽ giữ nguyên giá kênh cũ cho dòng đó — xem Kênh giá Lẻ / Sỉ.

Bước 3 — Gắn khách hàng (không bắt buộc nhưng nên làm)

Phần tiêu đề “Bước 3 — Gắn khách hàng (không bắt buộc nhưng nên làm)”

Tình huống: Bạn muốn áp giảm thành viên, cộng điểm thưởng, hoặc ghi nhận đơn cho khách đã biết.

Thao tác thực hiện:

  1. Bấm nút Chọn khách trên thanh trên.
  2. Gõ tên, số điện thoại hoặc mã khách trong modal (hoặc quét thẻ thành viên).
  3. Bấm vào dòng kết quả để gắn khách; chip khách trên thanh trên hiện tên, giỏ tự tính lại giảm thành viên.
  4. Muốn bỏ gắn: bấm chip khách → chọn Bỏ gắn.

Đã gắn khách vào đơn

Mẹo: Bấm F4 để nhảy thẳng vào ô tìm khách từ bất kỳ đâu trên màn Bán hàng.

Bước 4 — Áp giảm, coupon và khuyến mãi

Phần tiêu đề “Bước 4 — Áp giảm, coupon và khuyến mãi”

Tình huống: Đơn đủ điều kiện khuyến mãi, hoặc thu ngân cần áp giảm bằng tay.

Thao tác thực hiện:

  1. Khuyến mãi tự động — khi giỏ thoả quy tắc Mua-X-Tặng-Y, dòng thưởng $0.00 tự thêm. Tìm badge Promo hoặc KM trong giỏ.
  2. Giảm dòng — bấm ô giảm trên dòng giỏ, nhập phần trăm hoặc số tiền. Ghi đè giá catalog cho dòng đó.
  3. Giảm đơn — cuộn tới khu vực tổng, bấm dòng Giảm, chọn phần trăm hoặc số tiền.
  4. Mã coupon — bấm ô Coupon, nhập mã (vd SAVE20), bấm Áp dụng. Hệ thống kiểm tra hạn, đơn tối thiểu và điều kiện khách.
  5. Giảm thành viên — tự áp khi đã gắn khách có hạng active ở Bước 3.

Mẹo: Thứ tự cộng dồn cố định: giảm dòng → thành viên → giảm đơn → coupon → thuế. Xem Thứ tự cộng dồn giảm để biết sơ đồ đầy đủ.

Tình huống: Khách sẵn sàng thanh toán.

Thao tác thực hiện:

  1. Bấm nút Thanh toán dưới panel giỏ.
  2. Modal thanh toán mở ra với tất cả tender đã cấu hình (Tiền mặt, Thẻ, Séc, Ví; thêm Nợ ở chế độ sỉ).
  3. Chọn tender và theo luồng từng loại:
    • Tiền mặt — nhập số tiền nhận, hệ thống hiện tiền thừa.
    • Thẻ — bấm Gửi tới terminal, khách quẹt/cắm thẻ, đợi chỉ báo xanh thành công.
    • Séc / Ví / Nợ — điền các trường tham chiếu theo yêu cầu rồi xác nhận.
  4. Kiểm lại tóm tắt đơn (dòng, thuế, tổng). Thêm thông tin hoá đơn (MST, công ty, email) nếu cần xuất VAT.
  5. Bấm Đặt đơn. Màn thành công hiện số đơn và bill tự in (hoặc in ra máy đã cấu hình).
  6. Từ màn thành công: Bán mới để bắt đầu đơn kế tiếp, hoặc In bill để in lại.

Tab phương thức thanh toán

Modal thanh toán tiền mặt

Modal thanh toán với tóm tắt thuế

Mẹo: Terminal lỗi hiện chỉ báo đỏ — giữ modal mở, xử lý terminal ở Cài đặt Terminal thẻ, rồi thử lại mà không cần dựng lại giỏ.


┌─────────────────────────────────────────────────────────────┐
│ Thanh trên: Cửa hàng | Quầy | Tìm | Khách | Thao tác nhanh │
├─────────────────────────┬───────────────────────────────────┤
│ │ │
│ Panel danh mục │ Panel giỏ │
│ - Quick pick tiles │ - Dòng sản phẩm │
│ - Tab danh mục │ - Số lượng │
│ - Lưới sản phẩm │ - Tạm tính / Thuế │
│ - Kết quả tìm │ - Tổng │
│ │ - Nút thanh toán │
│ │ │
└─────────────────────────┴───────────────────────────────────┘
  • Cửa hàng: Bắt buộc, quyết định danh mục và giá
  • Quầy: Bắt buộc với cửa hàng nhiều quầy có theo dõi ca
  • Ô tìm: Gõ tên, SKU hoặc mã vạch (Enter hoặc đợi debounce)
  • Bật/tắt chế độ tìm: Chuyển giữa “Tên/SKU” và “Chỉ mã vạch”
  • Phím tắt: / để focus ô tìm
  • Nút: “Chọn khách” (hoặc hiện tên khách đã chọn)
  • Mở: Modal tìm khách
  • Khách đã gắn xuất hiện trong giỏ với điểm thưởng, giảm giá thành viên

Đã gắn khách vào đơn

  • Đã ghim (icon sao) — Sản phẩm bán chạy
  • Thêm nhanh (icon dấu cộng) — Tạo dòng tuỳ chỉnh / sản phẩm ad-hoc
  • Menu (ba chấm) — Tuỳ chọn khác

Hàng ngang có cuộn với tile sản phẩm — hiện sản phẩm bán gần đây hoặc đã ghim. Chạm để thêm vào giỏ. Nhấn giữ để ghim/bỏ ghim.

Tabs ngang hiện các danh mục sản phẩm. Tab “Tất cả” hiện toàn bộ. Sản phẩm chưa phân loại vào “(Chưa có danh mục)”. Tab đang chọn highlight màu nhấn.

2-4 cột tuỳ độ rộng màn hình. Mỗi tile hiện: ảnh, tên, giá (đơn vị cơ bản), chỉ báo tồn (nếu sắp hết/hết). Chạm để thêm vào giỏ.

Màn Bán hàng hỗ trợ hai kênh giá ảnh hưởng đến cách tính giá sản phẩm.

Trên thanh công cụ (chỉ trên POS lẻ):

  • Lẻ (trái) — Dùng giá lẻ từ catalog sản phẩm
  • Sỉ (phải) — Dùng giá sỉ từ catalog sản phẩm

Bật/tắt kênh giá - chế độ Lẻ

Bật/tắt kênh giá - chế độ Sỉ

Khi chuyển kênh:

  1. Dòng mới thêm sau khi chuyển dùng giá kênh đã chọn
  2. Dòng cũ giữ nguyên giá kênh ban đầu
  3. Giỏ có thể chứa dòng hỗn hợp — một số lẻ, một số sỉ
  4. Dòng sỉ hiện badge “Sỉ” hoặc “WS” trong giỏ
Tính năngChế độ LẻChế độ Sỉ
Nguồn giáproduct.retail_priceproduct.wholesale_price
Kiểm tồnTồn kho lẻTồn kho sỉ (nếu kho riêng)
Badge giỏKhông“Sỉ” hoặc “WS”
Trộn dòngCó thể thêm dòng sỉCó thể thêm dòng lẻ
Độc lập dòngMỗi dòng giữ kênh ban đầuMỗi dòng giữ kênh ban đầu

Lẻ:

  • Khách vãng lai
  • Mua từng món
  • Checkout standard

Sỉ:

  • Khách B2B
  • Đơn số lượng lớn
  • Mua để bán lại
  • Giá mỗi đơn vị thấp hơn

Lưu ý: Nếu sản phẩm không có giá sỉ và thêm ở chế độ sỉ:

  • Fallback về giá lẻ
  • Hiện toast cảnh báo
  • Vẫn thêm vào giỏ (nhưng giá lẻ)

Dùng Bảng giá (dropdown cạnh bật/tắt kênh giá):

  • Giá catalog (mặc định) — Dùng giá cơ bản lẻ/sỉ
  • Bảng giá đặt tên — Áp dụng quy tắc giá riêng theo phân khúc khách

Khi bảng giá active: ghi đè cả giá lẻ VÀ sỉ; hiện tên bảng giá trên toolbar; có thể kết hợp với kênh giá.

Mỗi dòng hiện:

  • Tên sản phẩm (kèm biến thể nếu có)
  • Badge kênh giá — “Sỉ” hoặc “WS” cho dòng sỉ
  • Stepper số lượng — tăng/giảm hoặc gõ giá trị
  • Đơn giá — chỉnh được (nếu cho phép ghi đè)
  • Thành tiền dòng — tự tính
  • Nút xoá (icon thùng rác)

Hàng đơn vị tính (cân, đo): hiện sl theo lb, kg hoặc đơn vị tuỳ chỉnh; ô sl chỉnh được; tự tính thành tiền.

Sản phẩm khuyến mãi: Badge “KM” hoặc “Promo”; tự thêm khi điều kiện thoả; giá khoá (không sửa); hiện quy tắc kích hoạt; tự xoá nếu dòng kích hoạt bị xoá.

Dưới các dòng giỏ hiện:

  • Tạm tính — Tổng dòng trước thuế/giảm
  • Giảm dòng — Giảm cấp catalog cấu hình trên sản phẩm
  • Giảm thành viên — Áp dụng khi khách đã gắn
  • Giảm — Giảm cấp đơn (tay hoặc coupon)
  • Coupon — Giảm theo mã coupon (nếu có)
  • Thuế — Tính theo cấu hình cửa hàng (vd 9.15% sales tax)
  • Tổng — Số phải thu cuối cùng

Giỏ có dòng thuế hỗn hợp

Tính thuế:

  • Chỉ áp dụng cho sản phẩm chịu thuế (cấu hình trên sản phẩm)
  • Hàng không chịu thuế (tạp hoá, thuốc) loại khỏi cơ sở thuế
  • Thuế suất cấp cửa hàng (thường 9.15% cho hầu hết vùng)
  • Tính trên tạm tính sau giảm dòng

Dưới dòng giỏ:

  • Tạm tính — tổng dòng trước thuế
  • Thuế — thuế 9.15% (mặc định, cấu hình theo cửa hàng) chỉ áp dụng cho dòng chịu thuế
  • Giảm — tổng giảm (catalog + coupon)
  • Tổng cuối — số phải thu

Modal thanh toán với tóm tắt thuế

Chi tiết thuế:

  • Mở “Xem chi tiết thuế” để thấy tóm tắt thuế theo thuế suất
  • Hiện số chịu thuế và thuế mỗi suất (vd “9.15% trên 50.00 đ = 4.58 đ”)
  • Bill in rõ số thuế và thuế suất

Ghi chú cấu hình thuế:

  • Thuế suất cấp cửa hàng (Admin → Cài đặt cửa hàng → Thuế)
  • Sản phẩm đánh dấu chịu/không chịu thuế riêng
  • Khách miễn thuế có cờ bỏ qua tính thuế
  • Gửi WBS — Gửi đơn tới Bảng lấy hàng kho (nút trên Thanh toán)
  • Xoá giỏ — Xoá tất cả dòng (cần xác nhận)
  • Lưu nháp — Lưu giỏ thành nháp có tên
  • Thanh toán — Mở modal checkout

Luồng Gửi WBS: Khi cần nhân viên kho lấy hàng trước khi hoàn tất bán:

  1. Thêm hàng vào giỏ
  2. Bấm “Gửi WBS” (trên nút Thanh toán trong panel giỏ)
  3. Đơn xếp ngay vào Bảng lấy hàng kho
  4. Giỏ trống, sẵn sàng khách kế tiếp
  5. Toast xác nhận: “Đã gửi đơn lên bảng lấy hàng kho”

Giỏ có dòng sản phẩm


POS hỗ trợ nhiều loại giảm giá có thể kết hợp:

Cấu hình bởi: Admin trong cài đặt sản phẩm Áp dụng: Tự động khi thêm sản phẩm vào giỏ Hiển thị: Hiện trong tổng giỏ dưới “Giảm dòng”

Loại:

  • Giảm phần trăm — vd 10% off (giảm đơn giá theo %)
  • Giảm số tiền cố định — vd 2 đ off mỗi đơn vị
  • Giá khuyến mãi — Sản phẩm gắn badge “Promo” trong catalog

Tính toán:

Dòng giảm 10% item discount:
Đơn giá: 10.00 đ
Giảm dòng: -1.00 đ (10%)
Giá thực: 9.00 đ/đơn vị
SL: 3
Thành tiền: 27.00 đ

Hiển thị trong giỏ:

  • Hiện dưới “Giảm dòng” trong tổng
  • Mỗi dòng liên quan hiện giảm trên đơn vị
  • Sản phẩm khuyến mãi hiện badge “Promo”

Cấu hình bởi: Thu ngân tại checkout Áp dụng: Bằng tay qua ô giảm hoặc tự động qua khuyến mãi Hiển thị: Hiện là “Giảm” trong tổng giỏ

Cách nhập:

  • Bấm ô Giảm trong panel giỏ
  • Nhập số tiền hoặc phần trăm
  • Áp dụng toàn đơn

Tính toán:

Giảm đơn 10%:
Tạm tính (sau giảm dòng): 100.00 đ
Giảm đơn: -10.00 đ (10%)
Tạm tính sau giảm: 90.00 đ

Phân quyền:

  • Cài đặt cửa hàng cho phép sửa giảm hay không
  • Nếu tắt, hiện: “Cài đặt cửa hàng không cho phép đổi giảm đơn”

Cấu hình bởi: Admin trong marketing/khuyến mãi Áp dụng: Khách cung cấp mã, thu ngân nhập Hiển thị: Hiện là “Coupon” trong tổng kèm tên mã

Cách áp dụng:

  1. Khách cung cấp mã (in trên giấy, email, SMS)
  2. Bấm ô Coupon trong panel giỏ
  3. Nhập mã (vd SAVE20, SUMMER10)
  4. Bấm Áp dụng
  5. Hệ thống kiểm tra:
    • Mã tồn tại và active
    • Chưa hết hạn
    • Đạt đơn tối thiểu
    • Khách đủ điều kiện
  6. Giảm áp dụng, toast “Áp dụng coupon thành công”

Loại coupon:

  • Giảm phần trăm — vd 20% off toàn đơn
  • Giảm số tiền — vd 10 đ off đơn
  • Miễn phí ship — Bỏ phí giao hàng
  • Mua X tặng Y — Tự thêm dòng thưởng (xem Khuyến mãi)

Lỗi validation:

  • ❌ “Không tìm thấy mã” — Sai hoặc hết hạn
  • ❌ “Chưa đạt đơn tối thiểu” — Đơn dưới ngưỡng
  • ❌ “Đã dùng” — Mã dùng 1 lần đã được redeem
  • ❌ “Không đủ điều kiện” — Khách bị hạn chế

Xoá coupon:

  • Bấm Xoá cạnh ô coupon
  • Hoặc xoá luôn ô giảm

Cấu hình bởi: Admin trong promotions Áp dụng: Tự động khi điều kiện thoả Hiển thị: Dòng tự thêm với badge “Promo”

Cách hoạt động:

  1. Khách thêm sản phẩm kích hoạt vào giỏ (vd 2 đơn vị Product A)
  2. Hệ thống kiểm tra quy tắc:
    • Mua 2 tặng 1 (cùng SP)
    • Mua 2 Product A tặng 1 Product B
  3. Dòng thưởng tự thêm:
    • Badge “Promo”
    • Giá khoá $0.00
    • Ghi chú: “Khuyến mãi (tự thêm)”
    • SL theo quy tắc
  4. Nếu SP kích hoạt bị xoá → dòng thưởng tự xoá

Ví dụ — Mua 2 tặng 1 (cùng SP):

Giỏ:
├─ Product A (qty 2) @ 10 đ = 20.00 đ ← Kích hoạt
└─ Product A (qty 1) @ 0.00 đ [Promo] ← Thưởng tự thêm
Ghi chú: "Mua 2 tặng 1 (cùng sản phẩm)"

Ví dụ — Mua 2 tặng SP khác:

Giỏ:
├─ Product A (qty 2) @ 15 đ = 30.00 đ ← Kích hoạt
└─ Product B (qty 1) @ 0.00 đ [Promo] ← Thưởng tự thêm
Ghi chú: "Mua 2 Product A tặng 1 Product B"

Badge khuyến mãi trong catalog:

  • SP trong KM active hiện badge “Promo”
  • Hover hiện quy tắc: “Mua 2 tặng 1”

Toast:

  • Khi dòng thưởng tự thêm: “Đã thêm 1 dòng khuyến mãi vào giỏ”

Hiển thị trên bill:

  • Sản phẩm khuyến mãi in với ghi chú: “+1 free (promo)” hoặc “+1 Product B (free)”

Cấu hình bởi: Admin trong customer/membership settings Áp dụng: Tự động khi khách gắn vào đơn Hiển thị: Hiện là “Giảm thành viên” trong tổng

Cách hoạt động:

  1. Thu ngân chọn khách (bấm Chọn khách)
  2. Nếu khách có membership active:
    • Áp dụng giảm theo hạng (vd Gold = 5% off)
    • Hiện trong tổng giỏ
  3. Giảm áp dụng trên tạm tính sau giảm dòng

Tính toán:

Giảm thành viên (Gold 5%):
Tạm tính: 100.00 đ
Giảm thành viên: -5.00 đ (5%)
Tạm tính sau thành viên: 95.00 đ

Khi nhiều giảm áp dụng, thứ tự tính:

1. Giảm dòng catalog
↓
3. Tạm tính (sau giảm dòng)
↓
4. Giảm thành viên (% tạm tính)
↓
5. Giảm đơn (tay)
↓
6. Giảm coupon
↓
7. Tạm tính (sau tất cả giảm)
↓
8. Tính thuế
↓
9. Tổng cuối

Ví dụ đầy đủ:

Dòng 1: Product A (qty 2) @ 10 đ, 10% giảm dòng
→ Thành tiền: 18.00 đ (sau 2 đ giảm dòng)
Dòng 2: Product B (qty 1) @ 50 đ, không giảm dòng
→ Thành tiền: 50.00 đ
Tạm tính: 68.00 đ
Giảm thành viên (5%): -3.40 đ
→ Tạm tính: 64.60 đ
Giảm đơn (10%): -6.46 đ
→ Tạm tính: 58.14 đ
Coupon (5 đ off): -5.00 đ
→ Tạm tính: 53.14 đ
Thuế (8%): +4.25 đ
→ Tổng cuối: 57.39 đ

Vấn đềNguyên nhânCách xử lý
Không sửa được ô giảmCài đặt cửa hàng tắtNhờ chủ bật trong cài đặt
Coupon bị từ chốiSai / hết hạnKiểm tra chính tả mã, hạn dùng
Coupon “chưa đạt tối thiểu”Đơn dưới ngưỡngThêm hàng hoặc bỏ coupon
Sản phẩm KM không tự thêmChưa đủ SL kích hoạtThêm đủ SP kích hoạt
SP KM bị xoáSP kích hoạt bị xoáThêm lại SP kích hoạt
Không thấy giảm thành viênKhách chưa gắnChọn khách trên thanh trên
Sai số tiền giảmNhiều giảm cộng dồnXem chi tiết breakdown tổng

  1. Máy quét USB (HID): Quét trực tiếp vào ô tìm đang focus
  2. Quét camera: Bấm icon camera → webcam scanner inline (cần quyền)
  3. Keyboard wedge: Desktop lắng nghe sự kiện wedge toàn cục

Khi phát hiện mã:

  • EAN-13/UPC: Tra cứu khớp chính xác trong catalog
  • Code128: SKU hoặc mã tuỳ chỉnh
  • Mã cân (format nội bộ): Trích PLU + cân nặng, thêm vào giỏ với sl gắn trong
  • Mã nhúng giá: Trích giá, ghi đè giá catalog

Nếu không tìm thấy sản phẩm:

  • Hiện toast “Không tìm thấy sản phẩm”
  • Ô tìm xoá
  • Có thể thêm tay qua Quick Add

Bấm Thanh toán trong giỏ (dưới panel giỏ)

Kịch bản chặn:

  • Giỏ trống → Thanh toán tắt
  • Thiếu cửa hàng/quầy → Banner chặn
  • Vượt hạn mức nợ (khách gắn) → Modal cảnh báo, có thể ghi đè hoặc huỷ

Modal thanh toán hiện tuỳ chọn theo cấu hình cửa hàng và ngữ cảnh đơn.

Phương thứcHiển thịIconKhi nào cóDùng cho
Tiền mặt“Tiền mặt”💵LuônTiền mặt
Thẻ“Thẻ”💳LuônTerminal thẻ (PAX/CodePay)
Séc“Séc”📝Lẻ & SỉSéc ngân hàng
Ví“Ví”👛Lẻ & SỉVí điện tử
Nợ“Nợ”📒Chỉ SỉCông nợ B2B

Bán tại quầy (màn này):

  • Lẻ: Tiền mặt, Thẻ, Séc, Ví
  • Sỉ: Tiền mặt, Thẻ, Séc, Ví, Nợ (nếu cho phép)

Đơn giao hàng (tạo từ luồng riêng):

  • Tiền mặt → nhãn “COD” (Thu hộ)
  • Thẻ → nhãn “Thẻ từ xa”
  1. Chọn tab Tiền mặt (💵)
  2. Nhập số tiền khách đưa
  3. Hệ thống tự tính tiền thừa
  4. Bấm Hoàn tất thanh toán

Nút tiền nhanh: mệnh giá có sẵn (10,000 / 20,000 / 50,000 / 100,000 / 500,000), chạm để tự điền số tiền nhận, hiện tính tiền thừa real-time.

Tính tiền thừa:

Nhận: 500,000 đ
Tổng: 478,500 đ
Thừa: 21,500 đ ← Hiện nổi bật

Phím tắt: Ctrl + P mở modal thanh toán.

Modal thanh toán tiền mặt

Tổng quan phương thức:

Tab phương thức thanh toán

Modal thanh toán hiện tất cả phương thức dưới dạng tab có icon. Bán lẻ tại quầy hiện Tiền mặt, Thẻ, Séc, Ví. Chế độ sỉ thêm Nợ cho B2B.

  1. Chọn tab Thẻ (💳)
  2. Bấm Gửi tới terminal
  3. Terminal hiện số tiền
  4. Khách quẹt/cắm thẻ
  5. Hệ thống đợi phản hồi terminal

Chỉ báo trạng thái:

  • 🔵 Kết nối — Terminal sẵn sàng
  • 🟡 Đang xử lý — Đợi khách thao tác
  • 🟢 Thành công — Duyệt thanh toán
  • 🔴 Lỗi — Từ chối hoặc lỗi terminal

Xem Cài đặt Terminal thẻ.

  1. Chọn tab Séc (📝)
  2. Nhập số séc hoặc tham chiếu
  3. (Tuỳ chọn) Ghi ngân hàng và chi tiết séc
  4. Bấm Hoàn tất thanh toán

Dùng cho: Khách trả bằng séc ngân hàng; thu ngân ghi nhận séc để ký quỹ.

Ghi chú: Thanh toán đánh dấu hoàn tất ngay; séc clearing xảy ra khi đối chiếu ngân hàng.

  1. Chọn tab Ví (👛)
  2. Khách quét mã QR hoặc hiện xác nhận thanh toán
  3. Nhập mã giao dịch ví hoặc tham chiếu
  4. Bấm Hoàn tất thanh toán

Ví hỗ trợ (thị trường Việt Nam):

  • MoMo
  • ZaloPay
  • VNPay
  • ShopeePay
  • Ví số khác

Dùng cho: Khách hoàn tất trong app ví; thu ngân ghi nhận mã tham chiếu.

  1. Chọn tab Nợ (📒)
  2. Hệ thống kiểm tra hạn mức khách
  3. Số tiền đơn cộng vào công nợ khách
  4. Bấm Hoàn tất thanh toán

Yêu cầu:

  • Khách phải gắn vào đơn
  • Khách có hạn mức khả dụng
  • Chế độ sỉ phải bật

Kịch bản chặn:

  • Vượt hạn mức → Modal cảnh báo, không thể tiếp tục
  • Không gắn khách → Tuỳ chọn Nợ tắt
  • Chế độ lẻ → Không hiện tuỳ chọn

Dùng cho: Khách B2B sỉ có hạn mức công nợ được duyệt. Số dư theo dõi trong sổ cái khách.

Với đơn trả bằng nhiều phương thức (vd một phần tiền mặt + thẻ):

  1. Bấm bật/tắt Tách nhiều phương thức
  2. Thêm phương thức đầu → Nhập phần tiền
  3. Bấm Thêm phương thức khác
  4. Chọn phương thức 2 → Hệ thống hiện số dư còn lại
  5. Hoàn tất từng phương thức

Ví dụ:

Tổng: 1,500,000 đ
P1: Tiền mặt 500,000 đ
P2: Thẻ 1,000,000 đ

Giới hạn:

  • Tối đa 3 phương thức mỗi đơn
  • Không thể tách trong cùng 1 phương thức (vd 2 lần tiền mặt)
  • Terminal thẻ phải hỗ trợ partial amounts

Yêu cầu:

  • Khách gắn vào đơn
  • Có hạn mức khả dụng
  • Cửa hàng cho phép trả nợ
  1. Chọn tab Nợ
  2. Hiện số dư hiện tại và hạn mức khả dụng của khách
  3. Bấm Tính vào khách
  4. Đơn hoàn tất, số tiền cộng vào nợ khách

Kiểm tra hạn mức:

  • Chặn nếu nợ_hiện_tại + tổng_đơn > hạn_mức
  • Ghi đè bằng mật khẩu quản lý

Thanh toán nợ: Khách trả nợ qua Khách hàng → Ghi nhận thanh toán.

Phương thức bổ sung (nếu cấu hình):

  • Momo — Ví di động Việt Nam
  • ZaloPay — Ví di động Việt Nam
  • VNPay QR — Thanh toán QR

Quy trình giống chuyển khoản: hiện QR, khách quét và trả, thu ngân xác nhận.

Sau khi chọn phương thức:

  1. Xem lại tóm tắt đơn:

    • Dòng sản phẩm, số lượng, giá
    • Tóm tắt thuế
    • Phương thức thanh toán và số tiền
  2. (Tuỳ chọn) Thêm chi tiết hoá đơn:

    • Tên khách (nếu chưa gắn)
    • Mã số thuế cho VAT
    • Tên và địa chỉ công ty
    • Email gửi bill
  3. Bấm Đặt đơn

Hiện:

  • ✅ Số đơn (vd #POS-2024-00123)
  • Tổng thanh toán và tiền thừa (tiền mặt)
  • Tóm tắt phương thức
  • Trạng thái bill (đã in/lỗi)

Thao tác:

  • Bán mới — Xoá giỏ, bắt đầu đơn kế tiếp
  • In bill — In lại nếu in tự động lỗi
  • Gửi bill email — Gửi cho khách

In tự động (mặc định):

  • Bill in ngay tới máy in đã cấu hình
  • Nếu máy in offline, hiện lỗi + tuỳ chọn in tay

In tay:

  • Bấm In bill trong màn thành công
  • Hoặc từ Đơn hàng → chi tiết → In

Bill gồm:

  • Tên cửa hàng, địa chỉ, MST, điện thoại
  • Số đơn và thời gian
  • Dòng sản phẩm với sl và giá
  • Chi tiết thuế theo dòng (9.15% trên dòng chịu thuế)
  • Tổng thuế (tổng thuế tất cả dòng)
  • Phương thức thanh toán
  • Tiền thừa (tiền mặt)
  • Tên thu ngân
  • Mã vạch hoá đơn (Code128, không EAN-13)

Bill có tóm tắt thuế và mã vạch

Ghi chú format mã vạch:

  • Dùng Code128 (không EAN-13) cho id client order compact
  • Quét được cho đổi trả, tra cứu, đối chiếu
  • In dưới tổng để quét dễ

Minh bạch bill:

  • Mỗi dòng chịu thuế hiện tính thuế
  • Dòng không chịu thuế ghi “No tax”
  • Tổng thuế tóm tắt dưới
  • Tuân thủ báo cáo sales tax

Bill có tóm tắt thuế

Nếu không có internet:

  1. Checkout tiến hành bình thường
  2. Đơn lưu vào outbox queue
  3. Bill in với ghi chú “(Offline - đang đồng bộ)”
  4. Tự đồng bộ khi mạng trở lại

Trạng thái outbox:

  • Xem đơn chờ trong Cài đặt → Dữ liệu local
  • Đồng bộ tay: Bấm “Đồng bộ ngay”
  • Lỗi đồng bộ → Thử lại hoặc liên hệ hỗ trợ
  1. Tìm đơn gốc (theo mã vạch hoá đơn hoặc khách)
  2. Mở modal chi tiết đơn
  3. Bấm “Đổi trả” → luồng đổi trả (xem Đổi trả)
  1. Bấm Drafts dưới giỏ
  2. Chọn nháp từ danh sách
  3. Dòng nháp nạp vào giỏ
  4. Sửa tiếp hoặc thanh toán
  1. Bấm Quick Add (icon dấu cộng) → “Sản phẩm tuỳ chỉnh”
  2. Nhập tên, giá, số lượng
  3. Chọn xử lý thuế
  4. Thêm vào giỏ

PhímThao tác
/Focus ô tìm
Ctrl + PMở modal thanh toán
F2Hoàn tất tiền mặt (trong modal)
EscapeXoá tìm / đóng modal
EnterGửi tìm / xác nhận modal
F3Focus tìm (thay thế)
Quét mãThêm sản phẩm vào giỏ

Nguyên nhân: Kiểm tra tồn thất bại hoặc sản phẩm không active Cách xử lý: Kiểm tra trạng thái sản phẩm trong Hàng hoá, xác nhận tồn nếu bật theo dõi

Nguyên nhân:

  • Giỏ trống
  • Chưa chọn cửa hàng
  • Chưa chọn quầy (cửa hàng nhiều quầy)
  • Ca làm việc bắt buộc nhưng chưa mở

Cách xử lý: Xử lý điều kiện chặn, banner giải thích cần gì

Nguyên nhân: Chọn sai cửa hàng hoặc lệch bảng giá Cách xử lý: Kiểm tra bộ chọn cửa hàng, kiểm giá sản phẩm trong Dashboard → Catalog