FE: module uom — đơn vị tính #
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.
Từ điển đơn vị của store (cái, hộp, kg…). Hệ số quy đổi (1 thùng = 24 lon) KHÔNG
ở đây: nó thuộc từng sản phẩm (uoms[].factor, xem FE của product). Quy ước
field dịch được (name): phần chung §3.3.
CMS / admin (XforgeClient) #
Menu: key uom.uoms (quyền uom.read).
| Việc | Method | Quyền |
|---|---|---|
| Danh sách | listUoms({ query }) | uom.read |
| Picker | listUomOptions({ query }) → { id, code, category, symbol, allowFraction } + tên | uom.read |
| Chi tiết | getUom({ params: { id } }) | uom.read |
| Tạo | createUom({ body }) | uom.create |
| Cài bộ đơn vị nền | installBaselineUoms() | uom.create |
| Sửa một phần / thay hết | updateUom / replaceUom — KHÔNG đổi tên | uom.update |
| Đổi tên | setUomTranslations({ params: { id }, body: { translations } }) | uom.update |
| Xoá (vào thùng rác) | deleteUom({ params: { id } }) | uom.delete |
| Thùng rác / khôi phục | listUomTrash / restoreUom | uom.restore |
| Xoá vĩnh viễn | deleteUom({ params: { id }, query: { force: "true" } }) | uom.delete + uom.hard_delete |
- Danh sách: lọc
category,active;qtìm theo mã và mọi tên đã dịch; sắp mặc địnhcode. - Form:
code≤ 30 ký tự chữ, số,_-, duy nhất trong store.categorytrongcount,weight,volume,length,area,time,service,digital,energy.symbol≤ 10 ký tự.allowFraction: số lượng có được lẻ không (kg: có; cái: không) — form nhập số lượng dùng nó để chọn bàn phím / bước nhảy. - Tên:
createUomnhậntranslationsban đầu; sau đó CHỈ đổi quasetUomTranslations, gửi cả bộ (ngôn ngữ vắng bị xoá). Picker / danh sách cólangnametheo ngôn ngữ request; chưa có bản dịch thìname: null: hiệncode.
- Bộ nền: store mới đã có sẵn (pcs, box, pack, carton, kg, g, l, ml, m, m2, min,
hour, day, session).
installBaselineUomsthêm lại phần còn thiếu, an toàn khi gọi nhiều lần:{ created, skipped }; mã đã có (cả trong thùng rác) giữ nguyên. - Xoá đơn vị sản phẩm còn dùng → 409
product_uom_in_use(của moduleproduct).
Lỗi cần xử lý #
code | Status | FE nên |
|---|---|---|
uom_not_found | 404 | trang 404 / đã vào thùng rác |
uom_code_exists | 409 | báo ở ô code (cả khi khôi phục mà mã đã bị lấy) |
unsupported_language | 400 | details.allowed: bỏ ngôn ngữ store không hỗ trợ |
product_uom_in_use | 409 | đơn vị còn được sản phẩm dùng: đổi đơn vị trước khi xoá |
Màn hình dựng sẵn #
listMenu() → mục uom.uoms có screen (type: "crud"): CMS chung vẽ được từ
getMenuScreen({ params: { key: "uom.uoms" } }) mà không cần code riêng (tài
liệu FE của Core: cms.md §3.1). Có: danh sách (mã, tên, ký hiệu, nhóm, số lẻ,
đang dùng; tìm; lọc trạng thái / nhóm), form tạo (kèm bản dịch) / sửa, xoá,
thùng rác + khôi phục.
KHÔNG có: sửa bản dịch của đơn vị đã tạo — đi qua setUomTranslations (route
riêng, màn hình chung chỉ gửi một body); installBaselineUoms (thao tác cấp
danh sách); xoá vĩnh viễn.