10 trạng thái và hệ thống tự làm gì ở mỗi trạng thái
Trạng thái trả lời câu hỏi “đơn này đang ở đâu?”. Mỗi lần đơn bước sang trạng thái mới, phần mềm tự động làm những việc kèm theo (giữ hàng, trừ kho, ghi nhận tiền…), nhân viên không phải nhớ.
Bản đồ đường đi & chạy thử từng kiểu bán hàng
Bấm vào một ô trạng thái để xem đơn ở đó đi tiếp được đâu, hoặc bấm vào một nhãn trên mũi tên để xem ai bấm nút đó và hệ thống làm gì. Chọn một kịch bản bên dưới rồi bấm Chạy để xem đơn di chuyển.
Toàn bộ 18 đường đi hợp lệ
Mọi thao tác trong phần mềm, của khách, của nhân viên quầy, của quản lý, hay của máy tự chạy, đều là một dòng trong bảng này. Không có đường nào khác. Bấm vào một dòng để xem nó nằm ở đâu trên bản đồ.
| Mã | Đi từ → đến | Ai làm | Xảy ra khi nào / điều kiện | Hệ thống tự làm gì |
|---|
Tiền, hoàn tiền và mã giảm giá đi theo đường riêng
Ngoài trạng thái đơn, phần mềm còn theo dõi riêng “tiền đã về chưa”. Hai thứ này liên quan nhau nhưng được ghi tách bạch, để lúc đối soát luôn biết đơn nào đã thu tiền, đơn nào chưa.
💰 Trạng thái thanh toán của đơn
Bốn con đường tiền có thể đi:
Có sẵn thêm trạng thái “hoàn tiền hỏng” để dành cho tương lai (khi nối thẳng API hoàn tiền của PayOS), hiện chưa dùng đến.
↩️ Phiếu hoàn tiền
Mỗi lần duyệt trả hàng, hệ thống ghi một phiếu hoàn tiền gắn với đơn, để sau này đối soát luôn có bằng chứng đi kèm, không chỉ là một dòng “đã hoàn tiền”.
Giai đoạn hiện tại: khi quản lý bấm “Duyệt trả hàng”, hệ thống ghi luôn phiếu thành công, nghĩa là “cửa hàng đã trả tiền cho khách”. Việc chuyển khoản lại cho khách vẫn làm thủ công bên ngoài (chuyển khoản tay / hoàn qua PayOS), rồi ghi chú vào phiếu. Hai trạng thái còn lại đã dựng sẵn cho lúc nối tự động.
🎟️ Mã giảm giá (voucher)
Mã giảm giá chỉ có hai trạng thái, do quản lý tự bật/tắt:
Quan trọng với việc bán hàng: mỗi lần đặt đơn có dùng mã, số lượt đã dùng tăng 1. Nếu đơn đó bị huỷ, hệ thống trả lại lượt dùng, mã không bị “bốc hơi” oan vì một đơn không thành.
Bốn luật an toàn đứng sau tất cả
Đây là lý do phần mềm “khó tính” khi không cho nhảy cóc trạng thái: mỗi luật chặn một kiểu thất thoát thật.
🚪 Chỉ có một cửa duy nhất
Mọi thay đổi trạng thái đều đi qua đúng một chỗ trong phần mềm. Không có “đường tắt” nào sửa thẳng trạng thái đơn trong dữ liệu. Nhờ vậy các việc đi kèm (trả hàng về kho, ghi nhận tiền, hoàn lượt mã giảm giá) không bao giờ bị bỏ sót, và mọi lần đổi trạng thái đều được ghi vào lịch sử đơn.
🎯 Đúng đường, đúng người
Có ba đường khác nhau cùng dẫn tới “Hoàn tất”: tiền về ở quầy, hệ thống tự đóng đơn sau 7 ngày, và quản lý từ chối yêu cầu trả hàng. Mỗi đường chỉ mở cho đúng nguồn của nó. Nếu không có luật này, thao tác “từ chối trả hàng” có thể bị dùng nhầm để đẩy một đơn chưa giao thành đã hoàn tất, kéo theo trừ kho và ghi doanh thu sai.
🔐 Đơn của ai, người đó huỷ
Khách chỉ huỷ / xin trả được đơn của chính mình, đổi số đơn trên đường dẫn cũng không đụng được đơn người khác. Riêng đơn đặt lúc chưa đăng nhập (đơn khách vãng lai) thì không tự huỷ trên web được, khách phải gọi cửa hàng, vì đơn đó không gắn với tài khoản nào để đối chiếu.
🔁 Ngân hàng báo mấy lần cũng chỉ tính một
PayOS có thể gửi báo “tiền đã về” nhiều lần cho cùng một giao dịch. Hệ thống chặn hai lớp: kiểm tra đơn đã thanh toán chưa, và lưu mã giao dịch không cho trùng. Kết quả: đơn không bao giờ bị cộng tiền hai lần hay trừ kho hai lần.
Thử xem: đơn có nhảy từ đây sang kia được không?
Chọn hai trạng thái rồi bấm kiểm tra, công cụ này chạy đúng bộ luật mà phần mềm đang dùng thật.