Skip to content

PRD: Lịch sử đơn và thanh toán tại POS

ModuleBán hàngPRD IDPRD-SLD-001
Trạng tháiSẵn sàng devFEATSLD
EpicBANA-1326PlaneBANA-1749
Ngày2026-06-26Phiên bảnv1.0
Gói@nx/saleURDSLD
SurfaceSale · POS
Phụ tráchPhát Nguyễn

TL;DR

Tính năng Lịch sử đơn và thanh toán tại POS cho phép thu ngân và quản lý xem lại danh sách các đơn hàng và thông tin thanh toán ngay tại trang sale (POS), không cần chuyển sang trang client admin. Bằng cách cung cấp danh sách đơn hàng kèm bộ lọc, tìm kiếm và xem chi tiết thanh toán, tính năng này giúp tra soát giao dịch nhanh chóng và xử lý các tình huống thực tế tại quầy thu ngân.


1. Bối cảnh & Vấn đề

Hiện tại, khi thu ngân hay quản lý tại quầy POS cần tra soát lại một đơn hàng hoặc kiểm tra thông tin thanh toán vừa thực hiện (ví dụ: "Khách vừa thanh toán đơn nào? Đơn đó đã được ghi nhận chưa?"), họ phải chuyển sang trang client admin - tức là thoát khỏi luồng bán hàng hiện tại.

Điều này gián đoạn trải nghiệm bán hàng, đặc biệt trong giờ cao điểm, và làm chậm khả năng xử lý khiếu nại tức thì của khách hàng tại quầy. Chúng ta cần một màn hình lịch sử đơn và thanh toán ngay trong trang sale (POS) để thu ngân và quản lý có thể tra soát mà không cần rời khỏi luồng bán hàng.


2. Mục tiêu & Không thuộc mục tiêu

Mục tiêu

  • Cung cấp danh sách các đơn hàng đã thực hiện tại trang sale (POS), bao gồm trạng thái đơn và thông tin thanh toán.

  • Cung cấp bộ lọc theo thời gian, nhân viên, và phương thức thanh toán để tra soát nhanh.

  • Cho phép xem chi tiết từng đơn hàng và thông tin thanh toán tương ứng ngay trong trang sale mà không cần chuyển sang client admin.

  • Hỗ trợ tìm kiếm đơn theo mã đơn hoặc thông tin khách hàng.

Không thuộc mục tiêu

  • Không bao gồm tính năng chỉnh sửa thông tin đơn hàng hay hoàn tiền trực tiếp trên giao diện này.

  • Không phải là màn hình báo cáo doanh thu tổng hợp - đó là chức năng của module Báo cáo (Reports).


3. Chỉ số Thành công

Chỉ sốMục tiêu / Tín hiệu thành công
Độ chính xác dữ liệuDanh sách đơn và thông tin thanh toán hiển thị khớp 100% với dữ liệu thực tế của ca làm việc.
Tốc độ tra soátNgười dùng có thể tìm và xem chi tiết một đơn bất kỳ trong vòng dưới 10 giây kể từ khi mở tab.

4. Chân dung & Tình huống

Chân dung người dùng

  • Cashier / Thu ngân: Cần tra soát lại đơn hàng vừa tạo hoặc kiểm tra trạng thái thanh toán của một đơn cụ thể ngay tại quầy POS mà không cần thoát khỏi luồng bán hàng.
  • Operator / Merchant Manager: Muốn xem lại danh sách đơn hàng trong ca làm việc để kiểm tra hoặc giải quyết khiếu nại của khách hàng ngay tại POS.

Tình huống sử dụng chính

Core scenario: Thu ngân vừa nhập một đơn hàng nhưng máy in hóa đơn bị lỗi. Khách hàng hỏi về tổng tiền. Thu ngân mở tab Lịch sử đơn ngay trong trang sale (POS), tìm đơn vừa tạo theo thời gian, xem chi tiết thanh toán và thông báo cho khách - tất cả mà không cần chuyển sang trang client admin.


