FE: module customer_type_price_rule — giá theo loại khách #
Phần chung (khởi tạo client, lỗi, danh sách, ngôn ngữ) ở tài liệu FE của Core:
docs/fe/common.md (bản đọc: xforge-documentation, ADR-0102 của xforge-core).
Sửa file này CÙNG PR khi đổi hành vi FE thấy được của module.
Chỉ có ở CMS (XforgeClient). Storefront không gọi gì: giá hiện thẳng trong giỏ
/ chốt đơn (lines[].unitPrice, priceSource: "customer_type").
Menu: key customer_type_price_rule.customer_type_price_rules (quyền
customer_type_price_rule.read).
Luật #
Route CRUD chuẩn, không thùng rác: listCustomerTypePriceRules,
getCustomerTypePriceRule, createCustomerTypePriceRule,
updateCustomerTypePriceRule, deleteCustomerTypePriceRule,
listCustomerTypePriceRuleOptions. Lọc customer_type_id, price_list_id,
active.
| Field | Ghi chú |
|---|---|
customerTypeId | Chỉ đặt lúc tạo; loại của store (customer_type) |
priceListId | Chỉ đặt lúc tạo; bảng giá của store. Mỗi (loại, bảng) một luật (409 customer_type_price_rule_exists) |
discountPct | Chuỗi, (0, 100], ≤ 2 chữ số lẻ; giảm thêm trên giá của bảng; null = không |
startsAt | endsAt — ISO UTC; null = không giới hạn; endsAt sau startsAt |
Loại / bảng không thuộc store → 404 customer_type_price_rule_ref_not_found.
Giá nào được dùng #
Khách đã gán loại (setCustomerType của customer_type) nhận giá của bảng
trong luật, trừ discountPct, làm tròn theo tiền tệ. Luật BỎ QUA audience của
bảng (luật chính là "ai được") nhưng vẫn theo tiền tệ, kênh, thời gian của bảng.
Dòng giỏ nhận giá thấp nhất giữa catalog, các bảng giá và các luật. Loại đang
tắt / trong thùng rác, luật tắt / ngoài thời gian → không áp. Gợi ý: bảng giá
chỉ dùng cho luật nên đặt audience: "customers" và không gán khách, để nó
không áp cho mọi người.
Màn hình dựng sẵn #
listMenu() → mục customer_type_price_rule.customer_type_price_rules có
screen (type: "crud"): CMS chung vẽ được từ
getMenuScreen({ params: { key: "customer_type_price_rule.customer_type_price_rules" } })
mà không cần code riêng (tài liệu FE của Core: cms.md §3.1). Có: danh sách
(loại khách, bảng giá, % giảm, hiệu lực; lọc theo loại khách / bảng giá / trạng
thái), form (loại khách + bảng giá chọn lúc tạo, chỉ cái đang hoạt động; sửa
được % giảm, hiệu lực, trạng thái, ghi chú), xoá.
Quyền ngoài module mà màn hình dùng (thiếu thì CMS ẩn / rơi về ô nhập thường):
- Hai ô bắt buộc lúc tạo: loại khách (
customer_type.read) và bảng giá (price_list.read).