Giao diện
PHÂN TÍCH NGHIỆP VỤ - PHẦN 3: THANH TOÁN & BÁO CÁO
Flow 5: QUẢN LÝ THANH TOÁN & CÔNG NỢ
5.1 Use Cases
UC-401: Thu Tiền Đặt Cọc
Actor: Nhân viên kinh doanh hoặc Kế toán
Trigger: Đơn hàng được xác nhận (UC-004)
Điều kiện tiên quyết: Order status = CONFIRMED && còn tiền cần thu
Luồng chính:
- User vào "Tài Chính > Thu Chi"
- Nhấn "+ Tạo Phiếu Thu"
- Form phiếu thu:
- Mã phiếu:
TT-YYYYMMDD-XXX(auto) - Ngày thu: [____] (default = hôm nay)
- Khách hàng: [____] (search & select)
- Chọn đơn hàng cần thanh toán
- Mã phiếu:
- Hệ thống hiển thị thông tin đơn:
Đơn hàng: DH-20260129-001 Tổng tiền: 27,500,000 đ Đã thu: 0 đ Còn phải thu: 27,500,000 đ Tiền cọc dự kiến: 13,750,000 đ (50%) - Nhập số tiền thu thực tế: [____]
- Hệ thống validate: 0 < số tiền <= còn phải thu
- Chọn phương thức thanh toán:
- ○ Tiền mặt
- ○ Chuyển khoản → Nhập mã giao dịch: [____]
- ○ Quẹt thẻ → Nhập số POS: [____]
- ○ Ví điện tử (Momo, ZaloPay...) → Nhập mã GD: [____]
- Chọn loại thanh toán:
- ○ Đặt cọc (Deposit)
- ○ Thanh toán 1 phần (Partial)
- ○ Thanh toán toàn bộ (Full)
- Ghi chú: [____]
- Upload hình ảnh/file (optional):
- Scan biên lai chuyển khoản
- Ảnh chữ ký khách (nếu tiền mặt)
- Nhấn "Lưu Phiếu Thu"
- Hệ thống:
- Lưu payment record
- Tính toán lại công nợ:sql
debt = total_amount - SUM(payments) - IF debt == 0 THEN
- Đánh dấu đơn hàng: is_fully_paid = TRUE
- Gửi email cảm ơn khách hàng
- Log activity
- In phiếu thu (2 liên: KH, Lưu)
- Hiển thị "Thu tiền thành công"
Validation Rules:
VR-400: Số tiền thu > 0 và <= Còn phải thu
VR-401: IF Chuyển khoản THEN Mã GD required (min 6 ký tự)
VR-402: Ngày thu <= Ngày hiện tại
VR-403: Không được thu trùng (check duplicate transaction_ref)Business Rules:
BR-400: Tiền cọc tối thiểu:
- Khách mới: >= 50% tổng đơn
- Khách thường: >= 30%
- Khách VIP: Tùy thỏa thuận
BR-401: Cho phép thu nhiều lần (partial payments)
BR-402: Mỗi lần thu tiền phải có phiếu thu (để đối chiếu)
BR-403: Tiền mặt > 20 triệu → Phải lập biên bản giao nhận
BR-404: Auto gửi email biên lai cho khách sau mỗi lần thuSequence Diagram:
mermaid
sequenceDiagram
participant User as Sales/Kế toán
participant UI as Web UI
participant API as Payment API
participant DB as Database
participant Email as Email Service
User->>UI: Nhập thông tin + "Lưu"
UI->>API: POST /payments
API->>API: Validate data
alt Validation Failed
API-->>UI: Error
UI-->>User: Hiển thị lỗi
else Validation OK
API->>DB: INSERT payment
API->>DB: UPDATE order debt
DB-->>API: OK
alt Thanh toán đủ
API->>Email: Gửi email cảm ơn
end
API-->>UI: Success {payment_id, pdf_url}
UI-->>User: "Thu tiền thành công"
UI->>UI: Mở popup in phiếu thu
endUC-402: Thu Tiền Còn Lại (Sau Nghiệm Thu)
Actor: Kế toán
Trigger: Order status = ACCEPTED (đã nghiệm thu)
Điều kiện tiên quyết: Còn tiền chưa thu (debt > 0)
Luồng chính:
Hệ thống tự động gửi email cho khách:
Subject: Thông báo thanh toán đơn hàng DH-XXX Kính gửi Quý khách, Đơn hàng của Quý khách đã được giao và nghiệm thu thành công. Vui lòng thanh toán số tiền còn lại: Tổng đơn hàng: 27,500,000 đ Đã thanh toán: 13,750,000 đ (Cọc 50%) Còn phải trả: 13,750,000 đ Hạn thanh toán: [Ngày] Thông tin chuyển khoản: - Ngân hàng: Vietcombank - Số TK: 1234567890 - Chủ TK: Công ty Sản Xuất Giấy ABC - Nội dung: DH-XXX [Tên khách hàng]Kế toán theo dõi thanh toán:
- Vào "Tài Chính > Công Nợ"
- Lọc: "Chờ thanh toán sau nghiệm thu"
- Danh sách đơn hàng cần thu tiền
Khi khách chuyển khoản:
- Nhận thông báo từ bank (nếu tích hợp SMS)
- Hoặc check thủ công
Thực hiện thu tiền (tương tự UC-401)
- Chọn đơn hàng
- Nhập số tiền
- Nhập mã giao dịch
- Lưu phiếu thu
Hệ thống tự động:
- Cập nhật công nợ
- IF debt == 0 THEN
- Đánh dấu completed_at = NOW()
- Gửi email "Cảm ơn, đơn hàng đã hoàn tất"
- Chuyển đơn sang trạng thái CLOSED
- Log activity
Business Rules:
BR-410: Hạn thanh toán sau nghiệm thu:
- Khách mới: Ngay sau nghiệm thu (0 ngày)
- Khách thường: 7 ngày
- Khách VIP: 15-30 ngày
BR-411: Nhắc nhở thanh toán:
- Ngay sau nghiệm thu: Gửi email thông báo
- Trước hạn 2 ngày: Gửi email nhắc nhở
- Đúng hạn: Gửi SMS nhắc nhở
- Quá hạn 1 ngày: Gọi điện
- Quá hạn 7 ngày: Tạm ngưng nhận đơn mới
BR-412: Chiết khấu thanh toán sớm:
- Thanh toán full ngay lúc xác nhận đơn: -3%
- Thanh toán trong 3 ngày sau nghiệm thu: -1%UC-403: Quản Lý Công Nợ
Actor: Kế toán, Manager
Mục đích: Theo dõi và quản lý công nợ của tất cả khách hàng
Luồng chính:
Vào "Tài Chính > Công Nợ"
Hệ thống hiển thị dashboard công nợ:
┌─────────────────────────────────┐ │ TỔNG QUAN CÔNG NỢ │ ├─────────────────────────────────┤ │ Tổng phải thu: 250,000,000 đ │ │ Trong hạn: 180,000,000 đ │ │ Quá hạn: 70,000,000 đ ⚠│ │ │ │ Số KH còn nợ: 25 │ │ Số KH quá hạn: 8 ⚠ │ └─────────────────────────────────┘Bảng chi tiết công nợ theo khách hàng:
Mã KH Tên KH Loại Tổng Nợ Hạn TT Quá Hạn Hành Động KH001 Cty ABC VIP 50M 15/02 - [Gửi Email] KH025 Cty XYZ Mới 20M 28/01 1 ngày [Gọi Điện] ⚠ KH010 Cá nhân A Thường 5M 10/01 19 ngày [Ngưng ĐH] 🚫 Bộ lọc:
- Theo trạng thái: Trong hạn / Sắp đến hạn (3 ngày) / Quá hạn
- Theo loại KH: VIP / Thường / Mới
- Theo số tiền: < 10M / 10-50M / > 50M
Hành động:
A. Gửi Email Nhắc Nhở:
- Chọn khách hàng
- Nhấn "Gửi Email Nhắc"
- Chọn template:
- Email lịch sự (khách VIP, chưa quá hạn)
- Email nhắc nhở (quá hạn 1-7 ngày)
- Email cảnh báo (quá hạn > 7 ngày)
- Review và gửi
B. Gọi Điện:
- Click vào số điện thoại → Tự động gọi (nếu tích hợp)
- Ghi chú cuộc gọi:
- Khách đã nhận máy? [Có/Không]
- Khách cam kết thanh toán khi nào? [____]
- Ghi chú: [____]
- Lưu lịch sử cuộc gọi
C. Tạm Ngưng Nhận Đơn:
- Chọn khách hàng quá hạn > 7 ngày
- Nhấn "Tạm Ngưng"
- Hệ thống:
- Cập nhật customer.status = BLOCKED
- Khi Sales tạo đơn cho KH này → Warning "KH bị khóa do nợ quá hạn"
- Không cho phép xác nhận đơn mới
D. Đối Chiếu Công Nợ:
- Chọn khách hàng
- Nhấn "Tạo Bảng Đối Chiếu"
- Hệ thống generate file Excel/PDF:
BẢNG ĐỐI CHIẾU CÔNG NỢ Từ ngày: 01/01/2026 - Đến ngày: 31/01/2026 | Ngày | Diễn Giải | Phát Sinh Nợ | Phát Sinh Có | Tồn | |------|-----------|--------------|--------------|-----| | 15/01| Đơn DH-001| 27,500,000 | - | 27,500,000 | | 20/01| Thu cọc | - | 13,750,000 | 13,750,000 | | 30/01| Thu còn lại| - | 13,750,000 | 0 | - Gửi email cho khách xác nhận
Business Rules:
BR-420: Hạn mức công nợ:
- Khách mới: 0 (không cho nợ)
- Khách thường: 20-50 triệu
- Khách VIP: 100-500 triệu (theo phê duyệt)
BR-421: Cảnh báo khi:
- Tổng nợ > 80% hạn mức
- Quá hạn > 3 ngày
- Có đơn hàng mới mà chưa thanh toán đơn cũ
BR-422: Tự động khóa khách hàng khi:
- Quá hạn > 14 ngày
- Hoặc tổng nợ > hạn mức
BR-423: Đối chiếu công nợ định kỳ:
- Khách VIP: Mỗi tháng
- Khách thường: Mỗi quýUC-404: Xuất Hóa Đơn VAT
Actor: Kế toán
Điều kiện tiên quyết:
- Order đã thanh toán (full hoặc theo phần)
- Khách yêu cầu xuất hóa đơn (có MST)
Luồng chính:
- Khách hàng yêu cầu xuất hóa đơn (qua email/điện thoại)
- Kế toán vào "Tài Chính > Hóa Đơn"
- Nhấn "+ Tạo Hóa Đơn Mới"
- Chọn đơn hàng cần xuất HĐ
- Hệ thống tự động điền thông tin:
- Tên công ty (từ customer.name)
- Mã số thuế (từ customer.tax_code)
- Địa chỉ (từ customer.address)
- Danh sách sản phẩm (từ order_items)
- Thành tiền (từ order.subtotal)
- VAT 10% (từ order.vat_amount)
- Tổng cộng (từ order.total_amount)
- Kế toán review và điều chỉnh (nếu cần):
- Tên sản phẩm (gộp nhiều SP thành 1 dòng)
- Đơn vị tính
- Ghi chú
- Nhấn "Xuất Hóa Đơn"
- Hệ thống:
- IF tích hợp với hóa đơn điện tử (Viettel, VNPT...) THEN
- Call API tạo hóa đơn
- Lấy mã tra cứu HĐ
- Lưu link HĐ điện tử
- ELSE
- Generate PDF hóa đơn (theo mẫu pháp lý)
- Lưu file PDF
- Cập nhật order.invoice_issued = TRUE
- Gửi email HĐ cho khách
- Log activity
- IF tích hợp với hóa đơn điện tử (Viettel, VNPT...) THEN
- In hóa đơn (nếu cần bản giấy)
Validation Rules:
VR-430: Mã số thuế: 10 hoặc 13 số
VR-431: Địa chỉ xuất HĐ: Required, min 10 ký tự
VR-432: Tên công ty: Required, min 5 ký tự
VR-433: Không được xuất HĐ trùng cho 1 đơn hàngBusiness Rules:
BR-430: Chỉ xuất HĐ khi đã thanh toán >= 50%
BR-431: HĐ điện tử phải ký số (nếu dùng e-invoice)
BR-432: Lưu trữ HĐ tối thiểu 10 năm (theo luật)
BR-433: Hóa đơn sai → Phải lập hóa đơn điều chỉnh (không xóa được)Flow 6: BÁO CÁO & PHÂN TÍCH
6.1 Các Báo Cáo Quan Trọng
UC-501: Dashboard Tổng Quan
Actor: Tất cả users (theo quyền)
Mục đích: Xem tổng quan tình hình kinh doanh
Nội dung Dashboard:
1. KPIs Chính (Cards):
┌────────────────┬────────────────┬────────────────┬────────────────┐
│ Doanh Thu │ Đơn Hàng │ Đang SX │ Công Nợ │
│ Tháng Này │ Mới Hôm Nay │ Hiện Tại │ Phải Thu │
├────────────────┼────────────────┼────────────────┼────────────────┤
│ 450,000,000 đ │ 12 đơn │ 25 lệnh │ 85,000,000 đ │
│ ↑ 15% so t.trước│ ↑ 3 so h.qua │ ⚠ 5 trễ hạn │ ⚠ 20M quá hạn │
└────────────────┴────────────────┴────────────────┴────────────────┘2. Biểu Đồ Doanh Thu (Line Chart):
- Trục X: Ngày trong tháng
- Trục Y: Doanh thu (VNĐ)
- 2 đường: Tháng này vs Tháng trước
3. Biểu Đồ Sản Lượng (Bar Chart):
- Trục X: Loại sản phẩm
- Trục Y: Số lượng
- So sánh theo tuần
4. Đơn Hàng Theo Trạng Thái (Pie Chart):
Confirmed: 30%
In Production: 40%
Completed: 20%
Delivered: 10%5. Bảng Công Việc Hôm Nay:
- Đơn hàng cần giao hôm nay: [Danh sách]
- Đơn hàng đến hạn trong 3 ngày: [Danh sách]
- Lệnh SX cần bắt đầu: [Danh sách]
- Công nợ cần thu hôm nay: [Danh sách]
6. Cảnh Báo:
⚠ 3 NVL sắp hết hàng
⚠ 5 đơn hàng trễ tiến độ
⚠ 8 khách hàng nợ quá hạn
⚠ 2 máy in cần bảo trìBusiness Rules:
BR-500: Dashboard tự động refresh mỗi 5 phút
BR-501: Mỗi role thấy metrics khác nhau:
- SALES: Doanh thu, Đơn hàng, Công nợ
- PRODUCTION: Lệnh SX, Tiến độ, NVL
- WAREHOUSE: Tồn kho, Nhập/Xuất
- ACCOUNTANT: Doanh thu, Thu chi, Công nợ
BR-502: Cảnh báo màu đỏ khi vượt ngưỡng:
- Trễ tiến độ > 2 ngày
- Nợ quá hạn > 7 ngày
- Tồn kho < min_stockUC-502: Báo Cáo Doanh Thu
Actor: Manager, Accountant
Mục đích: Phân tích doanh thu theo nhiều chiều
Các Tham Số:
- Khoảng thời gian: [Từ ngày] - [Đến ngày]
- Nhóm theo: Ngày / Tuần / Tháng / Quý
- Loại sản phẩm: Tất cả / In ấn / Biển QC
- Khách hàng: Tất cả / Theo phân loại
- Nhân viên kinh doanh: Tất cả / Chọn 1 người
Nội Dung Báo Cáo:
1. Tổng Hợp:
Tổng doanh thu: 1,250,000,000 đ
Số đơn hàng: 125
Giá trị TB/đơn: 10,000,000 đ
Khách hàng mới: 25
Khách hàng quay lại: 402. Biểu Đồ Xu Hướng:
- Line chart doanh thu theo thời gian
- So sánh với kỳ trước
3. Top Sản Phẩm:
| Loại SP | Số Đơn | Doanh Thu | % |
|---|---|---|---|
| Catalogue | 50 | 500M | 40% |
| Tờ rơi | 40 | 300M | 24% |
| Biển hiflex | 20 | 400M | 32% |
| Khác | 15 | 50M | 4% |
4. Top Khách Hàng:
| Khách Hàng | Số Đơn | Doanh Thu |
|---|---|---|
| Công ty ABC | 10 | 150M |
| Công ty XYZ | 8 | 120M |
| ... | ... | ... |
5. Doanh Thu Theo Nhân Viên:
| NV Kinh Doanh | Số Đơn | Doanh Thu | Hoa Hồng (2%) |
|---|---|---|---|
| Nguyễn Văn A | 30 | 300M | 6M |
| Trần Thị B | 25 | 250M | 5M |
Action:
- Export Excel
- Export PDF
- Gửi email báo cáo định kỳ (cuối tháng)
UC-503: Báo Cáo Sản Xuất
Actor: Production Manager
Nội Dung:
Năng Suất:
- Số lệnh SX hoàn thành: X
- Tỷ lệ đúng hạn: Y%
- Tỷ lệ trễ hạn: Z%
Hiệu Suất Nhân Viên:
Nhân Viên SL Làm SL Lỗi Tỷ Lệ Lỗi Thời Gian TB Thợ A 50 2 4% 3.5h Hiệu Suất Máy Móc:
Máy Thời Gian Chạy Downtime Tỷ Lệ Sử Dụng Máy in 1 160h 8h 95% Phế Phẩm:
- Tổng phế phẩm: X kg
- Giá trị: Y đ
- Nguyên nhân chính: [...]
UC-504: Báo Cáo Tồn Kho
Actor: Warehouse Manager
Nội Dung:
Tồn Kho Hiện Tại:
Mã NVL Tên Tồn Đơn Vị Giá Trị Trạng Thái G-C250 Giấy C250 1000 Tờ 25M ✅ M-CYAN Mực Cyan 10 Kg 2M ⚠ Sắp hết Biến Động Kho:
- Nhập trong kỳ: X
- Xuất trong kỳ: Y
- Tồn cuối kỳ: Z
Cảnh Báo:
- NVL sắp hết: [Danh sách]
- NVL tồn lâu: [Danh sách]
- NVL cần đặt hàng: [Danh sách]
TỔNG KẾT & GHI CHÚ
Functional Requirements Summary
Tổng Cộng: 25 Use Cases Chính
| Flow | Số UC | Mức Độ Ưu Tiên |
|---|---|---|
| 1. Đơn Hàng | 4 | CAO |
| 2. Sản Xuất | 4 | CAO |
| 3. Kho | 5 | CAO |
| 4. Giao Hàng | 4 | TRUNG BÌNH |
| 5. Thanh Toán | 4 | CAO |
| 6. Báo Cáo | 4 | TRUNG BÌNH |
Non-Functional Requirements
1. Performance:
- Thời gian load trang: < 2s
- API response time: < 500ms
- Hỗ trợ 50 users đồng thời
2. Security:
- HTTPS bắt buộc
- Password mã hóa bcrypt
- Session timeout: 8h
- Role-based access control
3. Usability:
- Responsive design (mobile-friendly)
- Hỗ trợ tiếng Việt có dấu
- UI trực quan, dễ sử dụng
4. Reliability:
- Uptime: 99.5%
- Backup hàng ngày
- Disaster recovery plan
5. Scalability:
- Hỗ trợ mở rộng số lượng user
- Hỗ trợ multi-warehouse (nhiều kho)
- Có thể tích hợp module mới
Kết thúc Flow 6: Báo Cáo & Phân Tích
💡 Lưu ý: Đây là phần cuối của bộ SRS.
- Phần trước:
- Quay lại: Mục lục SRS