# Material Label Issue — sinh, in, in lại và huỷ tem nguyên vật liệu theo chứng từ nguồn

> Fine Chemical (FC) · Module WMS · v1.0 · 23/09/2026 · Flow chuẩn — dùng để triển khai, kiểm thử và phát triển
>
> File sinh tự động từ sơ đồ bởi `sync.js` — đừng sửa tay. Hình là chuẩn: thấy mâu thuẫn với trang hình thì báo lại.
>
> Trang hình: /wms/material-label-issue

## Cách đọc

- Mỗi hộp trên sơ đồ có một mã `Bxx`, đánh theo thứ tự đi của luồng (từ điểm bắt đầu, theo mũi tên).
- "Đi tới" liệt kê mọi mũi tên ra khỏi hộp; chữ trong ngoặc vuông là nhãn điều kiện của mũi tên đó.
- "Nhánh tuỳ chọn" = mũi tên nét đứt trên sơ đồ: làm cũng được, bỏ qua cũng được.
- Hộp loại "Dữ liệu" ở lane Input là dữ liệu đi vào, ở lane Output là kết quả / điểm kết thúc của luồng.

## Process Flow (swimlane)

### Vai trò (lane)

- Input
- Warehouse Staff
- Warehouse Manager · QA
- Output

### Các bước

