PRD: Trải nghiệm Xuất Hóa đơn
| Module | Thuế & Hóa đơn (CORE-10) | PRD ID | PRD-ISS-001 |
| Trạng thái | Planned | Owner | Việt Võ · Phát Nguyễn |
| Ngày | 2026-06-11 | Phiên bản | v0.1 (draft) |
| Packages | @nx/invoice · apps/client · apps/sale-renderer | URD | ISS |
| Epic | BANA-1318 | Khung thời gian | Tháng 7/2026 |
TL;DR
Merchant xuất HĐĐT như một phần của việc bán, không phải việc làm thêm: một thao tác tại POS lúc thanh toán (MTT), một màn hình thấy mọi hóa đơn kèm mã CQT, điều chỉnh/thay thế khi sai sót, và HĐ VAT công ty mang MST người mua. Backend đã gánh phần nặng - increment này là nửa dành cho người dùng.
1. Bối cảnh & Vấn đề
Engine hóa đơn đã xây xong: vòng đời (queue → phát hành → trạng thái), tích hợp VNPAY với thao tác gốc/điều chỉnh/thay thế, định danh thuế/nhóm thuế đều ship ở Phase 1. Cái chưa bao giờ hoàn chỉnh là trải nghiệm: UI xuất tức thì tại POS dừng ở ~80%/đang test, client chưa có bề mặt quản lý hóa đơn trọn vẹn, và hóa đơn công ty không mang được MST người mua (chưa có hồ sơ KH doanh nghiệp cho tới BIZ tháng 7). Merchant sở hữu một engine hóa đơn mà gần như không lái được.
2. Mục tiêu & Loại trừ
Mục tiêu - xuất một-thao-tác tại POS (URD-ISS-001) · danh sách/chi tiết hóa đơn kèm trạng thái + mã CQT (002) · luồng điều chỉnh & thay thế (003) · HĐ VAT công ty mang MST (004) · lỗi nhìn thấy + thử lại được (005) · in/chia sẻ (006) · kiểm chứng kết nối nhà cung cấp (007).
Loại trừ - kê khai/nộp thuế (PRD-DCL-001) · nhà cung cấp ngoài VNPAY · quy tắc xuất theo ngành vượt quá những gì nhóm thuế đã định nghĩa.
3. Thước đo thành công
| Thước đo | Mục tiêu |
|---|---|
| Xuất tại POS | Thu ngân xuất lúc thanh toán bằng một thao tác, merchant thật |
| Xử lý lỗi | Không lỗi câm - mọi hóa đơn lỗi nhìn thấy và thử lại từ màn hình |
4. Persona & Tình huống
Thu ngân (xuất lúc thanh toán, không cần biết thuế) · Chủ quán (soát hóa đơn, sửa sai, phục vụ khách công ty) · Khách công ty (cần HĐ VAT chuẩn mang MST của họ).
5. User Story
- Là thu ngân, tôi hoàn tất thanh toán và xuất hóa đơn bằng một chạm; khách nhận ngay.
- Là chủ quán, khách báo sai tiền - tôi xuất hóa đơn điều chỉnh từ màn chi tiết.
- Là chủ quán, công ty xin HĐ VAT - tôi chọn KH doanh nghiệp và hóa đơn mang MST của họ.
6. Yêu cầu chức năng
Giao URD ISS URD-ISS-001…007 (Must 001-005).
7. Yêu cầu phi chức năng
- Xuất hóa đơn không chặn checkout (async, trạng thái hiển thị); retry idempotent - không bao giờ xuất đôi cho một đơn.
8. UX & Luồng
- POS: thanh toán xong → "Xuất hóa đơn" (hoặc tự động theo cấu hình) → chip trạng thái trên đơn.
- Client: danh sách hóa đơn (lọc trạng thái/kỳ) → chi tiết (số, mã CQT, lịch sử) → thao tác điều chỉnh/thay thế.
- Hóa đơn công ty: chọn KH doanh nghiệp lúc checkout/xuất → MST + tên công ty lên hóa đơn.
9. Dữ liệu & Miền nghiệp vụ
- Không kỳ vọng việc engine mới - tiêu thụ vòng đời (
INV), chế độ phát hành (MOD) và thao tác nhà cung cấp đã ship (gốc/điều chỉnh/thay thế). Mới: các màn hình + bàn giao MST người mua từcustomer/BIZ.
10. Phụ thuộc & Giả định
| Phụ thuộc | Vì sao |
|---|---|
KH doanh nghiệp BIZ (T7, cùng khung) | MST người mua trên hóa đơn công ty |
| Credential nhà cung cấp theo merchant (config đã ship) | Phát hành qua VNPAY |
| Retail chuẩn (E2) | Merchant bán lẻ xuất đúng hành vi thuế |
11. Rủi ro & Câu hỏi mở
- UI POS "~80% đang test" cũ - audit cái đang có trước khi build lại.
- Tự động xuất vs hỏi từng đơn: mặc định theo cấu hình merchant (đề xuất: cấu hình được, mặc định hỏi).
12. Kế hoạch phát hành & Tiêu chí
Tháng 7 (WK27-31), song song BIZ. Ra mắt: AC-ISS-01 pass trên merchant thật - gồm một hóa đơn công ty có MST và một lần phục hồi lỗi.
13. FAQ
- Có xây lại engine hóa đơn không? Không - engine đã ship; đây là bề mặt vận hành cộng liên kết khách-công-ty.
Tham chiếu
URD ISS · PRD-INV-001 · PRD-INV-002 · Giai đoạn 2 - Theo tháng · Epic BANA-1318