5. User Story

  • là một thu ngân, tôi muốn xem lại danh sách các đơn hàng đã tạo trong ca làm việc ngay tại trang sale (POS), để tôi có thể tra soát giao dịch và trả lời khách hàng mà không cần thoát khỏi luồng bán hàng.
  • là một thu ngân, tôi muốn xem chi tiết từng đơn hàng bao gồm thông tin thanh toán, để tôi có thể giải quyết khiếu nại của khách hàng ngay tại quầy.
  • là một thu ngân, tôi muốn lọc danh sách đơn theo thời gian, nhân viên và phương thức thanh toán, để tôi có thể kiểm tra nhanh tình hình bán hàng tại POS trong ca.

6. Yêu cầu Chức năng

#Yêu cầuURD RefP
FR-1Hiển thị danh sách các đơn hàng đã tạo tại POS dưới dạng bảng, được truy cập ngay từ trang sale (POS) mà không cần chuyển sang client admin. Chỉ hiển thị các đơn có trạng thái COMPLETED, PARTIAL, hoặc DRAFT; mặc định lọc ca làm việc hiện tại.URD-SLD-001M
FR-2Hiển thị thông tin tóm tắt của mỗi đơn hàng: Mã đơn, Thời gian tạo, Khách hàng, Tổng tiền, Phương thức thanh toán, Trạng thái đơn, Trạng thái thanh toán và Người tạo đơn.URD-SLD-002M
FR-3Cung cấp bộ lọc theo: Khoảng thời gian (từ ngày - đến ngày), Phương thức thanh toán, Trạng thái đơn hàng, và Nhân viên bán.URD-SLD-003M
FR-4Tìm kiếm đơn hàng theo: Mã đơn hàng, hoặc Tên/SĐT khách hàng.URD-SLD-004M
FR-5Tổng hợp nhanh ở đầu trang dựa trên bộ lọc hiện tại: Tổng số đơn, Tổng doanh thu và Tổng tiền đã thu.URD-SLD-005S
FR-6Nhấp vào một đơn hàng trong danh sách để mở drawer/sheet xem chi tiết đơn hàng và thông tin thanh toán đầy đủ.URD-SLD-006M
FR-7Cho phép in lại hóa đơn nhiệt (thermal receipt) của đơn hàng đã chọn từ drawer chi tiết.URD-SLD-007S

7. Yêu cầu Phi chức năng

  • Tốc độ tải danh sách: Danh sách đơn trong ca hiện tại phải hiển thị trong dưới 2 giây - người dùng đang đứng ở quầy, không thể chờ lâu.
  • Tốc độ mở drawer: Drawer chi tiết đơn phải hiển thị đầy đủ trong dưới 1 giây sau khi click.
  • Dữ liệu real-time: Đơn vừa tạo phải xuất hiện ngay trong danh sách khi người dùng mở tab hoặc làm mới - không trễ so với thực tế ca.

8. UX & Luồng

Luồng sử dụng

  1. Người dùng truy cập tab Lịch sử đơn trong trang Sale (POS).
  2. Danh sách các đơn hàng hiển thị dưới dạng tóm tắt - mỗi dòng là một đơn với thông tin cơ bản: mã đơn, thời gian, khách hàng, tổng tiền, phương thức thanh toán, trạng thái.
  3. Người dùng có thể lọc hoặc tìm kiếm để thu hẹp danh sách.
  4. Click vào một đơn bất kỳ → mở drawer chi tiết hiển thị đầy đủ thông tin đơn hàng và thanh toán.
  5. Từ drawer, người dùng có thể in lại hóa đơn nhiệt hoặc đóng để quay về danh sách.

9. Dữ liệu & Miền nghiệp vụ

Các thực thể liên quan

