👟 FinishLine
👟 Phần mềm bán giày FinishLine

Một đơn hàng đi qua những chặng nào?

Mỗi đơn hàng, dù khách đặt trên web hay mua trực tiếp tại quầy, luôn nằm ở đúng một trạng thái, và chỉ được đi theo những đường đã vạch sẵn. Nhờ vậy hàng trong kho, tiền đã thu và báo cáo doanh thu luôn khớp nhau, không phụ thuộc vào việc ai bấm nút. Trang này mô tả toàn bộ những gì phần mềm đang chạy thật.

10trạng thái của đơn
18đường đi hợp lệ
4kiểu bán hàng
15 phúthạn thanh toán QR (đơn online)
7 ngàyhạn đổi / trả hàng
🎬 Mẹo khi trình bày: xuống mục “Bản đồ & chạy thử”, chọn một kiểu bán hàng rồi bấm Chạy, đơn hàng sẽ tự chạy trên bản đồ kèm lời thuyết minh từng bước. Bấm nút ở góc phải khung sơ đồ để phóng to toàn màn hình. Phím tắt: Space chạy/dừng, lùi/tới một bước, F toàn màn hình.
Phần 1

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ớ.

Phần 2

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.

Chọn kịch bản để chạy thử
Tốc độ
👟
Phần 3

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 đồ.

Đi từ → đếnAi làm Xảy ra khi nào / điều kiệnHệ thống tự làm gì
Phần 4

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:

Chưa thanh toán shipper thu tiền COD Đã thanh toán
Chưa thanh toán khách trả tiền mặt Đã thanh toán
Đang chờ tiền về PayOS báo tiền về Đã thanh toán
Đang chờ tiền về quá hạn hoặc huỷ Thanh toán hỏng
Đã thanh toán duyệt trả hàng Đã hoàn tiền

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”.

Hoàn tiền thành công Đang chờ Thất bại

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:

Đang dùng được quản lý tắt Đã tắt
Đã tắt quản lý bật lại Đang dùng được

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.

Phần 5

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.

LUẬT 1

🚪 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.

LUẬT 2

🎯 Đú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.

LUẬT 3

🔐 Đơ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.

LUẬT 4

🔁 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.

Phần 6

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.