Skip to content

PRD: Bộ máy định giá Fare & Thuế

ModuleĐịnh giáPRD IDPRD-FARE-001
Trạng tháiSẵn sàng devFEATFARE
EpicPlaneBANA-1513
Ngày2026-06-05Phiên bảnv1.0
Gói@nx/pricingURDFARE
SurfaceBackendClient · Chủ/QL
Phụ tráchPhát Nguyễn

Bộ máy định giá Fare & Thuế là gì

Mỗi biến thể sản phẩm có một fare set (Fare Set) - nơi chứa giá gốc và các fare con có điều kiện; hệ thống tự tạo fare set + giá gốc ngay khi biến thể xuất hiện, nên biến thể nào cũng định giá được ngay. Chủ merchant đặt một fare cha theo một trong hai chiến lược - OVERRIDE (luôn ghi đè) hoặc SALE (cạnh tranh như một mức giảm) - rồi thêm các fare con mang giá riêng và quy tắc điều kiện (số lượng, khung giờ...). Bộ máy chọn fare thắng theo tầng ưu tiên cao nhất trước; trong tầng đó một fare OVERRIDE luôn thắng SALE, còn giữa các fare hợp lệ cùng loại thì giá thấp nhất thắng; không có fare con nào hợp lệ thì quay về giá gốc.

Song song đó, chủ merchant gắn thuế (Tax) phần trăm, cố định hoặc theo đơn vị vào một tax set (Tax Set) của biến thể, chọn inclusive (gộp trong giá) hay exclusive (cộng thêm), và thuế có thể lũy tiến chồng lên thuế trước theo thứ tự ưu tiên. Khi thanh toán, luồng bán hàng gọi một mô phỏng định giá duy nhất; kết quả là một pricing snapshot bất biến - phân rã fare và thuế theo từng dòng cộng tổng đơn hàng - để việc định giá luôn nhất quán và truy vết được. Một dòng không có cấu hình thuế vẫn định giá được, chỉ là thuế bằng 0 - không bao giờ bị chặn vì thiếu cấu hình.

Vì sao cần một bộ máy duy nhất

Trước đây giá bị gắn cứng trên sản phẩm hoặc tính tùy hứng khi thanh toán - không có chỗ thống nhất nào cho thuế, giá theo quy tắc, hay một bảng phân rã truy vết được. Chủ merchant cần một bộ máy duy nhất chọn đúng fare cho từng biến thể, tính thuế chính xác (inclusive/exclusive, lũy tiến, cấp dòng hàng), và trả về một kết quả định giá nhất quán mà luồng bán hàng dùng lại khi thanh toán thay vì tự viết lại logic định giá. Đó là nền tảng cho việc báo cáo giá vốn, thuế và biên lợi nhuận đáng tin cho bài toán sổ sách HKD/SME mà BANA hướng tới.

Bộ máy đặt việc chọn fare và tính thuế trên nền danh mục biến thể sản phẩm, giới hạn mọi bản ghi trong merchant của chính người dùng, và mở một mô phỏng định giá cho luồng bán hàng dùng.

Một ví dụ từ đầu tới cuối

Biến thể "Áo thun trắng" có giá gốc 100.000đ. Chủ merchant thêm một fare cha SALE với một fare con giá 80.000đ, mang quy tắc "số lượng mua từ 10 trở lên". Tax set của biến thể này gắn một thuế VAT 10%, chưa gộp.

BướcViệc xảy raKết quả
Khách mua 12 áoBộ máy đánh giá quy tắc số lượng: 12 ≥ 10, fare con hợp lệFare con 80.000đ thắng, không phải giá gốc 100.000đ
Tính thuế trên đơn giá đã chọnVAT 10% chưa gộp, cộng thêm lên trênThuế một áo = 80.000 × 10% = 8.000đ
Mô phỏng định giá trả về ảnh chụp dòng12 áo, đơn giá 80.000đsubtotal 960.000đ, thuế 96.000đ, total 1.056.000đ
Khách mua 5 áo (một đơn khác)Quy tắc số lượng sai (5 < 10), fare con bị loạiBộ máy quay về giá gốc 100.000đ/áo, không báo lỗi

Chỗ dễ sai nhất

Giá gốc cũng cạnh tranh theo tầng ưu tiên của chính nó

Giá gốc không tự động thua một fare con nằm chung tầng ưu tiên. Giá gốc mặc định đứng ở mức ưu tiên 0; một fare con cũng đặt ưu tiên 0 phải so giá sòng phẳng với giá gốc như hai đối thủ ngang hàng, không phải cứ có fare con là fare con thắng.

Ngược lại, khi một fare OVERRIDE hợp lệ có mặt trong tầng ưu tiên đang thắng, nó thắng ngay lập tức, không so giá với bất kỳ ai trong tầng đó - kể cả một fare SALE rẻ hơn.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.