📖 Hướng dẫn sử dụng

← Về Dashboard

Hướng dẫn sử dụng VDG POS

Tài liệu này hướng dẫn từng bước cách vận hành phần mềm bán hàng VDG POS (phiên bản Web) — từ đăng nhập, bán hàng tại quầy, công nợ (phải thu / phải trả), đến quản trị sản phẩm, nhân viên, ca làm việc và xuất hoá đơn điện tử.

Mỗi mục đều có ảnh chụp giao diện máy tính (desktop) và điện thoại (mobile). Tệp ảnh nằm trong thư mục docs/manual/img/.

🆕 Điểm mới trong bản này

  • Công nợ phải thu — bán ghi nợ cho khách (trả trước một phần, còn lại ghi sổ), thu dần, số dư đầu kỳ, điều chỉnh, nhắc nợ quá hạn, xuất CSV. Xem phần 5.
  • Công nợ phải trả — theo dõi nợ nhà cung cấp; nợ phát sinh tự động khi Nhập kho, cộng thêm ghi nợ ngoài luồng (cước, dịch vụ), chi trả dần.
  • Đối trừ (bù trừ) công nợ khi một đối tác vừa là khách vừa là NCC.
  • Sửa / huỷ phiếu nợ có lưu vết (chỉ Chủ quán) để đối chiếu.

Mục lục

  1. Khởi động phần mềm
  2. Đăng nhập
  3. Màn hình bán hàng (POS)
  4. Dashboard Chủ quán
  5. Công nợ (Phải thu & Phải trả)
  6. Thiết lập
  7. Hoá đơn điện tử (HDDT)
  8. Báo cáo & xuất file
  9. Hỗ trợ

1. Khởi động phần mềm

Trên máy tính của cửa hàng

scripts/start-demo.sh           # macOS / Linux
scripts\start-demo.ps1          # Windows

Phần mềm sẽ:

  1. Khởi tạo cơ sở dữ liệu SQLite tại pos.db.
  2. Tự động nạp dữ liệu mẫu (sản phẩm, nhóm sản phẩm, 4 tài khoản nhân viên).
  3. Mở Web Admin tại http://localhost:5005.
  4. Mở cửa sổ POS toàn màn hình (trừ khi đặt Kiosk:Headless=true).

Tài khoản mặc định

Tài khoản Vai trò Mật khẩu (web) Mã PIN (kiosk)
admin Quản trị 5555 5555
owner Chủ quán 5555 5555
casher1 Thu ngân 5555
casher2 Thu ngân 5555

⚠️ Bắt buộc đổi mật khẩu trước khi triển khai thực tế. Vào Thiết lập → Nhân viên / Thu ngân để đổi.


2. Đăng nhập

VDG POS có hai cổng đăng nhập riêng biệt — phù hợp với từng vai trò.

2.1 Đăng nhập mật khẩu (Admin / Chủ quán)

URL: http://localhost:5005/login

Desktop Mobile
Đăng nhập mật khẩu - desktop Đăng nhập mật khẩu - mobile

2.2 Đăng nhập PIN (Thu ngân)

URL: http://localhost:5005/login/cashier

Desktop Mobile
Đăng nhập PIN - desktop Đăng nhập PIN - mobile

Mục đích thiết kế: trên máy quầy có nhiều người dùng chung, mỗi ca làm chỉ cần bấm 4 số trong vài giây.

2.3 Đăng xuất


3. Màn hình bán hàng (POS)

URL: http://localhost:5005/pos

Desktop Mobile
POS - desktop POS - mobile

3.1 Quy trình bán

  1. Chọn nhóm sản phẩm ở thanh trên cùng (Trà sữa, Trà trái cây, …).
  2. Bấm vào sản phẩm để thêm vào giỏ.
  3. Giỏ hàng nằm ở thanh dưới (🛒 Giỏ hàng) — bấm để mở rộng:
    • + / −: tăng/giảm số lượng.
    • 🗑️: xoá món.
    • 📝 Ghi chú: thêm chú thích cho món (ví dụ "ít đường", "không đá").
  4. Bấm Thanh toán để chuyển sang màn hình trả tiền.

