408 lines
9.8 KiB
Markdown
408 lines
9.8 KiB
Markdown
# POS Workflow Documentation | Tài liệu Quy trình POS
|
||
|
||
## Mục lục
|
||
1. [Tổng quan](#1-tổng-quan)
|
||
2. [Café - Quick Service](#2-café---quick-service)
|
||
3. [Restaurant - Full Service](#3-restaurant---full-service)
|
||
4. [Karaoke - Time-Based](#4-karaoke---time-based)
|
||
5. [Spa - Appointment Service](#5-spa---appointment-service)
|
||
6. [Payment Flow](#6-payment-flow)
|
||
|
||
---
|
||
|
||
## 1. Tổng Quan
|
||
|
||
### So sánh 4 mô hình
|
||
|
||
| Yếu tố | Café | Restaurant | Karaoke | Spa |
|
||
|--------|------|------------|---------|-----|
|
||
| **Thanh toán** | Trước | Sau | Sau | Sau |
|
||
| **Thời gian** | 5-10 phút | 30-90 phút | 1-4 giờ | 30-120 phút |
|
||
| **Đối tượng** | Counter | Bàn | Phòng | Khách + NV |
|
||
| **Tính năng đặc biệt** | Queue | Kitchen | Timer | Appointment |
|
||
| **Loyalty** | ✅ Optional | ✅ Optional | ✅ Optional | ✅ Required |
|
||
|
||
---
|
||
|
||
## 2. Café - Quick Service
|
||
|
||
### Workflow Diagram
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph CUSTOMER["👤 KHÁCH HÀNG"]
|
||
A1[Đến quầy]
|
||
end
|
||
|
||
subgraph ORDER["📝 ORDER"]
|
||
B1[Xem menu]
|
||
B2[Chọn món]
|
||
B3[Tùy chỉnh<br/>Size/Topping]
|
||
end
|
||
|
||
subgraph PAYMENT["💳 THANH TOÁN"]
|
||
C1{Phương thức?}
|
||
C2[Tiền mặt]
|
||
C3[QR/Chuyển khoản]
|
||
C4[Thẻ]
|
||
C5[In bill + Số thứ tự]
|
||
end
|
||
|
||
subgraph PREPARE["☕ PHA CHẾ"]
|
||
D1[Barista nhận order]
|
||
D2[Pha chế]
|
||
D3[Hoàn thành]
|
||
end
|
||
|
||
subgraph SERVE["🎉 PHỤC VỤ"]
|
||
E1[Gọi số]
|
||
E2[Khách nhận đồ]
|
||
E3[Ra về]
|
||
end
|
||
|
||
A1 --> B1 --> B2 --> B3
|
||
B3 --> C1
|
||
C1 --> C2 & C3 & C4
|
||
C2 & C3 & C4 --> C5
|
||
C5 --> D1 --> D2 --> D3
|
||
D3 --> E1 --> E2 --> E3
|
||
```
|
||
|
||
### Screens theo bước
|
||
|
||
| Bước | Screen | File |
|
||
|------|--------|------|
|
||
| Order | POS chính | `cafe/desktop.pen` |
|
||
| Payment | Chọn phương thức | `shared/payment/method-select.pen` |
|
||
| Payment | Tiền mặt | `shared/payment/cash.pen` |
|
||
| Payment | QR | `shared/payment/qr.pen` |
|
||
| Payment | Thành công | `shared/payment/success.pen` |
|
||
| Serve | Màn hình gọi số | `cafe/workflow/queue-display.pen` |
|
||
|
||
---
|
||
|
||
## 3. Restaurant - Full Service
|
||
|
||
### Workflow Diagram
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph ARRIVE["👤 KHÁCH ĐẾN"]
|
||
A1[Vào nhà hàng]
|
||
A2{Đặt bàn trước?}
|
||
A3[Check-in đặt bàn]
|
||
A4[Chọn bàn trống]
|
||
end
|
||
|
||
subgraph SEAT["🪑 NGỒI BÀN"]
|
||
B1[Nhân viên dẫn bàn]
|
||
B2[Mở order bàn]
|
||
end
|
||
|
||
subgraph ORDER["📝 ORDER ĐỢT 1"]
|
||
C1[Xem menu]
|
||
C2[Chọn món]
|
||
C3[Gửi bếp]
|
||
end
|
||
|
||
subgraph KITCHEN["👨🍳 BẾP"]
|
||
D1[Bếp nhận order]
|
||
D2[Nấu món]
|
||
D3[Món sẵn sàng]
|
||
D4[Phục vụ ra bàn]
|
||
end
|
||
|
||
subgraph CONTINUE["🔄 TIẾP TỤC"]
|
||
E1{Thêm món?}
|
||
E2[Order đợt 2+]
|
||
end
|
||
|
||
subgraph CHECKOUT["💳 TÍNH TIỀN"]
|
||
F1[Khách yêu cầu bill]
|
||
F2[Xem lại bill]
|
||
F3{Thanh toán}
|
||
F4[Tiền mặt/QR/Thẻ]
|
||
F5[In hóa đơn]
|
||
end
|
||
|
||
subgraph LEAVE["👋 RA VỀ"]
|
||
G1[Đóng bàn]
|
||
G2[Khách ra về]
|
||
end
|
||
|
||
A1 --> A2
|
||
A2 -->|Có| A3
|
||
A2 -->|Không| A4
|
||
A3 & A4 --> B1 --> B2
|
||
B2 --> C1 --> C2 --> C3
|
||
C3 --> D1 --> D2 --> D3 --> D4
|
||
D4 --> E1
|
||
E1 -->|Có| E2 --> C2
|
||
E1 -->|Không| F1
|
||
F1 --> F2 --> F3 --> F4 --> F5
|
||
F5 --> G1 --> G2
|
||
```
|
||
|
||
### Screens theo bước
|
||
|
||
| Bước | Screen | File |
|
||
|------|--------|------|
|
||
| Arrive | Sơ đồ bàn | `restaurant/workflow/table-map.pen` |
|
||
| Order | POS order bàn | `restaurant/desktop.pen` |
|
||
| Kitchen | Màn hình bếp | `restaurant/workflow/kitchen-display.pen` |
|
||
| Payment | Các màn thanh toán | `shared/payment/*.pen` |
|
||
|
||
### Trạng thái Order Item
|
||
- 🟡 **Chờ** - Vừa gửi bếp
|
||
- 🔵 **Đang làm** - Bếp nhận
|
||
- 🟢 **Xong** - Sẵn sàng phục vụ
|
||
- ✅ **Đã phục vụ** - Ra bàn
|
||
|
||
---
|
||
|
||
## 4. Karaoke - Time-Based
|
||
|
||
### Workflow Diagram
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph ARRIVE["👤 KHÁCH ĐẾN"]
|
||
A1[Vào quán]
|
||
A2[Xem sơ đồ phòng]
|
||
A3[Chọn phòng trống]
|
||
end
|
||
|
||
subgraph OPEN["🚪 MỞ PHÒNG"]
|
||
B1[Chọn thời lượng]
|
||
B2[Mở phòng]
|
||
B3[⏱️ Timer bắt đầu]
|
||
end
|
||
|
||
subgraph SESSION["🎤 TRONG PHÒNG"]
|
||
C1[Hát karaoke]
|
||
C2{Order đồ?}
|
||
C3[Chọn đồ uống/ăn]
|
||
C4[Gửi order]
|
||
end
|
||
|
||
subgraph EXTEND["⏰ GIA HẠN"]
|
||
D1{Timer sắp hết?}
|
||
D2[Thông báo 10p trước]
|
||
D3{Gia hạn?}
|
||
D4[Thêm thời gian]
|
||
end
|
||
|
||
subgraph CLOSE["🔒 ĐÓNG PHÒNG"]
|
||
E1[Kết thúc session]
|
||
E2[⏱️ Timer dừng]
|
||
E3[Xem bill tổng]
|
||
end
|
||
|
||
subgraph PAYMENT["💳 THANH TOÁN"]
|
||
F1[Tiền phòng + F&B]
|
||
F2{Thanh toán}
|
||
F3[Tiền mặt/QR/Thẻ]
|
||
F4[In hóa đơn]
|
||
end
|
||
|
||
subgraph LEAVE["👋 RA VỀ"]
|
||
G1[Reset phòng]
|
||
G2[Khách ra về]
|
||
end
|
||
|
||
A1 --> A2 --> A3
|
||
A3 --> B1 --> B2 --> B3
|
||
B3 --> C1
|
||
C1 --> C2
|
||
C2 -->|Có| C3 --> C4 --> C1
|
||
C2 -->|Không| D1
|
||
D1 -->|Có| D2 --> D3
|
||
D3 -->|Có| D4 --> C1
|
||
D3 -->|Không| E1
|
||
D1 -->|Không| C1
|
||
E1 --> E2 --> E3
|
||
E3 --> F1 --> F2 --> F3 --> F4
|
||
F4 --> G1 --> G2
|
||
```
|
||
|
||
### Screens theo bước
|
||
|
||
| Bước | Screen | File |
|
||
|------|--------|------|
|
||
| Arrive | Sơ đồ phòng | `karaoke/workflow/room-map.pen` |
|
||
| Session | Chi tiết phòng + timer | `karaoke/workflow/room-session.pen` |
|
||
| Order | POS order đồ | `karaoke/desktop.pen` |
|
||
| Payment | Các màn thanh toán | `shared/payment/*.pen` |
|
||
|
||
### Tính giá phòng
|
||
```
|
||
Tiền phòng = Giá/giờ × Số giờ thực tế
|
||
- Block đầu: 2 giờ minimum
|
||
- Block sau: +30 phút/lần
|
||
- Peak hours (18h-22h T6-CN): ×1.5
|
||
- Happy hour (14h-17h T2-T5): -30%
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Spa - Appointment Service
|
||
|
||
### Workflow Diagram
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph ARRIVE["👤 KHÁCH ĐẾN"]
|
||
A1[Vào spa]
|
||
A2{Có đặt lịch?}
|
||
A3[Tìm khách hàng]
|
||
A4[Check-in lịch hẹn]
|
||
A5[Walk-in mới]
|
||
end
|
||
|
||
subgraph CUSTOMER["👥 KHÁCH HÀNG"]
|
||
B1{Khách cũ?}
|
||
B2[Tìm trong hệ thống]
|
||
B3[Tạo khách mới]
|
||
B4[Xem thông tin + VIP tier]
|
||
end
|
||
|
||
subgraph SERVICE["💆 CHỌN DỊCH VỤ"]
|
||
C1[Xem danh sách dịch vụ]
|
||
C2[Chọn dịch vụ]
|
||
C3[Chọn nhân viên]
|
||
end
|
||
|
||
subgraph PERFORM["✨ THỰC HIỆN"]
|
||
D1[Bắt đầu dịch vụ]
|
||
D2[Thực hiện]
|
||
D3[Hoàn thành]
|
||
end
|
||
|
||
subgraph CONTINUE["🔄 TIẾP TỤC"]
|
||
E1{Thêm dịch vụ?}
|
||
E2[Chọn dịch vụ tiếp]
|
||
end
|
||
|
||
subgraph CHECKOUT["💳 THANH TOÁN"]
|
||
F1[Xem bill]
|
||
F2{Dùng điểm?}
|
||
F3[Trừ điểm loyalty]
|
||
F4{Thanh toán}
|
||
F5[Tiền mặt/QR/Thẻ]
|
||
F6[+Tích điểm mới]
|
||
end
|
||
|
||
subgraph LEAVE["👋 RA VỀ"]
|
||
G1{Đặt lịch lần sau?}
|
||
G2[Tạo lịch hẹn]
|
||
G3[Khách ra về]
|
||
end
|
||
|
||
A1 --> A2
|
||
A2 -->|Có| A3 --> A4
|
||
A2 -->|Không| A5
|
||
A4 & A5 --> B1
|
||
B1 -->|Có| B2 --> B4
|
||
B1 -->|Không| B3 --> B4
|
||
B4 --> C1 --> C2 --> C3
|
||
C3 --> D1 --> D2 --> D3
|
||
D3 --> E1
|
||
E1 -->|Có| E2 --> C2
|
||
E1 -->|Không| F1
|
||
F1 --> F2
|
||
F2 -->|Có| F3 --> F4
|
||
F2 -->|Không| F4
|
||
F4 --> F5 --> F6
|
||
F6 --> G1
|
||
G1 -->|Có| G2 --> G3
|
||
G1 -->|Không| G3
|
||
```
|
||
|
||
### Screens theo bước
|
||
|
||
| Bước | Screen | File |
|
||
|------|--------|------|
|
||
| Customer | Tìm khách | `spa/workflow/customer-lookup.pen` |
|
||
| Service | POS chọn dịch vụ | `spa/desktop.pen` |
|
||
| Staff | Chọn nhân viên | `spa/workflow/staff-assign.pen` |
|
||
| Payment | Các màn thanh toán | `shared/payment/*.pen` |
|
||
|
||
### Loyalty System
|
||
```
|
||
Tích điểm: 1 điểm / 10,000₫
|
||
Đổi điểm: 100 điểm = 10,000₫
|
||
|
||
VIP Tiers:
|
||
- Silver: 500 điểm (giảm 5%)
|
||
- Gold: 2,000 điểm (giảm 10%)
|
||
- Platinum: 5,000 điểm (giảm 15%)
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Payment Flow
|
||
|
||
### Shared Payment Workflow
|
||
```mermaid
|
||
flowchart LR
|
||
A[Chọn phương thức] --> B{Loại?}
|
||
B -->|Tiền mặt| C[Nhập số tiền]
|
||
B -->|QR| D[Hiển thị QR]
|
||
B -->|Thẻ| E[Quẹt thẻ]
|
||
C --> F[Tính tiền thối]
|
||
D --> G[Chờ xác nhận]
|
||
E --> H[Chờ máy POS]
|
||
F & G & H --> I[Thành công]
|
||
I --> J[In/Gửi hóa đơn]
|
||
J --> K[Hoàn tất]
|
||
```
|
||
|
||
### Payment Screens
|
||
|
||
| Screen | Mô tả | File |
|
||
|--------|-------|------|
|
||
| Method Select | Chọn Cash/QR/Card | `method-select.pen` |
|
||
| Cash | Tính tiền thối | `cash.pen` |
|
||
| QR | VietQR/MoMo/ZaloPay | `qr.pen` |
|
||
| Success | Xác nhận thành công | `success.pen` |
|
||
| Receipt | Mẫu hóa đơn 80mm | `receipt.pen` |
|
||
|
||
---
|
||
|
||
## Tổng hợp Files
|
||
|
||
```
|
||
src/pages/tPOS/pos/
|
||
├── shared/payment/ # Dùng chung
|
||
│ ├── method-select.pen
|
||
│ ├── cash.pen
|
||
│ ├── qr.pen
|
||
│ ├── success.pen
|
||
│ └── receipt.pen
|
||
├── cafe/
|
||
│ ├── desktop.pen
|
||
│ ├── tablet.pen
|
||
│ ├── mobile.pen
|
||
│ └── workflow/
|
||
│ └── queue-display.pen
|
||
├── restaurant/
|
||
│ ├── desktop.pen
|
||
│ ├── tablet.pen
|
||
│ ├── mobile.pen
|
||
│ └── workflow/
|
||
│ ├── table-map.pen
|
||
│ └── kitchen-display.pen
|
||
├── karaoke/
|
||
│ ├── desktop.pen
|
||
│ ├── tablet.pen
|
||
│ ├── mobile.pen
|
||
│ └── workflow/
|
||
│ ├── room-map.pen
|
||
│ └── room-session.pen
|
||
└── spa/
|
||
├── desktop.pen
|
||
├── tablet.pen
|
||
├── mobile.pen
|
||
└── workflow/
|
||
├── customer-lookup.pen
|
||
└── staff-assign.pen
|
||
```
|
||
|
||
**Tổng: 24 files** (12 device variants + 12 workflow screens)
|