Thực thểVai trò
SaleOrderThực thể chính - mỗi dòng trong bảng lịch sử tương ứng với một đơn hàng. Cung cấp Mã đơn, Thời gian tạo, Trạng thái, Tổng tiền và liên kết đến khách hàng, nhân viên.
PaymentThông tin thanh toán của đơn - Phương thức, Số tiền, Thời gian thanh toán và Trạng thái. Một đơn có thể có nhiều bản ghi Payment (thanh toán nhiều lần).
SaleOrderItemDùng trong Drawer chi tiết - liệt kê các sản phẩm đã đặt trong đơn. Không hiển thị ở màn hình danh sách.

Quan hệ thực thể

[SaleOrder] ──(1:N)──> [Payment]

     └──(1:N)──> [SaleOrderItem]  (chỉ dùng trong Detail View)

10. Phụ thuộc & Giả định

Phụ thuộc

  • Sale/Order Module: Cung cấp dữ liệu SaleOrder, SaleOrderItemPayment.
  • User/Auth Module: Xác thực token phiên đăng nhập và cung cấp thông tin Salesperson để hiển thị và lọc.
  • Printer Service: Dịch vụ in nhiệt cục bộ phải khả dụng để hỗ trợ in lại hóa đơn từ Drawer chi tiết.

Giả định

  • Mỗi đơn hàng đã có ít nhất một bản ghi Payment nếu đã thanh toán; đơn chưa thanh toán có trạng thái Payment là PENDING hoặc không có bản ghi.
  • Trang Sale (POS) duy trì phiên đăng nhập riêng, không chia sẻ session với trang client admin.

11. Rủi ro & Câu hỏi mở

RISK / QUESTIONMITIGATION / STATUS
Hiệu năng với ca dài / nhiều đơnRủi ro: Ca làm việc kéo dài hoặc merchant bán lượng lớn có thể có hàng trăm đơn - tải chậm ảnh hưởng đến trải nghiệm tại quầy.
Giải pháp: Áp dụng server-side pagination, giới hạn mặc định 20 đơn/trang; index trường created_atmerchant_id.
Kết nối máy in không ổn địnhRủi ro: Tính năng in lại hóa đơn nhiệt phụ thuộc vào kết nối cục bộ; nếu máy in offline thì tính năng này không dùng được.
Giải pháp: Hiển thị thông báo lỗi rõ ràng; tính năng in là Should - danh sách đơn và chi tiết vẫn hoạt động độc lập.
Đơn hàng bị hoàn tiền có hiển thị không?Câu hỏi mở: Đơn đã Completed nhưng sau đó bị hoàn tiền toàn bộ - có hiển thị trong danh sách không?
Status: Cần confirm với team nghiệp vụ.

12. Kế hoạch phát hành & Tiêu chí

ASPECTPLAN
PhaseP2
RolloutÁp dụng cho tất cả Merchants. Không cần cờ tính năng.
Launch criteriaDanh sách đơn hiển thị đúng và khớp với dữ liệu thực tế ca làm việc. Drawer chi tiết mở đúng thông tin đơn và thanh toán. Bắt buộc vượt qua 2 Acceptance Criteria (AC-SLD-01 và AC-SLD-02) trong URD.

13. FAQ

Q: Tại sao không dùng trang Danh sách Đơn hàng trên client admin thay vì làm tính năng này trên trang sale? A: Trang client admin yêu cầu người dùng thoát khỏi luồng bán hàng, đăng nhập vào một giao diện khác và điều hướng qua nhiều bước - không phù hợp với tình huống cần tra soát nhanh tại quầy thu ngân. Tính năng này được nhúng trực tiếp vào trang sale (POS) để thu ngân có thể kiểm tra lịch sử đơn và thanh toán mà không gián đoạn công việc bán hàng.

Q: Đơn hàng đang là DRAFT có hiển thị trong danh sách không? A: Có. Tính năng này dành cho tra soát tại quầy POS, nên DRAFT cũng được hiển thị để thu ngân có thể theo dõi các đơn đang xử lý. Khác với báo cáo doanh thu (chỉ tính COMPLETED/PARTIAL), màn hình này phục vụ mục đích vận hành thực tế.


Tham chiếu

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.