xforge · tài liệu FE

FE: module tax — thuế #

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ì: thuế hiện thẳng trong giỏ / chốt đơn (lines[].taxRate, taxInclusive, tax; totals.taxTotal).

Mô hình #

nhóm thuế (code, name, isDefault)         vd STANDARD, REDUCED, EXEMPT
  └─ thuế suất rates[]: rate (%), inclusive, [effectiveFrom, effectiveTo)
sản phẩm → một nhóm (không gán = nhóm mặc định của store)

Thuế của một dòng vào một ngày: nhóm gán riêng → nhóm mặc định → không thuế. Không có thuế suất hiệu lực vào ngày đó = 0%. "Ngày" là ngày theo giờ store. Đơn đã đặt giữ bản chụp: sửa thuế suất không đổi đơn cũ.

CMS / admin #

Menu: key tax.classes (quyền tax.read).

ViệcMethodQuyền
Danh sách nhómlistTaxClasses({ query })tax.read
PickerlistTaxClassOptions({ query }) → { id, code, name, active }tax.read
Chi tiếtgetTaxClass({ params: { id } })tax.read
TạocreateTaxClass({ body })tax.create
Sửa một phần / thay hếtupdateTaxClass / replaceTaxClasstax.update
Xoá (vào thùng rác)deleteTaxClass({ params: { id } })tax.delete
Thùng rác / khôi phụclistTaxClassTrash / restoreTaxClasstax.restore
Xoá vĩnh viễndeleteTaxClass({ params: { id }, query: { force: "true" } })tax.delete + tax.hard_delete
Thuế suất của nhómlistTaxRates({ params: { id } })tax.read
Thêm / thay / xoá thuế suấtcreateTaxRate / replaceTaxRate / deleteTaxRatetax.update
Nhóm của một sản phẩmgetProductTaxClass({ params: { productId } })tax.read
Gán nhóm cho sản phẩmsetProductTaxClass({ params: { productId }, body: { taxClassId } })tax.update

Lỗi cần xử lý #

codeStatusFE nên
tax_not_found404nhóm không có / đã vào thùng rác: tải lại picker
tax_code_exists409báo ở ô code
tax_default_exists409store đã có nhóm mặc định: bỏ isDefault của nhóm đó trước
tax_rate_not_found404tải lại danh sách thuế suất
tax_rate_period_invalid400effectiveTo phải sau effectiveFrom
tax_rate_overlaps409details.rateId = dòng bị chồng: tô dòng đó, sửa khoảng ngày
tax_product_invalid400sản phẩm không có trong store / đã vào thùng rác
Nguồn: xforge-modules: modules/pricing/tax/FE.md