3.2 Thanh toán

Có ba phương thức:

Phương thức Cách hoạt động
💵 Tiền mặt Nhập số tiền khách đưa, hệ thống tính tiền thừa.
📱 Chuyển khoản QR Hệ thống sinh mã QR VietQR, khách quét bằng app ngân hàng. Khi giao dịch về (qua SePay hoặc SMS), POS tự động xác nhận và in hoá đơn.
🧾 Ghi nợ (bán chịu) Khách trả trước một phần (hoặc chưa trả), phần còn lại ghi vào sổ công nợ. Bắt buộc chọn khách hàng (nhập SĐT rồi bấm Tìm) vì nợ phải gắn với một khách. Nếu khách đã vượt hạn mức công nợ thì hệ thống chặn, đơn nằm ở Chờ thanh toán. Xem chi tiết cách thu lại ở phần 5.

Cấu hình tài khoản nhận tiền tại Thiết lập → VAT / Thuế (mục Ngân hàng).

3.3 Hàng đợi đơn

URL: http://localhost:5005/pos/queue

Desktop Mobile
Hàng đợi - desktop Hàng đợi - mobile

4. Dashboard Chủ quán

URL: http://localhost:5005/ (sau khi đăng nhập bằng admin / owner).

Dashboard có các mục chính trên thanh nav (Doanh thu, Dòng tiền, Đơn hàng, Khách hàng, Công nợ, Phải trả, Ca làm việc, Chấm công, HDDT, Hỗ trợ) + nhóm Thiết lập gộp các trang quản trị bên trong.

4.1 📊 Doanh thu

URL: /?nav= (mặc định)

Desktop Mobile
Doanh thu - desktop Doanh thu - mobile

4.2 💰 Dòng tiền

URL: /?nav=cashflow hoặc /dashboard/cashflow

Desktop Mobile
Dòng tiền - desktop Dòng tiền - mobile

4.3 🧾 Đơn hàng

URL: /dashboard/admin/orders

Desktop Mobile
Đơn hàng - desktop Đơn hàng - mobile

4.4 👥 Khách hàng

URL: /dashboard/admin/customers

Desktop Mobile
Khách hàng - desktop Khách hàng - mobile

4.5 ⏰ Ca làm việc

URL: /?nav=shifts

Desktop Mobile
Ca làm việc - desktop Ca làm việc - mobile

4.6 🕐 Chấm công

URL: /?nav=timeclock

Desktop Mobile
Chấm công - desktop Chấm công - mobile

4.7 💳 Công nợ — xem phần 5

4.8 🏭 Phải trả — xem phần 5

4.9 🧾 HDDT — xem phần 7

4.10 ⚙️ Thiết lập — xem phần 6

4.11 💬 Hỗ trợ — xem phần 9


5. Công nợ (Phải thu & Phải trả)

Công nợ theo dõi tiền khách còn nợ mình (phải thu) và tiền mình còn nợ nhà cung cấp (phải trả). Hai màn nằm trên thanh nav Dashboard: 💳 Công nợ🏭 Phải trả.

Phân quyền. Thu ngân không vào được. Chủ quán / Admin xem và thu / chi tiền bình thường. Các thao tác ghi tay (đầu kỳ, điều chỉnh, ghi nợ ngoài luồng, sửa/huỷ phiếu) chỉ Chủ quán (Owner) — vì chúng làm dịch chuyển số dư mà không có đơn hàng hay phiếu nhập kho đứng sau.

5.1 💳 Công nợ phải thu (khách nợ mình)

URL: /dashboard/admin/debt

