Giao diện
Phân bổ sơ chế
Ai dùngQuản trị viên Quản lý Quản lý thu mua Nhân viên kho Nhân viên phân bổ & QC
Chia dừa đã khoan của từng xe cho các đơn vị gia công hoặc nhà máy GCF, theo ngày. Dịch vụ: processing-allocation-service. Quyền: processing-allocations:read|write|delete.
Ngày phân bổ
| Mã | Yêu cầu |
|---|---|
| FR-ALC-1 | Khi một kế hoạch thu mua dừa trái được tạo, hệ thống phải mở 7 ngày phân bổ từ ngày đầu tuần của kế hoạch (người tạo system). Mở trùng không lỗi. |
| FR-ALC-2 | Khi kế hoạch bị xoá, hệ thống chỉ đóng những ngày do system mở mà chưa có thẻ xe và chưa có dòng nào có ngày sơ chế là ngày đó. |
| FR-ALC-3 | Mỗi ngày chỉ có một ngày phân bổ (ALLOCATION_DAY_EXISTS). Không được xoá ngày còn thẻ có # Xe, có dòng, hoặc có dòng sơ chế vào ngày đó (ALLOCATION_DAY_NOT_EMPTY). |
| FR-ALC-4 | Danh sách ngày cho biết số thẻ xe của từng ngày, ngày mới nhất trước. |
Phiếu chờ phân bổ
| Mã | Yêu cầu |
|---|---|
| FR-ALC-5 | Phiếu chờ của ngày D: phiếu mua dừa chưa có thẻ ở bất kỳ ngày nào, có ngày giao D − 1 hoặc D. Phiếu D − 1 xếp trước. |
| FR-ALC-6 | Portal phải đánh dấu phiếu D − 1 là bắt buộc và hiện số bắt buộc còn lại; ngày phân bổ xong khi số này về 0. Backend không chặn việc bỏ sót. |
| FR-ALC-7 | Một phiếu chỉ có một thẻ trên toàn hệ thống. Đưa phiếu đã ở ngày khác: RECEIVING_TICKET_ALLOCATED_ELSEWHERE; phiếu không thuộc ngày: RECEIVING_TICKET_WRONG_DAY. |
| FR-ALC-8 | Thẻ giữ ngày phân bổ đã chọn kể cả khi sau đó ngày giao của phiếu bị sửa. |
| FR-ALC-9 | Phiếu mua dừa bị xoá thì thẻ của nó bị xoá và các # Xe lớn hơn dồn xuống một số. |
# Xe
| Mã | Yêu cầu |
|---|---|
| FR-ALC-10 | # Xe là số nguyên ≥ 1, duy nhất trong ngày, cấp liên tục từ 1 không để trống. |
| FR-ALC-11 | Đưa vào từng phiếu một: thẻ nhận ngay # Xe nhỏ nhất còn trống. Server luôn đánh # Xe cho thẻ mới đưa vào, theo thứ tự gửi; không thẻ mới nào chờ chưa có # Xe. Thẻ đã có # Xe chỉ đổi số với thẻ khác, không bỏ số được (VEHICLE_NO_OUT_OF_ORDER). |
| FR-ALC-12 | Thẻ chưa có số chỉ nhận được đúng số trống nhỏ nhất (VEHICLE_NO_OUT_OF_ORDER); số đã có người giữ: VEHICLE_NO_IN_USE. |
| FR-ALC-13 | Thẻ đã có số chọn số của thẻ khác thì hai thẻ đổi số cho nhau. Thẻ đã có số không được bỏ số. |
| FR-ALC-14 | Phải có # Xe trước khi thẻ có dòng phân bổ, kể cả dòng Khoan nội bộ tự sinh (FR-ALC-25). Server từ chối lưu dòng lên thẻ chưa có # Xe (VEHICLE_NO_REQUIRED). Portal: bấm + trên thẻ chưa có # Xe (chỉ còn ở dữ liệu cũ) thì báo chọn # Xe trước. |
Dòng phân bổ
Mỗi dòng: đơn vị, Loại gia công (sản phẩm), Lồng, KL dừa đã khoan, Biển số xe, ngày sơ chế.
| Mã | Yêu cầu |
|---|---|
| FR-ALC-15 | Lưu thẻ gửi toàn bộ dòng của thẻ kèm expectedVersion. Dòng không gửi bị xoá. Dòng được nhận diện theo (đơn vị, loại gia công, ngày sơ chế) và giữ nguyên id khi sửa. |
| FR-ALC-16 | Đơn vị phải có vai trò đối tác gia công đang hoạt động hoặc là nhà máy (PROCESSING_VENDOR_INVALID). Đơn vị đã ngừng chỉ dùng được nếu đã có dòng trong ngày đó (PROCESSING_VENDOR_RETIRED). |
| FR-ALC-17 | Mỗi dòng phải có loại gia công (PROCESSING_PRODUCT_REQUIRED). Một thẻ không được có hai dòng cùng (đơn vị, loại gia công, ngày sơ chế) (PROCESSING_VENDOR_REPEATED). |
| FR-ALC-18 | Lồng từ 0 đến 20 (CAGE_COUNT_OUT_OF_RANGE). KL dừa đã khoan ≥ 0, 2 chữ số thập phân. Biển số xe ≤ 32 ký tự. |
| FR-ALC-19 | Mỗi dòng lưu bản chụp hệ số hao hụt của loại gia công lúc lưu: hệ số khoan nội bộ hoặc khoan ngoài theo quy trình của phiếu. |
| FR-ALC-20 | Mỗi dòng có Ước tính = KL dừa mua vào × KL dòng ÷ Tổng phân phối, làm tròn 2 chữ số. |
| FR-ALC-21 | Portal phải tự lưu thẻ (không có nút Lưu), chờ người dùng ngừng gõ, không định dạng lại số dưới con trỏ. Dấu thập phân là dấu phẩy. |
Lấy khối lượng từ cân xe
| Mã | Yêu cầu |
|---|---|
| FR-ALC-22 | Bản ghi gợi ý cho một dòng: chiều Xuất, khách hàng là đơn vị của dòng, đã cân hai lần, có lần cân trong khoảng từ 00:00 ngày D − 1 đến hết ngày D (ICT). Bản ghi đã gắn nơi khác vẫn hiện, kèm nơi đã gắn. |
| FR-ALC-23 | Dòng gắn được nhiều bản ghi. Khi đã gắn, KL dừa đã khoan = Σ |lần cân 2 − lần cân 1| và khoá; giá trị gõ tay bị bỏ qua. |
| FR-ALC-24 | Một bản ghi chỉ gắn được cho một dòng trên toàn hệ thống (SCALE_RECORD_INVALID, SCALE_RECORD_REPEATED). Lưu thẻ phải từ chối bản ghi không đúng điều kiện gợi ý ở FR-ALC-22 (chiều Xuất, khách hàng là đơn vị của dòng, thời gian cân): SCALE_RECORD_INVALID. |
Khoan nội bộ và sơ chế nhiều ngày
| Mã | Yêu cầu |
|---|---|
| FR-ALC-25 | Phiếu Khoan nội bộ trong ngày D tự có một dòng khi thẻ có # Xe (đưa vào có số thì có ngay; đưa vào chưa có số thì có lúc chọn # Xe): đơn vị là nhà máy, loại gia công là Loại gia công mặc định, KL = KL dừa đã khoan của phiếu (để trống khi phiếu chưa có KL dừa đã khoan, tự điền khi có), ngày sơ chế D. Dòng để trống không được tính là 0 ở tổng, Tổng hợp hay Biên bản; KL dừa đã khoan trống hiện —. Thiếu nhà máy: FACTORY_VENDOR_MISSING; thiếu loại mặc định: DEFAULT_PROCESSING_PRODUCT_MISSING. |
| FR-ALC-26 | Khi thẻ chỉ có dòng nhà máy, dòng đầu (ngày sơ chế sớm nhất) phải theo KL dừa đã khoan: max(KL đã khoan − Σ dòng các ngày sau, 0). Khi đã thêm đơn vị khác, mọi dòng đều gõ tay. |
| FR-ALC-27 | Chỉ dòng nhà máy của thẻ Khoan nội bộ được có ngày sơ chế khác D (PROCESS_DATE_NOT_ALLOWED), trong khoảng D đến D + 6 (PROCESS_DATE_OUT_OF_RANGE). |
| FR-ALC-28 | Dòng các ngày sau được nhập theo dừa nguyên ước tính; KL dòng = ước tính × KL đã khoan ÷ KL dừa mua vào. Việc chia ngày làm trên phiếu mua dừa ở máy tính, không làm trên điện thoại. |
| FR-ALC-29 | Ngày D + n hiện thẻ ở nhóm Sơ chế tiếp từ ngày trước (thẻ của D − 6 đến D − 1 có dòng sơ chế ngày D), chỉ xem. |
Hao hụt
Tính ở portal, hiện trên đầu thẻ. L = Σ KL các dòng.
| Quy trình | Hao hụt |
|---|---|
| Khoan nội bộ | KL dừa đã khoan − L |
| Khoan ngoài | (IG − RG) − L − Dừa khoan bổ sung − Mẫu 120 trái đã khoan (không trừ mẫu nếu thẻ có dòng nhà máy) |
| Mã | Yêu cầu |
|---|---|
| FR-ALC-30 | Hao hụt hiện — khi thiếu KL của một dòng, thiếu IG hoặc RG, thiếu dừa khoan bổ sung, hoặc (không có dòng nhà máy) thiếu mẫu. |
| FR-ALC-31 | Hao hụt > 60 kg hoặc âm phải hiện màu đỏ và viền đỏ trên thẻ. |
Trả về
| Mã | Yêu cầu |
|---|---|
| FR-ALC-32 | Trả về chỉ được khi thẻ không còn dòng nào, kể cả dòng tự sinh: server từ chối (CARD_HAS_LINES); portal ẩn nút khi thẻ còn dòng. Thẻ về Phiếu chờ phân bổ, mất # Xe và số lô; liên kết cân xe bị xoá; mọi # Xe lớn hơn dồn xuống một số. |
| FR-ALC-33 | Trả về phải kèm expectedVersion; lệch phiên bản: 409 ALLOCATION_STALE. |
| FR-ALC-34 | Hoàn tác trong 7 giây đưa phiếu vào lại với # Xe kế tiếp, không khôi phục số cũ và dòng cũ. |
Sửa đồng thời
| Mã | Yêu cầu |
|---|---|
| FR-ALC-35 | Mỗi thẻ có version, tăng sau mỗi lần ghi, mỗi lần đổi số, và khi phiếu mua dừa đổi số liệu làm thay đổi thẻ: khối lượng dòng Khoan nội bộ tự sinh hoặc KL dừa ước tính của một dòng. Đổi số liệu khác của phiếu (seal, ghi chú…) không tăng version. Lưu với phiên bản cũ: 409 ALLOCATION_STALE. |
| FR-ALC-36 | Nhận 409, portal tải lại thẻ. Nếu chỉ # Xe thay đổi, gửi lại các dòng một lần trên phiên bản mới; nếu không, bỏ thay đổi và báo Phiếu vừa được người khác cập nhật, đã tải lại. |
Lịch sử và xuất file
| Mã | Yêu cầu |
|---|---|
| FR-ALC-37 | Ghi lịch sử các thao tác create, pick, save, return, delete, kèm người, giờ, dữ liệu trước và sau. Lần save cùng người, cùng thẻ trong 5 phút gộp vào dòng gần nhất. Mỗi trang tối đa 100 dòng. |
| FR-ALC-38 | Xuất excel logbook tải allocation-logbook-<ngày>.xlsx gồm 3 sheet Phiếu theo xe, Tổng hợp, Giao gia công, xếp theo # Xe rồi NCC. |
Công thức sheet Tổng hợp:
| Cột | Công thức |
|---|---|
| Dừa nhận (J) | Khoan ngoài: IG − RG; Khoan nội bộ: KL dừa mua vào |
| Chưa khoan (K) | Dừa khoan bổ sung |
| Dạt khoan (L), Dạt chưa khoan (M) | Hư đã khoan, hư chưa khoan |
| Tổng dạt (N) | L + M |
| Nước (O) | Nước tại đối tác khoan |
| Tổng trọc (P) | J + O + N |
| Tỉ lệ (Q) | 1 − O ÷ (P − M − K) |
Sự kiện
| Mã | Yêu cầu |
|---|---|
| FR-ALC-39 | Mọi thay đổi thẻ phải được đánh dấu vào outbox trong cùng giao dịch và phát lên processing-allocation-service:processing_allocations với trạng thái hiện tại của thẻ (ngày, # Xe, dòng, có dòng nhà máy hay không, đã xoá hay chưa). |
| FR-ALC-40 | receiving-ticket-service dùng sự kiện này để tính lại Tổng phân phối, trạng thái, số lô của phiếu (FR-CAL-5, FR-TKT-26). |