| Mã | Vai trò | Loại | Nội dung | Nền tảng · Màn hình | Đi tới |
| --- | --- | --- | --- | --- | --- |
| B01 | Input | Dữ liệu | Material receipt (GRN) · PO (module Purchasing) |  | B08 |
| B02 | Input | Dữ liệu | Production output (nguyên liệu dư từ sản xuất) |  | B08 |
| B03 | Input | Dữ liệu | Chứng từ Return / re-pack |  | B08 |
| B04 | Input | Dữ liệu | Master data: Item (package size) · Supplier Printer · Label stock | Master data | B09 |
| B05 | Input | Dữ liệu | Label register (tem đã sinh) |  | B26; B39 |
| B06 | Warehouse Staff | Bắt đầu | Start |  | B07 |
| B07 | Warehouse Staff | Bước | Chọn Source type Material receipt · Production output · Return / re-pack | Web · Material Label Issue | B08 |
| B08 | Warehouse Staff | Bước | Chọn chứng từ nguồn (chỉ chứng từ còn Outstanding) → nạp header + dòng | Web · Material Label Issue | B09 |
| B09 | Warehouse Staff | Bước | Chọn Remainder rule (mặc định Last label carries remainder) nhập Qty to label · Qty / label từng dòng (bulk: All remaining, Qty / label = package size) | Web · Material Label Issue | B10 |
| B10 | Warehouse Staff | Điểm quyết định | Các dòng hợp lệ? |  | B11 [Không]; B12 [Hợp lệ] |
| B11 | Warehouse Staff | Bước | Báo lỗi ngay tại dòng: vượt Outstanding còn lại Qty / label > Qty to label không chia hết (rule Block) → khoá Save as draft · Generate | System (auto) · Material Label Issue | B09 |
| B12 | Warehouse Staff | Bước | Tính số tem mỗi dòng: Qty to label ÷ Qty / label làm tròn lên, tem cuối mang phần dư | System (auto) · Material Label Issue | B13 |
| B13 | Warehouse Staff | Điểm quyết định | Chọn action? |  | B14 [Save as draft]; B15 [Generate] |
| B14 | Output | Dữ liệu | Bản nháp (Save as draft) chưa sinh tem |  | (kết thúc) |
| B15 | Warehouse Staff | Bước | Kiểm lại Outstanding + sinh tem → ISSUED, số tem không tái dùng + ghi Labelled lũy kế về dòng nguồn — một giao dịch, vượt Outstanding thì không sinh tem | System (auto) · Material Label Issue | B16; B17 |
| B16 | Output | Dữ liệu | Dòng nguồn: Labelled lũy kế → Outstanding cho lần sau |  | (kết thúc) |
| B17 | Warehouse Staff | Điểm quyết định | Generate & print? |  | B18 [Không]; B19 [Có] |
| B18 | Output | Dữ liệu | Tem ISSUED chưa in in sau ở Label inquiry |  | (kết thúc) |
| B19 | Warehouse Staff | Bước | Print labels: Printer · Copies Label stock · Start at position → Send to printer | Web · Material Label Issue | B20 |
| B20 | Warehouse Staff | Điểm quyết định | Máy in in được? |  | B21 [Không (máy in lỗi)]; B22 [In được] |
| B21 | Output | Dữ liệu | Tem giữ ISSUED Prints không tăng |  | (kết thúc) |
| B22 | Warehouse Staff | Bước | Tem ISSUED → PRINTED Prints + 1 · ghi audit trail | System (auto) · Material Label Issue | B23; B24 |
| B23 | Output | Dữ liệu | Tem PRINTED dán lên hàng |  | (kết thúc) |
| B24 | Warehouse Staff | Bước | Quét tem vào Slip nhập kho tem PRINTED → CONSUMED | System (auto) · Inbound | B25 |
| B25 | Output | Dữ liệu | Tem CONSUMED không Cancel được nữa |  | (kết thúc) |
| B26 | Warehouse Staff | Bắt đầu | Start |  | B27 |
| B27 | Warehouse Staff | Bước | Label inquiry: tìm tem Label no. / barcode · Lot PO / GRN · Status · Warehouse | Web · Material Label Issue | B28 |
| B28 | Warehouse Staff | Điểm quyết định | Tem đang? |  | B29 [Đã in / huỷ / dùng]; B30 [ISSUED] |
| B29 | Warehouse Staff | Bước | Reprint: chọn một / nhiều tem + Reprint reason chung (bắt buộc) → Send to printer | Web · Material Label Issue | B31 |
| B30 | Warehouse Staff | Bước | Print: chọn một / nhiều tem ISSUED, chọn Printer (không cần Reprint reason) | Web · Material Label Issue | B32 |
| B31 | Warehouse Staff | Điểm quyết định | In thành công? |  | B33 [Không]; B34 [Có] |
| B32 | Warehouse Staff | Điểm quyết định | In thành công? |  | B35 [Không]; B36 [Có] |
| B33 | Output | Dữ liệu | Reprint lỗi — Prints và audit không đổi |  | (kết thúc) |
| B34 | Warehouse Staff | Bước | Giữ số tem, trạng thái không đổi · Prints + 1 ghi audit trail từng tem | System (auto) · Material Label Issue | B37 |
| B35 | Output | Dữ liệu | Tem giữ ISSUED (in lỗi) Prints không tăng |  | (kết thúc) |
| B36 | Warehouse Staff | Bước | Tem ISSUED → PRINTED Prints + 1 · ghi audit trail | System (auto) · Material Label Issue | B38 |
| B37 | Output | Dữ liệu | Tem in lại cùng số tem |  | (kết thúc) |
| B38 | Output | Dữ liệu | Tem PRINTED (in lần đầu) dán lên hàng |  | (kết thúc) |
| B39 | Warehouse Manager · QA | Bắt đầu | Start |  | B40 |
| B40 | Warehouse Manager · QA | Bước | Label inquiry: tìm tem cần huỷ (nút Cancel label chỉ hiện với Manager · QA) | Web · Material Label Issue | B41 |
| B41 | Warehouse Manager · QA | Điểm quyết định | Tem đang ISSUED / PRINTED? |  | B42 [Không]; B43 [Có] |
| B42 | Output | Dữ liệu | Chặn huỷ — tem CONSUMED / CANCELLED giữ nguyên |  | (kết thúc) |
| B43 | Warehouse Manager · QA | Bước | Cancel label: chọn lý do + Remark · xác nhận đã huỷ tem vật lý (bắt buộc) | Web · Material Label Issue | B44 |
| B44 | Warehouse Manager · QA | Điểm quyết định | Xác nhận Cancel label? |  | B45 [Keep label]; B46 [Cancel label] |
| B45 | Output | Dữ liệu | Keep label tem giữ nguyên trạng thái |  | (kết thúc) |
| B46 | Warehouse Manager · QA | Bước | Tem → CANCELLED Qty trả lại Outstanding dòng nguồn · ghi audit trail | System (auto) · Material Label Issue | B47 |
| B47 | Output | Dữ liệu | Tem CANCELLED Outstanding dòng nguồn tăng lại |  | (kết thúc) |