Nợ phát sinh từ đâu? Khi bán hàng chọn phương thức 🧾 Ghi nợ (xem mục 3.2). Đơn vẫn tính là đã bán, phần khách trả ngay ghi nhận như tiền mặt, phần thiếu ghi thành phiếu nợ của khách đó.

Trên màn danh sách:

Bấm vào một khách để mở chi tiết công nợ:

Thao tác Ý nghĩa
Thu tiền Khách trả bớt — nhập số tiền, chọn Tiền mặt / Chuyển khoản. Hệ thống trừ vào các phiếu nợ cũ nhất trước.
Đối trừ (bù trừ) Khi khách này đồng thời là nhà cung cấp của mình: cấn trừ nợ phải thu với nợ phải trả thay vì chuyển tiền qua lại.
Công nợ đầu kỳ (Owner) Ghi số dư nợ có sẵn từ trước khi dùng phần mềm.
Điều chỉnh (Owner) Tăng/giảm số nợ kèm lý do (vd ghi nhầm, giảm giá bù).
Hạn mức / Hạn thanh toán (Owner) Đặt hạn mức (0 = không giới hạn) và số ngày đến hạn. Vượt hạn mức thì lúc bán sẽ bị chặn ghi nợ.
✏️ Sửa / 🗑 Huỷ phiếu (Owner) Xem mục 5.3.

5.2 🏭 Công nợ phải trả (mình nợ nhà cung cấp)

URL: /dashboard/admin/payable

Nợ phát sinh từ đâu? Chủ yếu khi Nhập kho (⚙️ Thiết lập → Kho → Nhập kho): một lần nhập hàng vừa tăng tồn kho vừa ghi nợ NCC tương ứng. Ngoài ra có thể ghi nợ ngoài luồng cho các khoản không phải hàng hoá.

Màn danh sách + 🔔 Nhắc nợ phải trả + Xuất CSV hoạt động y như bên phải thu. Bấm vào một NCC để mở chi tiết:

Thao tác Ý nghĩa
Xác nhận chi Trả bớt tiền cho NCC — nhập số tiền, chọn Tiền mặt / Chuyển khoản, ghi chú.
⚠️ Ghi nợ ngoài luồng (Owner) Chỉ ghi tiền nợ, KHÔNG tăng tồn kho. Dùng cho cước vận chuyển, dịch vụ, nợ cũ… Hàng thật thì phải vào Kho → Nhập kho.
Công nợ đầu kỳ (Owner) Số nợ NCC có sẵn từ trước.
Điều chỉnh (Owner) Tăng/giảm kèm lý do.
Hạn mức / Hạn thanh toán (Owner) Hạn mức nợ và số ngày đến hạn với NCC.

Bảng Phiếu còn nợ phân loại rõ nguồn gốc từng phiếu:

5.3 ✏️ Sửa / huỷ phiếu nợ (lưu vết)

Chỉ Chủ quán thấy nút này (cả hai bên phải thu và phải trả):

⚠️ Huỷ phiếu từ nhập kho chỉ xoá tiền nợ — TỒN KHO KHÔNG tự giảm theo. Nếu bạn trả hàng lại NCC, phải vào ⚙️ Thiết lập → 📊 Tồn kho điều chỉnh giảm riêng. Đây là lỗi hay gặp nhất khi thao tác công nợ.


6. Thiết lập

Trên desktop, nhóm Thiết lập là một menu thả xuống ở thanh trên:

Menu Thiết lập đang mở - desktop

Trên mobile, mở menu hamburger (☰) và bấm ⚙️ Thiết lập để mở rộng:

Hamburger drawer + Thiết lập mở - mobile

5.1 📦 Sản phẩm

URL: /dashboard/admin/products

Desktop Mobile
Sản phẩm - desktop Sản phẩm - mobile

5.2 🗂 Nhóm sản phẩm

URL: /?nav=categories

Desktop Mobile
Nhóm sản phẩm - desktop Nhóm sản phẩm - mobile

5.3 📊 Tồn kho

