UC_Bán Hàng POS
Giới thiệu & tài liệu liên quan
Đặc tả Use Case cho 3 nghiệp vụ chính của module Bán Hàng POS (OW-01). Xem thêm Tổng quan module · SRS · UI.
UC1 — Tạo đơn giỏ hàng chung & thanh toán
| Mục | Nội dung |
|---|---|
| Use Case ID | UC_OW01_CART_001 |
| Use Case Name | Tạo đơn giỏ hàng chung & thanh toán |
| Use Case Description | Thu ngân dựng một đơn duy nhất gộp Đặt sân, FNB, Thuê dụng cụ và Bán dụng cụ vào cùng một giỏ; gắn khách, áp ưu đãi rồi thanh toán một lần. Sau khi thanh toán, hệ thống tạo booking, trừ kho và in hoá đơn. |
| System Under Design | POS Client · Sale Server |
| Primary Actor | Thu ngân |
| Supporting/External Actor | Quản lý ca · Module Đặt sân · Module Kho · Module Khách hàng & CRM |
| Priority | HIGH |
| Trigger | Thu ngân thêm dịch vụ đầu tiên (sân / FNB / dụng cụ) vào giỏ trên màn bán hàng |
| Pre-Condition | Thu ngân đã đăng nhập và đang trong một ca đã mở |
| Post-Condition | Đơn chuyển trạng thái đã thanh toán; booking được tạo, kho được trừ, hoá đơn được in, giỏ làm trống sẵn sàng đơn mới |
Sơ đồ luồng — Basic Flow & ngoại lệ
Basic Flow
Basic Flow
| Bước | Actor | Mô tả hành động |
|---|---|---|
| 1 | Thu ngân | Tại Tab Đặt Sân, chọn slot trống trên lịch và thêm sân vào giỏ |
| 2 | Thu ngân | Chuyển Tab FNB / Thuê / Bán dụng cụ, tap [+] thêm các món vào cùng giỏ |
| 3 | Sale Server | Kiểm tra tồn kho realtime cho FNB/dụng cụ, cộng món vào giỏ chung |
| 4 | Thu ngân | Gắn khách (khách lẻ hoặc tìm member theo SĐT), áp voucher / điểm nếu có |
| 5 | Thu ngân | Nhấn [THANH TOÁN] |
| 6 | Thu ngân | Chọn hình thức (tiền mặt / QR VNPAY / thẻ / hỗn hợp) và xác nhận |
| 7 | Sale Server | Khoá giá, tạo booking CONFIRMED, trừ kho, ghi đơn PAID |
| 8 | POS Client | In hoá đơn, làm trống giỏ, sẵn sàng đơn mới |
Alternative Flow
Alternative Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | AF_4A.1 | 4 | Khách chưa có hồ sơ → Thu ngân tạo khách mới ngay tại quầy bằng SĐT rồi tiếp tục |
| 2 | AF_6A.1 | 6 | Thanh toán hỗn hợp → Thu ngân chia số tiền theo nhiều hình thức cho tới khi đủ tổng đơn |
| 3 | AF_6B.1 | 6 | Thanh toán tiền mặt → hệ thống hiển thị tiền khách đưa và tính tiền thừa |
Exception Flow
Exception Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | EF_2.1 | 2 | Món FNB/dụng cụ hết hàng → hệ thống báo hết hàng và không cho thêm vào giỏ |
| 2 | EF_5.1 | 5 | Giỏ rỗng khi nhấn thanh toán → hệ thống chặn và yêu cầu thêm ít nhất một món |
| 3 | EF_7.1 | 7 | Slot sân vừa bị đặt bởi giao dịch khác → hệ thống báo xung đột và yêu cầu chọn lại slot |
Business Rules
Business Rules
| TT | Mã | Quy tắc nghiệp vụ |
|---|---|---|
| 1 | BR1 | Một đơn gộp được nhiều loại dịch vụ (sân · FNB · thuê · bán) trong cùng một giỏ và thanh toán một lần |
| 2 | BR2 | Chỉ thêm/sửa/xoá món khi đơn còn ở trạng thái nháp; sau thanh toán đơn bị khoá |
| 3 | BR3 | Giá được khoá tại thời điểm thanh toán, không trôi sau đó |
| 4 | BR4 | Booking chỉ được tạo CONFIRMED sau khi đơn thanh toán thành công |
| 5 | BR5 | Kho FNB/dụng cụ chỉ bị trừ sau khi đơn thanh toán thành công |
UC2 — Mở / Kết ca & đối soát tiền mặt
| Mục | Nội dung |
|---|---|
| Use Case ID | UC_OW01_SHIFT_002 |
| Use Case Name | Mở / Kết ca & đối soát tiền mặt |
| Use Case Description | Thu ngân mở ca với quỹ đầu ca trên một thiết bị, bán hàng trong ca, rồi kết ca bằng việc đếm tiền thực tế; hệ thống so tiền kỳ vọng với tiền đếm, ghi chênh lệch và sinh báo cáo ca. |
| System Under Design | POS Client · Sale Server |
| Primary Actor | Thu ngân |
| Supporting/External Actor | Quản lý ca · Chủ sân |
| Priority | HIGH |
| Trigger | Thu ngân nhấn [Mở ca] đầu giờ hoặc [Kết ca] cuối giờ |
| Pre-Condition | Người dùng đã đăng nhập; thiết bị chưa có ca đang mở (khi mở ca) |
| Post-Condition | Ca ở trạng thái đang mở (sau mở ca) hoặc đã đóng kèm báo cáo và chênh lệch (sau kết ca) |
Sơ đồ luồng — Basic Flow & ngoại lệ
Basic Flow
Basic Flow
| Bước | Actor | Mô tả hành động |
|---|---|---|
| 1 | Thu ngân | Nhấn [Mở ca], nhập quỹ đầu ca (tiền mặt khởi điểm) |
| 2 | Sale Server | Tạo ca đang mở, gắn nhân viên & thiết bị, hiển thị badge ca trên header |
| 3 | Thu ngân | Bán hàng trong suốt ca; mọi đơn được gắn vào ca |
| 4 | Thu ngân | Cuối giờ nhấn [Kết ca] |
| 5 | Thu ngân | Đếm và nhập số tiền mặt thực tế trong két |
| 6 | Sale Server | Tính tiền kỳ vọng (quỹ đầu + bán tiền mặt − chi) và so với thực đếm |
| 7 | Sale Server | Ghi chênh lệch, sinh báo cáo ca, đóng ca |
Alternative Flow
Alternative Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | AF_3A.1 | 3 | Nhiều nhân viên cùng tham gia một ca → mỗi đơn gắn đúng nhân viên thao tác |
| 2 | AF_6A.1 | 6 | Chênh lệch khác 0 → hệ thống bắt buộc nhập ghi chú lý do trước khi đóng ca |
| 3 | AF_3B.1 | 3 | Quản lý ca sinh báo cáo tạm thời giữa ca để theo dõi mà không đóng ca |
Exception Flow
Exception Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | EF_1.1 | 1 | Thiết bị đã có ca đang mở → hệ thống chặn mở ca thứ hai, đề nghị tiếp tục ca hiện tại |
| 2 | EF_4.1 | 4 | Còn đơn tạm tính chưa xử lý → hệ thống cảnh báo cần hoàn tất hoặc huỷ trước khi kết ca |
Business Rules
Business Rules
| TT | Mã | Quy tắc nghiệp vụ |
|---|---|---|
| 1 | BR6 | Mỗi thiết bị chỉ có tối đa một ca đang mở tại một thời điểm |
| 2 | BR7 | Quỹ đầu ca bị khoá sau khi ca đã mở |
| 3 | BR8 | Tiền kỳ vọng = quỹ đầu ca + bán tiền mặt − chi; chênh lệch = thực đếm − kỳ vọng |
| 4 | BR9 | Đóng ca với chênh lệch khác 0 bắt buộc nhập ghi chú lý do |
| 5 | BR10 | Mỗi ca chỉ sinh đúng một báo cáo đóng ca cuối cùng |
UC3 — Đơn tạm tính (Park Order)
| Mục | Nội dung |
|---|---|
| Use Case ID | UC_OW01_PARK_003 |
| Use Case Name | Đơn tạm tính (Park Order) |
| Use Case Description | Thu ngân lưu một đơn đang dở ở trạng thái "Chờ thanh toán" để phục vụ khách khác, sau đó mở lại đơn để khôi phục giỏ đầy đủ và hoàn tất thanh toán. |
| System Under Design | POS Client · Sale Server |
| Primary Actor | Thu ngân |
| Supporting/External Actor | Quản lý ca |
| Priority | MEDIUM |
| Trigger | Thu ngân nhấn [Tạm tính] trên một đơn đang dở |
| Pre-Condition | Giỏ đang có ít nhất một món; Thu ngân đang trong một ca đã mở |
| Post-Condition | Đơn được lưu trạng thái "Chờ thanh toán"; giỏ làm trống để phục vụ khách khác |
Sơ đồ luồng — Basic Flow & ngoại lệ
Basic Flow
Basic Flow
| Bước | Actor | Mô tả hành động |
|---|---|---|
| 1 | Thu ngân | Đang dở đơn khách A, nhấn [Tạm tính] |
| 2 | Sale Server | Lưu đơn ở trạng thái "Chờ thanh toán", làm trống giỏ |
| 3 | Thu ngân | Phục vụ khách B trên giỏ mới |
| 4 | Thu ngân | Vào [Đơn hàng] → tab Tạm tính → nhấn [Mở lại đơn] A |
| 5 | Sale Server | Khôi phục giỏ đầy đủ (sân · FNB · khách hàng đã gắn) |
| 6 | Thu ngân | Thêm / bớt món rồi nhấn [THANH TOÁN] hoàn tất |
Alternative Flow
Alternative Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | AF_4A.1 | 4 | Thu ngân huỷ đơn tạm tính không còn cần → đơn chuyển trạng thái đã huỷ kèm lý do |
| 2 | AF_5A.1 | 5 | Mở lại nhiều đơn tạm tính khác nhau trong cùng ca để xử lý lần lượt |
Exception Flow
Exception Flow
| TT | Mã | Liên quan bước | Mô tả |
|---|---|---|---|
| 1 | EF_1.1 | 1 | Giỏ rỗng khi nhấn tạm tính → hệ thống không cho tạm tính đơn rỗng |
| 2 | EF_5.1 | 5 | Slot sân trong đơn tạm tính đã bị đặt bởi đơn khác → hệ thống cảnh báo xung đột, yêu cầu chọn lại sân |
Business Rules
Business Rules
| TT | Mã | Quy tắc nghiệp vụ |
|---|---|---|
| 1 | BR11 | Đơn tạm tính giữ nguyên toàn bộ món, khách và ưu đãi cho tới khi mở lại |
| 2 | BR12 | Đơn tạm tính thuộc về ca tạo ra nó; cần được hoàn tất hoặc huỷ trước khi kết ca |
| 3 | BR13 | Slot sân trong đơn tạm tính chỉ được xác nhận khi đơn thanh toán, nên có thể bị đơn khác giành trước |
Non-Functional Requirements
Non-Functional Requirements
| TT | Loại | Yêu cầu |
|---|---|---|
| 1 | Khả dụng | Thao tác thêm món, thanh toán, mở/kết ca phản hồi tức thì; Court Status Bar và tồn kho cập nhật realtime |
| 2 | Phân quyền | Thao tác giới hạn theo vai trò (Thu ngân / Quản lý ca / Chủ sân); override đối soát ca chỉ dành cho Chủ sân |
| 3 | Truy vết | Mọi đơn được gắn vào ca và nhân viên thao tác; mở/kết ca và chênh lệch đều được ghi nhật ký |
| 4 | Toàn vẹn | Giá khoá tại thanh toán; booking và trừ kho chỉ xảy ra sau khi thanh toán thành công |