### Chi tiết từng bước (nội dung hover trên sơ đồ)

#### B10 · Các dòng hợp lệ?

- Warehouse Staff
- Đến từ: B09
- Đi tới [Không]: B11 · Báo lỗi ngay tại dòng: vượt Outstanding còn lại Qty / label > Qty to label không chia hết (rule Block) → khoá Save as draft · Generate
- Đi tới [Hợp lệ]: B12 · Tính số tem mỗi dòng: Qty to label ÷ Qty / label làm tròn lên, tem cuối mang phần dư

#### B13 · Chọn action?

- Warehouse Staff
- Đến từ: B12
- Đi tới [Save as draft]: B14 · Bản nháp (Save as draft) chưa sinh tem
- Đi tới [Generate]: B15 · Kiểm lại Outstanding + sinh tem → ISSUED, số tem không tái dùng + ghi Labelled lũy kế về dòng nguồn — một giao dịch, vượt Outstanding thì không sinh tem

#### B17 · Generate & print?

- Warehouse Staff
- Đến từ: B15
- Đi tới [Không]: B18 · Tem ISSUED chưa in in sau ở Label inquiry
- Đi tới [Có]: B19 · Print labels: Printer · Copies Label stock · Start at position → Send to printer

#### B20 · Máy in in được?

- Warehouse Staff
- Đến từ: B19
- Đi tới [Không (máy in lỗi)]: B21 · Tem giữ ISSUED Prints không tăng
- Đi tới [In được]: B22 · Tem ISSUED → PRINTED Prints + 1 · ghi audit trail

#### B28 · Tem đang?

- Warehouse Staff
- Đến từ: B27
- Đi tới [Đã in / huỷ / dùng]: B29 · Reprint: chọn một / nhiều tem + Reprint reason chung (bắt buộc) → Send to printer
- Đi tới [ISSUED]: B30 · Print: chọn một / nhiều tem ISSUED, chọn Printer (không cần Reprint reason)

#### B31 · In thành công?

- Warehouse Staff
- Đến từ: B29
- Đi tới [Không]: B33 · Reprint lỗi — Prints và audit không đổi
- Đi tới [Có]: B34 · Giữ số tem, trạng thái không đổi · Prints + 1 ghi audit trail từng tem

#### B32 · In thành công?

- Warehouse Staff
- Đến từ: B30
- Đi tới [Không]: B35 · Tem giữ ISSUED (in lỗi) Prints không tăng
- Đi tới [Có]: B36 · Tem ISSUED → PRINTED Prints + 1 · ghi audit trail

#### B41 · Tem đang ISSUED / PRINTED?

- Warehouse Manager · QA
- Đến từ: B40
- Đi tới [Không]: B42 · Chặn huỷ — tem CONSUMED / CANCELLED giữ nguyên
- Đi tới [Có]: B43 · Cancel label: chọn lý do + Remark · xác nhận đã huỷ tem vật lý (bắt buộc)

#### B44 · Xác nhận Cancel label?

- Warehouse Manager · QA
- Đến từ: B43
- Đi tới [Keep label]: B45 · Keep label tem giữ nguyên trạng thái
- Đi tới [Cancel label]: B46 · Tem → CANCELLED Qty trả lại Outstanding dòng nguồn · ghi audit trail

## Vòng đời trạng thái

#### Material label (tem nguyên vật liệu)

`ISSUED` → `PRINTED` → `CONSUMED` → `CANCELLED`

Bước chuyển:

- `ISSUED` -- Send to printer · Print lần đầu --> `PRINTED`
- `PRINTED` -- Quét vào Slip nhập kho (auto) --> `CONSUMED`
- `PRINTED` -- Cancel label — tem đã in --> `CANCELLED` (quay lại)
- `ISSUED` -- Cancel label — tem chưa in --> `CANCELLED` (quay lại)

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Material receipt (GRN) · PO — module Purchasing | Chứng từ nguồn | Chọn chứng từ nguồn |
| I-2 | Production output — nguyên liệu dư từ sản xuất | Chứng từ nguồn | Chọn chứng từ nguồn |
| I-3 | Chứng từ Return / re-pack | Chứng từ nguồn | Chọn chứng từ nguồn |
| I-4 | Item (package size) · Supplier · Printer · Label stock | Master data | Nhập Qty to label · Qty / label; Print labels |
| I-5 | Label register — tem đã sinh | Dữ liệu của chính màn này | Label inquiry: tìm tem |

