Skip to content

PRD: Báo cáo ca (X/Z)

ModuleBáo cáoPRD IDPRD-SHF-001
Trạng tháiSẵn sàng devFEATSHF · BANA-1440
EpicPlaneBANA-1556
Ngày2026-04-22Phiên bảnv0.1
Gói@nx/saleURDSHF
SurfaceSale · POSClient · Chủ/QL
Phụ tráchPhát Nguyễn

TL;DR

Đối soát ngăn kéo tiền mặt ngay tại quầy: báo cáo X cho snapshot giữa ca lặp lại được, báo cáo Z cho con số đóng ca cuối cùng đã khóa. Mỗi báo cáo gộp phần đối soát tiền mặt (quỹ đầu ca, doanh thu tiền mặt, thu/chi tiền mặt, dự kiến so với thực tế, chênh lệch) với tổng hợp doanh số - để mỗi ca đóng trên một con số kiểm chứng được, không phải phỏng đoán.

1. Context & Problem

Thu ngân POS làm việc theo ca: ca được mở, một hoặc nhiều thu ngân cùng vận hành, rồi đóng lại. Hiện một ca theo dõi biến động tiền mặt nhưng không tạo ra báo cáo nào - nên không thể xem tổng của ca hay đối soát ngăn kéo ngay tại quầy. Thu ngân không thấy tiền mặt dự kiến so với thực tế, không kéo được bản tóm tắt giữa ca, không có snapshot đã khóa để bàn giao khi đóng ca. Bàn giao ca phải đếm tay, còn chủ merchant không có bản ghi kiểm toán được về số tiền mỗi ca thu vào - điểm nghẽn cho vận hành minh bạch tiền mặt ở quy mô HKD/SME mà BANA hướng tới.

Phần tăng trưởng này giao hai báo cáo thu ngân cần cho một ca - báo cáo X tạm thời và báo cáo Z đóng ca - hậu thuẫn bởi một snapshot đóng ca đã khóa, dựng trên vòng đời ca và cơ chế theo dõi biến động tiền mặt sẵn có.

2. Goals & Non-Goals

Goals

  • Một báo cáo X (tạm thời): snapshot trong ca trực tiếp lấy từ ca đang mở, lặp lại được bao nhiêu lần tùy ý.
  • Một báo cáo Z (đóng ca): báo cáo đóng ca cuối cùng, đọc một lần duy nhất cho mỗi ca và được hậu thuẫn bởi một snapshot đóng ca đã khóa.
  • Đối soát tiền mặt: quỹ đầu ca, doanh thu tiền mặt, thu/chi tiền mặt, tiền mặt dự kiến so với thực tế đã đếm, và chênh lệch, kèm một lần kiểm lại tiền mặt đã đếm được chốt khi đóng ca.
  • Một bản tổng hợp doanh số trên báo cáo: tổng, chiết khấu, thuế, thực thu, và số lượng đơn.
  • Phân tách theo merchant + sale channel và liệt kê ca có phân trang.

Non-Goals

  • Báo cáo doanh số ngày / sản phẩm / danh mục - thuộc về feature SLS (URD-SLS).
  • Lãi lỗ, định giá kho, phân tích khách hàng, xuất file, và báo cáo theo lịch - ADV, Planned (URD-ADV).
  • Phân rã theo phương thức thanh toán và theo danh mục trên báo cáo ca (mức Should URD-SHF-005..006).
  • Bước xác thực PIN khi truy cập báo cáo.

3. Success Metrics

MetricMục tiêu / tín hiệu
Mức phủ đối soát100% ca đã đóng tạo ra đúng một báo cáo Z
Độ chính xác tiền mặtChênh lệch = tiền mặt đã đếm − (quỹ đầu ca + doanh thu tiền mặt − chi tiền mặt); hiển thị ở mỗi lần đóng ca
Tính dùng được giữa caBáo cáo X lặp lại được giữa ca và không làm thay đổi ca
Tính đúng của phân táchKhông trả về con số xuyên merchant trên bất kỳ báo cáo nào

4. Personas & Use Cases

PersonaMục tiêu trong feature này
Thu ngânKéo báo cáo X giữa ca; đóng ca để tạo báo cáo Z với phần đối soát tiền mặt đã đếm
Quản lýXem lại báo cáo Z của bất kỳ ca nào thuộc merchant của mình
Chủ merchantXem đối soát ca trên các merchant của mình