URL: /dashboard/admin/stock

Desktop Mobile
Tồn kho - desktop Tồn kho - mobile

5.4 ⭐ Tích điểm thành viên

URL: /dashboard/admin/loyalty

Desktop Mobile
Loyalty - desktop Loyalty - mobile

5.5 👤 Nhân viên / Thu ngân

URL: /dashboard/admin/users

Desktop Mobile
Nhân viên - desktop Nhân viên - mobile

5.6 💰 VAT / Thuế

URL: /?nav=settings

Desktop Mobile
VAT - desktop VAT - mobile

7. Hoá đơn điện tử (HDDT)

URL: /?nav=einvoice hoặc /einvoice/list

Desktop Mobile
HDDT - desktop HDDT - mobile

Cấu hình kết nối nhà cung cấp

Sửa file appsettings.json (hoặc đặt biến môi trường VDGPOS_EInvoice__*):

"EInvoice": {
  "Provider": "Misa",       // Mock | Misa | Viettel | Vnpt
  "ApiUrl":   "...",
  "Username": "...",
  "Password": "..."
}

8. Báo cáo & xuất file

URL: /reports

Desktop Mobile
Báo cáo - desktop Báo cáo - mobile

Các file có thể xuất:

Liên kết Định dạng Mô tả
/reports/sales.xlsx?from=…&until=… Excel Doanh thu theo ngày
/reports/sales.csv?from=…&until=… CSV Doanh thu theo ngày (dạng CSV)
/reports/inventory.xlsx Excel Tồn kho hiện tại

Trang duyệt thanh toán

URL: /dashboard/payment-review

Desktop Mobile
Duyệt thanh toán - desktop Duyệt thanh toán - mobile

9. Hỗ trợ

URL: /?nav=support hoặc /support

Desktop Mobile
Hỗ trợ - desktop Hỗ trợ - mobile

Phụ lục A — Sơ đồ điều hướng

┌─ /login ──────────► (Admin/Owner) ──► /
│  /login/cashier ──► (Staff)       ──► /pos
│
├─ /  (Dashboard shell, htmx) ─┬─ Doanh thu       /?nav=
│                              ├─ Dòng tiền       /?nav=cashflow
│                              ├─ Đơn hàng        /dashboard/admin/orders
│                              ├─ Khách hàng      /dashboard/admin/customers
│                              ├─ Công nợ         /dashboard/admin/debt
│                              ├─ Phải trả        /dashboard/admin/payable
│                              ├─ Ca làm việc     /?nav=shifts
│                              ├─ Chấm công       /?nav=timeclock
│                              ├─ HDDT            /?nav=einvoice
│                              ├─ Hỗ trợ          /?nav=support
│                              └─ Thiết lập ▾
│                                  ├─ Sản phẩm     /dashboard/admin/products
│                                  ├─ Nhóm SP      /?nav=categories
│                                  ├─ Tồn kho      /dashboard/admin/stock
│                                  ├─ Loyalty      /dashboard/admin/loyalty
│                                  ├─ Nhân viên    /dashboard/admin/users
│                                  └─ VAT / Thuế   /?nav=settings
│
├─ /pos ──────────────────────────► Bán hàng
└─ /pos/queue ───────────────────► Hàng đợi đơn

Phụ lục B — Tự chụp lại ảnh

Khi giao diện thay đổi, chạy lại tập lệnh chụp ảnh:

# Khởi động server ở chế độ headless (không mở cửa sổ kiosk)
VDGPOS_Kiosk__Headless=true dotnet run --project src/VdgPos.Bootstrap -p:NuGetAudit=false

# Trong terminal khác, chạy Playwright:
node docs/manual/capture.mjs

Ảnh sẽ ghi đè vào docs/manual/img/*.png.


Phiên bản tài liệu: 2026-07-17 · Bổ sung Công nợ (phải thu / phải trả) & bán ghi nợ · Tự động chụp giao diện bằng Playwright