## Bước ↔ màn hình thực hiện

| Bước | Vai trò | Màn hình |
| --- | --- | --- |
| Chọn Source type · chọn chứng từ nguồn (đổi chứng từ khi đã nhập số lượng thì phải xác nhận, số lượng đã nhập bị xoá) | Warehouse Staff (Warehouse Officer / Receiving Clerk) | Material Label Issue · Web |
| Chọn Remainder rule (mặc định Last label carries remainder) · nhập Qty to label · Qty / label từng dòng; dòng Fully labelled bị khoá ô số lượng | Warehouse Staff | Material Label Issue · Web |
| Kiểm dòng (CR-10: Qty to label ≤ Outstanding · Qty / label ≤ Qty to label · rule Block phải chia hết) · tính số tem (CR-09) | System (auto) | Material Label Issue |
| Save as draft · Generate labels · Generate & print | Warehouse Staff | Material Label Issue · Web |
| Kiểm lại Outstanding + sinh tem ISSUED + ghi Labelled lũy kế về dòng nguồn — một giao dịch; vượt Outstanding hoặc lỗi thì không sinh tem nào | System (auto) | Material Label Issue |
| Print labels (Printer · Copies · Label stock · Start at position) → tem PRINTED, Prints + 1 | Warehouse Staff | Material Label Issue · Web |
| Quét tem vào Slip nhập kho → tem CONSUMED | System (auto) | Inbound |
| Label inquiry · Print lần đầu (một / nhiều tem ISSUED, không cần Reprint reason) → tem PRINTED, Prints + 1 | Warehouse Staff | Material Label Issue · Web |
| Label inquiry · Reprint (một / nhiều tem PRINTED / CANCELLED / CONSUMED, một Reprint reason chung bắt buộc) — giữ số tem, trạng thái không đổi, Prints + 1; in thành công mới ghi audit trail cho từng tem | Warehouse Staff | Material Label Issue · Web |
| Label inquiry · Cancel label (bắt buộc lý do + xác nhận đã huỷ tem vật lý; chứng từ nguồn bị đảo thì huỷ với lý do Receipt reversed) — không phải bước duyệt: nút Cancel label chỉ hiện với Manager · QA | Warehouse Manager · QA (Warehouse Supervisor / QA) | Material Label Issue · Web |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Bản nháp (Save as draft), chưa sinh tem | Chọn Save as draft |
| O-2 | Dòng nguồn: Labelled lũy kế → Outstanding cho lần sau | Sinh tem thành công |
| O-3 | Tem = `ISSUED` chưa in, in sau ở Label inquiry | Chọn Generate labels (không in ngay) |
| O-4 | Tem giữ `ISSUED`, Prints không tăng | Máy in không in được |
| O-5 | Tem = `PRINTED` dán lên hàng | In thành công |
| O-6 | Tem = `CONSUMED`, không Cancel được nữa | Tem được quét vào Slip nhập kho |
| O-7 | Reprint lỗi — Prints và audit không đổi | Máy in không in được khi Reprint |
| O-8 | Tem in lại, cùng số tem | Reprint thành công |
| O-9 | Tem giữ `ISSUED` (in lỗi), Prints không tăng | Máy in không in được khi in lần đầu |
| O-10 | Tem = `PRINTED` (in lần đầu) dán lên hàng | Print tem `ISSUED` thành công |
| O-11 | Chặn huỷ — tem `CONSUMED` / `CANCELLED` giữ nguyên | Tem đã được quét nhập kho, hoặc đã huỷ trước đó |
| O-12 | Keep label — tem giữ nguyên trạng thái | Người huỷ chọn Keep label |
| O-13 | Tem = `CANCELLED`; Outstanding dòng nguồn tăng lại | Cancel label đủ lý do + xác nhận huỷ tem vật lý |
