SRS_Bán Hàng POS
Giới thiệu & tài liệu liên quan
Đặc tả yêu cầu phần mềm cho module Bán Hàng POS (OW-01). Xem thêm Tổng quan module · UC · UI.
1/ Luồng Sequence
2/ Luồng di chuyển màn hình
3/ Đặc tả chi tiết theo màn hình
MH1: Màn bán hàng (giỏ chung)
Mô tả màn hình: Màn chính của POS gồm 4 tab dịch vụ (Đặt Sân / FNB / Thuê dụng cụ / Bán dụng cụ), giỏ hàng chung bên phải, Court Status Bar trạng thái sân realtime và header hiển thị badge ca.
Sự kiện 1 — Thêm món vào giỏ chung
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Chọn tab dịch vụ, tap [+] thêm FNB / thuê / bán dụng cụ |
| 2 | Sale Server | Kiểm tra tồn kho realtime |
| 3 | Sale Server | Hợp lệ: Cộng món vào giỏ chung, phân nhóm theo loại dịch vụ |
Không hợp lệ — Sự kiện 1
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Món hết hàng | "Sản phẩm đã hết hàng." | Trên thẻ món · cảnh báo | Không thêm vào giỏ, mờ nút [+] |
| 2 | Chưa mở ca | "Vui lòng mở ca trước khi bán hàng." | Toàn màn hình · cảnh báo | Chặn thao tác, mở MH4 |
Sự kiện 2 — Gắn khách & áp ưu đãi
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Tìm member theo SĐT hoặc tạo khách mới tại quầy |
| 2 | Thu ngân | Áp voucher / điểm cho đơn |
| 3 | Sale Server | Hợp lệ: Cập nhật tổng đơn sau ưu đãi |
Không hợp lệ — Sự kiện 2
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Voucher hết hạn / không đủ điều kiện | "Voucher không áp dụng được cho đơn này." | Dưới ô voucher · lỗi | Không áp ưu đãi |
| 2 | Điểm không đủ | "Số điểm không đủ để quy đổi." | Dưới ô điểm · lỗi | Giữ nguyên tổng đơn |
MH2: Tab Đặt Sân (lịch + form)
Mô tả màn hình: Lịch Gantt theo sân/khung giờ ngay trong POS; click slot trống mở form đặt (sân, khung giờ, ngày), hỗ trợ đặt theo ngày, đặt cố định và đặt sự kiện.
Sự kiện 1 — Chọn slot & thêm sân vào giỏ
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Click slot trống trên Gantt (ví dụ Sân 2 · 15-17h) |
| 2 | Sale Server | Lấy giá theo loại sân / khung giờ / ngày |
| 3 | Thu ngân | Xác nhận, thêm sân vào giỏ chung (có thể [+ Thêm sân]) |
Không hợp lệ — Sự kiện 1
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Slot đã bị đặt / sân đang bảo trì | "Khung giờ này không còn trống." | Trên slot · cảnh báo | Không cho chọn, đề nghị slot khác |
| 2 | Khung giờ đặt cố định trùng booking khác | "Có xung đột lịch trong khoảng đặt cố định." | Hộp thoại · cảnh báo | Liệt kê slot xung đột, cho chọn lại |
MH3: Modal thanh toán
Mô tả màn hình: Hộp thoại tổng kết đơn và chọn hình thức thanh toán: tiền mặt (tính tiền thừa), QR VNPAY, thẻ, hỗn hợp; hỗ trợ chia hoá đơn.
Sự kiện 1 — Chọn hình thức & xác nhận thanh toán
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Chọn hình thức thanh toán, nhập số tiền (tiền mặt / hỗn hợp) |
| 2 | Thu ngân | Xác nhận thanh toán |
| 3 | Sale Server | Hợp lệ: Khoá giá, ghi đơn PAID, tạo booking, trừ kho, in hoá đơn |
Không hợp lệ — Sự kiện 1
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Giỏ rỗng | "Giỏ hàng trống, không thể thanh toán." | Hộp thoại · lỗi | Chặn thanh toán |
| 2 | Tiền nhận chưa đủ tổng đơn | "Số tiền thanh toán chưa đủ." | Dưới ô số tiền · lỗi | Chặn xác nhận |
| 3 | Slot sân vừa bị giành trước | "Sân vừa được đặt bởi giao dịch khác." | Hộp thoại · cảnh báo | Yêu cầu chọn lại slot trước khi thanh toán |
MH4: Mở / Kết ca & đối soát
Mô tả màn hình: Màn mở ca (nhập quỹ đầu ca) và kết ca (đếm tiền thực tế, so với tiền kỳ vọng, hiển thị chênh lệch và ô ghi chú lý do); kèm báo cáo ca.
Sự kiện 1 — Mở ca
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Nhập quỹ đầu ca, nhấn [Mở ca] |
| 2 | Sale Server | Hợp lệ: Tạo ca đang mở, gắn nhân viên & thiết bị, hiển thị badge ca |
Không hợp lệ — Sự kiện 1
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Thiết bị đã có ca đang mở | "Thiết bị đang có ca mở, không thể mở ca mới." | Hộp thoại · cảnh báo | Chặn mở ca, đề nghị tiếp tục ca hiện tại |
Sự kiện 2 — Kết ca & đối soát
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Nhấn [Kết ca], đếm và nhập tiền mặt thực tế |
| 2 | Sale Server | Tính tiền kỳ vọng và chênh lệch |
| 3 | Sale Server | Hợp lệ: Sinh báo cáo ca, đóng ca |
Không hợp lệ — Sự kiện 2
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Chênh lệch khác 0, chưa ghi chú | "Vui lòng nhập lý do chênh lệch trước khi đóng ca." | Dưới ô ghi chú · lỗi | Chặn đóng ca |
| 2 | Còn đơn tạm tính chưa xử lý | "Còn N đơn tạm tính, hãy hoàn tất hoặc huỷ." | Hộp thoại · cảnh báo | Chặn kết ca, liệt kê đơn tạm tính |
MH5: Danh sách đơn & Tạm tính
Mô tả màn hình: Danh sách đơn của ca với tab Tạm tính ("Chờ thanh toán"); cho mở lại đơn tạm tính để khôi phục giỏ, hoặc in lại hoá đơn đã thanh toán.
Sự kiện 1 — Mở lại đơn tạm tính
| STT | Tác nhân | Mô tả |
|---|---|---|
| 1 | Thu ngân | Vào tab Tạm tính, nhấn [Mở lại đơn] |
| 2 | Sale Server | Hợp lệ: Khôi phục giỏ đầy đủ (sân · FNB · khách hàng) về MH1 |
Không hợp lệ — Sự kiện 1
| STT | Trường hợp | Thông báo | Vị trí · Loại | Xử lý |
|---|---|---|---|---|
| 1 | Slot sân trong đơn đã bị giành | "Sân trong đơn đã bị đặt, vui lòng chọn lại." | Trên dòng sân · cảnh báo | Giữ giỏ, đánh dấu sân cần chọn lại |
| 2 | Đang dở một đơn khác trong giỏ | "Hãy tạm tính hoặc hoàn tất đơn hiện tại trước." | Hộp thoại · cảnh báo | Chặn mở lại |
4/ Trường hợp đặc biệt
Case đặc biệt cần xử lý
- Case: Đa nhân viên trong một ca. 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 để báo cáo ca phản ánh chính xác.
- Case: Thanh toán hỗn hợp. Một đơn chia tiền theo nhiều hình thức (tiền mặt + QR + thẻ) cho tới khi đủ tổng đơn; tiền mặt được tính tiền thừa.
- Case: In lại hoá đơn. Đơn đã thanh toán có thể in lại receipt từ danh sách đơn của ca mà không thay đổi trạng thái.
- Case: Booking & kho không hồi tố. Booking chỉ CONFIRMED và kho chỉ bị trừ sau thanh toán thành công; huỷ đơn sau đó tuân theo chính sách hoàn/huỷ riêng.