xforge · tài liệu FE

FE: module stock_count — kiểm kê #

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; mẫu in: docs/fe/cms.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). Menu: key stock_count.counts (quyền stock_count.read). listStockCounts lọc status, warehouse_id; q tìm số phiếu.

Vòng đời #

open → reconciled (chốt, điều chỉnh tồn) hoặc cancelled. Phiếu chưa chốt xoá được. Chưa chốt thì kho chưa đổi gì.

Mỗi phiếu có actions (danh sách + chi tiết): thao tác người gọi làm được lúc này, đã xét cả trạng thái lẫn quyền (superuser thấy hết). Bật / tắt nút theo đó, đừng tự suy từ status. actions là chuỗi, giá trị lạ thì bỏ qua.

actionsGọiTrạng tháiQuyền
reconcilereconcileStockCountopenstock_count.reconcile
cancelcancelStockCountopenstock_count.create
deletedeleteStockCountopen, cancelledstock_count.delete

Gọi sai trạng thái → 409 stock_count_invalid_status (details.status, details.action): đọc lại phiếu.

Mở phiếu #

createStockCount (quyền stock_count.create): warehouseId, note?, lines: [{ variantId, batchId?, serialId?, uomId?, countedQty }], tối đa 500 dòng. countedQty ≥ 0 (đếm thấy 0 là một kết quả). systemQty là số sổ lúc mở phiếu theo đơn vị gốc, difference = baseCountedQty − systemQty (dương thừa, âm thiếu).

Số liệu chốt theo lúc mở phiếu: mở rồi để lâu mà hàng vẫn ra vào thì chênh lệch không còn đúng. Nên mở phiếu ngay sau khi đếm xong.

Lô / serial. Biết chế độ qua getStockTracking, chọn lô / serial từ listStockBatches / listStockSerials.

Chế độMỗi dòngLỗi
noneTheo biến thể, không gửi lô / serial400 stock_count_ref_not_allowed
batchĐúng một batchId400 stock_count_batch_required; 404 stock_count_batch_not_found
serialĐúng một serialId, đếm 0 / 1, đơn vị gốc400 stock_count_serial_required, stock_count_serial_qty_unit; 409 stock_count_serial_not_countable (details.status)

Lỗi theo dòng (error.at = lines.<i>), ngoài các lỗi trên:

Lỗi của phiếu: 400 stock_count_warehouse_invalid.

Chốt #

reconcileStockCount: mỗi dòng có chênh lệch thành một điều chỉnh kho, cùng transaction; thừa vào phiếu PN-…, thiếu vào phiếu PX-…, mục đích stock_count.

Không có lỗi thiếu hàng. Số đếm là sự thật: chốt được cả khi đẩy tồn xuống dưới phần đã giữ chỗ, hoặc âm. Sau khi chốt, available có thể âm: màn tồn kho nên làm nổi. Nên cảnh báo trước khi chốt nếu có dòng thiếu nhiều.

Serial: đếm 0 chuyển sang damaged, đếm 1 về in_stock. Lỗi của một dòng mang error.at = items.<i>, i là thứ tự dòng trong items của phiếu (không phải body lúc tạo).

Giá vốn #

Phiếu không mang giá vốn; chốt không cần stock.view_cost, và phần hàng thừa vào sổ không có giá vốn.

Mẫu in: stock_count.sheet #

printDocument({ params: { name: "stock_count.sheet", id } }), quyền stock_count.read. Phiếu kiểm kê: lô / serial, số đếm, số sổ, chênh lệch từng dòng; không có giá vốn. Không gửi email. Thiếu quyền, sai id hay phiếu của store khác đều trả 404.

Nguồn: xforge-modules: modules/inventory/stock_count/FE.md