Kịch bản chính: mở một ca → các thu ngân khác có thể tham gia khi ca đang chạy → kéo báo cáo X giữa ca (lặp lại được) → khi đóng ca, đếm tiền mặt thực tế → hệ thống tính dự kiến so với thực tế và khóa một snapshot báo cáo Z, một báo cáo cho mỗi ca.

5. User Stories

  • Là một thu ngân, tôi muốn kéo báo cáo X từ ca đang mở của mình, để kiểm tra tổng tiền mặt và doanh số tạm thời mà không phải đóng ca.
  • Là một thu ngân, tôi muốn báo cáo X lặp lại được, để kiểm tra lại tổng số khi ca diễn ra.
  • Là một thu ngân, tôi muốn đóng ca với số đếm tiền mặt kiểm lại, để báo cáo Z hiển thị dự kiến so với thực tế và chênh lệch.
  • Là một quản lý, tôi muốn đúng một báo cáo Z đã khóa cho mỗi ca, để con số đóng ca không bị trôi.
  • Là một chủ merchant, tôi muốn báo cáo ca được phân tách theo merchant của mình, để không lẫn con số của merchant khác.

6. Functional Requirements

#Yêu cầuURD ref
FR-1Báo cáo X (tạm thời): yêu cầu một snapshot trực tiếp của ca đang mở; lặp lại được, không làm thay đổi caURD-SHF-001
FR-2Báo cáo Z (đóng ca): báo cáo đóng ca tổng hợp, đọc một lần duy nhất cho mỗi ca, được hậu thuẫn bởi một snapshot đóng ca đã khóaURD-SHF-002
FR-3Đối soát tiền mặt: quỹ đầu ca, doanh thu tiền mặt, thu/chi tiền mặt, tiền mặt dự kiến so với thực tế đã đếm, chênh lệch, cộng một lần kiểm lại tiền mặt đã đếm được chốt khi đóng caURD-SHF-003
FR-4Bản tổng hợp doanh số trên báo cáo: tổng, chiết khấu, thuế, thực thu, số lượng đơnURD-SHF-004
FR-5Báo cáo phân tách theo merchant và sale channel; liệt kê ca có phân trang và bộ lọcURD-SHF-001..002
FR-6Chỉ người dùng được phân quyền (quyền đọc trên báo cáo ca) mới mở được hai báo cáoURD-SHF-001..002

Toàn văn yêu cầu và tiêu chí nghiệm thu nằm trong URD Báo cáo. PRD này tham chiếu tới chúng thay vì lặp lại. Phân rã theo phương thức thanh toán và theo danh mục (URD-SHF-005..006, Should) nằm ngoài phần tăng trưởng này - SHF vẫn ở trạng thái In-progress.

7. Non-Functional Requirements

MảngYêu cầu
Toàn vẹn dữ liệuBáo cáo Z là một snapshot kết thúc, một cho mỗi ca; một khi đã khóa khi đóng ca thì không đổi
Chỉ đọcBáo cáo tổng hợp trên các biến động tiền mặt và đơn đã hoàn tất; báo cáo X không bao giờ làm thay đổi ca
Tenancy & authzMọi thao tác giới hạn trong merchant của chính người dùng và sale channel; hai báo cáo chỉ mở được bởi người dùng có quyền đọc trên báo cáo ca
Độ chính xácTiền mặt và số tiền được theo dõi với độ chính xác 4 chữ số thập phân
Hiệu năng / quy môLiệt kê ca có phân trang; tổng hợp báo cáo chạy trên các biến động của một ca duy nhất
i18nNhãn/trạng thái hướng người dùng song ngữ (Anh / Việt)

8. UX & Flows

Màn hình chính: màn hình ca, hành động báo cáo X, kiểm lại tiền mặt khi đóng ca, và màn hình báo cáo Z.

9. Data & Domain

Khái niệmVai trò
CaMột phiên làm việc do thu ngân mở và đóng, có thể được một hoặc nhiều thu ngân tham gia khi ca đang chạy - vòng đời (mở/đóng), theo dõi biến động tiền mặt, kiểm lại tiền mặt đã đếm khi đóng ca
Snapshot đóng ca đã khóaCon số đóng ca (Z) cuối cùng được chốt khi đóng ca - đối soát tiền mặt + tổng hợp doanh số, một cho mỗi ca
Các biến động tiền mặtThu/chi tiền mặt và doanh thu tiền mặt được báo cáo tổng hợp lại để cấp dữ liệu cho phần đối soát

Chỉ mang tính khái niệm - chi tiết đầy đủ và bất biến nằm trong domain model của ca.

10. Dependencies & Assumptions

Phụ thuộc vào

  • Vòng đời ca & theo dõi biến động tiền mặt - báo cáo X/Z tổng hợp một ca đang mở hoặc vừa đóng.
  • Đơn đã hoàn tất (Đơn hàng) - bản tổng hợp doanh số tổng hợp các đơn đã hoàn tất trong ca.
  • Biến động tiền mặt / thanh toán - thu/chi tiền mặt và doanh thu tiền mặt cấp dữ liệu cho phần đối soát.
  • Nơi lưu dữ liệu ca - chứa ca và snapshot đóng ca đã khóa của nó.

Giả định

  • Thu ngân mở một ca với quỹ đầu ca trước khi giao dịch.
  • Mỗi ca đóng đúng một lần, tạo ra đúng một báo cáo Z.

11. Risks & Open Questions

Rủi ro / câu hỏiGiảm thiểu / trạng thái
Đối soát tiền mặt lệch với sổ cái financeBáo cáo tổng hợp các biến động tiền mặt trực tiếp và sở hữu góc nhìn đối soát của ca, nên báo cáo đóng ca - chứ không phải sổ cái - là nguồn sự thật cho ca
Báo cáo Z trùng cho một caBáo cáo Z được đọc một lần duy nhất cho mỗi ca dựa trên một snapshot đã khóa; mang tính kết thúc theo thiết kế
Một số merchant kỳ vọng phân rã theo phương thức thanh toán / danh mụcNằm ngoài phần tăng trưởng này (URD-SHF-005..006); SHF vẫn In-progress cho tới khi giao
Bước xác thực PIN khi truy cập báo cáoNằm ngoài phạm vi ở đây; theo dõi riêng

12. Release Plan & Launch Criteria

Khía cạnhKế hoạch
PhaseP2 - xem danh mục feature trong URD
RolloutTất cả merchant; không có feature flag
MigrationNăng lực mới, không có chuyển đổi dữ liệu ảnh hưởng tới merchant; báo cáo đóng ca sở hữu góc nhìn đối soát của ca
Tiêu chí ra mắtBáo cáo X lặp lại được trên ca đang mở; đúng một báo cáo Z cho mỗi ca đã đóng; đối soát tiền mặt và tổng hợp doanh số được kiểm chứng so với tiền mặt đã đếm
Giám sátSố báo cáo Z trên mỗi ca đã đóng (kỳ vọng 1:1), phân bố chênh lệch đối soát, tỉ lệ lỗi yêu cầu báo cáo

13. FAQ

Báo cáo X và báo cáo Z khác nhau thế nào? Báo cáo X là snapshot giữa ca tạm thời, lặp lại được, kéo khi ca còn mở; báo cáo Z là báo cáo đóng ca cuối cùng, tạo một lần cho mỗi ca và đã khóa.

Kéo báo cáo X có thay đổi gì không? Không - nó chỉ đọc và lặp lại được; không làm thay đổi ca hay bất kỳ bản ghi tiền mặt nào.

Một ca có thể có nhiều hơn một báo cáo Z không? Không - đúng một báo cáo Z được tạo cho mỗi ca khi đóng ca, được hậu thuẫn bởi một snapshot đã khóa.

Báo cáo giữ nhất quán với sổ cái bằng cách nào? Báo cáo tổng hợp các biến động tiền mặt trực tiếp và sở hữu góc nhìn đối soát của ca, nên báo cáo đóng ca là nguồn sự thật cho vị thế tiền mặt của ca.

Báo cáo ca có gồm phân rã theo phương thức thanh toán hay danh mục không? Không trong phần tăng trưởng này - đó là mức Should (URD-SHF-005..006) và vẫn còn để mở.

References

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