# Curing Confirmation — một ca ép là một lô curing: xác nhận số nhận, in tem lô, đủ ngày thì sẵn sàng cho Trimming

> Fine Chemical (FC) · Module MES · v0.7 · 09/10/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: /mes/curing-confirmation

## 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
- Production Supervisor
- 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 | Sản lượng POP ca theo máy (INJ-xx REPORTED) |  | B06 |
| B02 | Input | Dữ liệu | Master data: Curing Room · Standard curing days | Master data | B18 |
| B03 | Input | Dữ liệu | Plan Trimming APPROVED (LOT × Plan Qty theo size) |  | B23 |
| B04 | Warehouse Staff | Bắt đầu | Start |  | B05 |
| B05 | Warehouse Staff | Bước | Chọn ngày · ca · phòng Curing | Web · Curing Confirmation | B06 |
| B06 | Warehouse Staff | Bước | Gom sản lượng máy thành lô ca | System (auto) · Curing Confirmation | B07 |
| B07 | Warehouse Staff | Bước | Nhập số nhận theo size | Web · Curing Confirmation | B08 |
| B08 | Warehouse Staff | Bước | Tính Variance | System (auto) · Curing Confirmation | B09 |
| B09 | Warehouse Staff | Điểm quyết định | Có size nhận ít hơn Machine total? |  | B10 [Có]; B11 [Không] |
| B10 | Warehouse Staff | Bước | Ghi hao hụt băng chuyền | System (auto) · Curing Confirmation | B12; B11 |
| B11 | Warehouse Staff | Điểm quyết định | Có size nhận nhiều hơn Machine total? |  | B13 [Có]; B14 [Không] |
| B12 | Output | Dữ liệu | Hao hụt băng chuyền (Variance < 0) |  | (kết thúc) |
| B13 | Warehouse Staff | Bước | Ghi chênh lệch dương · cảnh báo | System (auto) · Curing Confirmation | B15; B14 |
| B14 | Warehouse Staff | Bước | Xác nhận lô Curing | Web · Curing Confirmation | B16 |
| B15 | Output | Dữ liệu | Chênh lệch dương (Variance > 0) |  | (kết thúc) |
| B16 | Warehouse Staff | Bước | In tem lô Curing | Web · Curing Confirmation | B17; B18 |
| B17 | Output | Dữ liệu | Tem lô Curing đã in |  | (kết thúc) |
| B18 | Warehouse Staff | Bước | Đếm ngày Curing | System (auto) · Curing Confirmation | B19 |
| B19 | Warehouse Staff | Điểm quyết định | Đủ ngày Curing chuẩn? |  | B20 [Chưa]; B21 [Đủ] |
| B20 | Output | Dữ liệu | Lô UNDER CURING — lên plan Trimming được, chưa xuất |  | (kết thúc) |
| B21 | Warehouse Staff | Bước | Chuyển lô sang CURED – UNALLOCATED | System (auto) · Curing Confirmation | B22; B23 |
| B22 | Output | Dữ liệu | Lô CURED – UNALLOCATED vào Curring Room INV List (chưa có Customer PO) |  | (kết thúc) |
| B23 | Warehouse Staff | Điểm quyết định | Lô có trong plan Trimming APPROVED? |  | B24 [Chưa]; B25 [Có] |
| B24 | Output | Dữ liệu | Lô chờ plan Trimming — còn ở kho Curing |  | (kết thúc) |
| B25 | Warehouse Staff | Bước | Sinh phiếu Stock Out Curing → kho Trimming | System (auto) | B26; B27 |
| B26 | Output | Dữ liệu | Phiếu Stock Out Curing → kho Trimming (theo Plan Qty) |  | (kết thúc) |
| B27 | Warehouse Staff | Kết thúc | End |  |  |
| B28 | Warehouse Staff | Bắt đầu | Cần sửa lô |  | B29 |
| B29 | Warehouse Staff | Bước | Yêu cầu mở lại lô Curing | Web · Curing Confirmation | B30 |
| B30 | Warehouse Staff | Điểm quyết định | Lô đã vào plan / phiếu Trimming? |  | B31 [Có]; B32 [Chưa] |
| B31 | Output | Dữ liệu | Chặn Reopen — lô đã vào plan / phiếu Trimming |  | (kết thúc) |
| B32 | Production Supervisor | Bước | Duyệt mở lại lô Curing | Web · Curing Confirmation | B33 |
| B33 | Production Supervisor | Điểm quyết định | Duyệt? |  | B34 [Không]; B35 [Duyệt] |
| B34 | Output | Dữ liệu | Giữ nguyên lô — từ chối mở lại |  | (kết thúc) |
| B35 | Production Supervisor | Bước | Huỷ tem cũ · đảo xác nhận lô | System (auto) · Curing Confirmation | B36; B37 |
| B36 | Output | Dữ liệu | Lô về WAITING CONFIRMATION — xác nhận lại |  | (kết thúc) |
| B37 | Production Supervisor | Kết thúc | End |  |  |

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

#### B05 · Chọn ngày · ca · phòng Curing

- Warehouse Staff · Web · Curing Confirmation
- Đến từ: B04
- Đi tới: B06 · Gom sản lượng máy thành lô ca

> Warehouse Staff chọn ca và phòng Curing cần xác nhận lô.  
> Thao tác: Curing Confirmation › tab "Shift Confirmation" › chọn "Date" · "Shift" (All shifts / Day (AB) / Night (CD)) · "Curing room" (CUR-ROOM-A / CUR-ROOM-B).  
> Hệ thống: hiện "Standard curing <n> days" và KPI "Shift lots" · "Confirmed" · "Machine reported" · "Into curing" · "Variance"; tab "Shift Confirmation" đếm số lô chưa xác nhận.  
> Kết quả: phòng đang chọn ở "Curing room" là phòng lô vào khi xác nhận (bước "Xác nhận lô Curing").  
> Kiểm thử:  
> - Ngày không có sản lượng ca → "No injection shift output for this date"  
> - Chọn "Curing room" CUR-ROOM-B rồi xác nhận → lô ghi Room CUR-ROOM-B  
> Nguồn: prototype v0.51 · Q-20260928-03 · Q-20261009-09 (câu 1) · prototype v0.87  

#### B06 · Gom sản lượng máy thành lô ca

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B01, B05
- Đi tới: B07 · Nhập số nhận theo size

> Hệ thống gom sản lượng POP của các máy trong ca thành lô Curing.  
> Hệ thống: một ca ép = một lô ("One injection shift = one LOT."); mỗi WO của ca một lô, mã LOT-<yyyymmdd>-AB cho ca ngày, LOT-<yyyymmdd>-CD cho ca đêm; lô thứ hai, thứ ba cùng ca thêm hậu tố -02, -03.  
> Kết quả: bảng "Source / Size" liệt kê "<máy> reported" từng máy và "Machine total" theo size; lô ở trạng thái WAITING CONFIRMATION ("Waiting confirmation").  
> Kiểm thử:  
> - Ca ngày 11/08/2026 có 2 WO → LOT-20260811-AB và LOT-20260811-AB-02  
> - Ca đêm cùng ngày → LOT-20260811-CD  
> Nguồn: prototype v0.51 · Q-20260928-03 (câu 2)  

#### B07 · Nhập số nhận theo size

- Warehouse Staff · Web · Curing Confirmation
- Đến từ: B06
- Đi tới: B08 · Tính Variance

> Warehouse Staff nhập số thực nhận vào phòng Curing theo size.  
> Thao tác: dòng "Curing confirmed" — mặc định bằng "Machine total", sửa theo số đếm thật; ô chỉ nhận số nguyên ≥ 0.  
> Hệ thống: phòng Curing chỉ đếm theo item và size, không còn theo dõi máy sau băng chuyền ("The curing room counts by item and size only; machine origin is not tracked after the conveyor.").  
> Nguồn: prototype v0.51  

#### B08 · Tính Variance

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B07
- Đi tới: B09 · Có size nhận ít hơn Machine total?

> Hệ thống tính chênh lệch giữa số nhận và số máy báo.  
> Hệ thống: "Variance" = "Curing confirmed" − "Machine total", theo từng size và cho cả lô; bằng 0 hiện "—", âm tô đỏ, dương tô cam.  
> Kiểm thử:  
> - Machine total 100, nhận 98 → Variance −2 (đỏ)  
> - Machine total 100, nhận 101 → Variance +1 (cam)  
> Nguồn: prototype v0.51  

#### B09 · Có size nhận ít hơn Machine total?

- Warehouse Staff
- Đến từ: B08
- Đi tới [Có]: B10 · Ghi hao hụt băng chuyền
- Đi tới [Không]: B11 · Có size nhận nhiều hơn Machine total?

> Có size nào nhận ít hơn số máy báo không?  
> Có: "Variance" < 0 ở ít nhất một size → ghi hao hụt băng chuyền cho các size đó.  
> Không: không size nào âm → xét tiếp size nhận dư.  
> Kiểm thử:  
> - Size A −2, size B +3 → Có (size A), rồi vẫn xét size B ở bước sau  
> Nguồn: prototype v0.51  

#### B10 · Ghi hao hụt băng chuyền

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B09
- Đi tới: B12 · Hao hụt băng chuyền (Variance < 0)
- Đi tới: B11 · Có size nhận nhiều hơn Machine total?

> Hệ thống ghi phần thiếu thành hao hụt trên băng chuyền.  
> Hệ thống: thông báo "Confirmed qty is below machine output — the gap is logged as loss on the conveyor." hiện dưới bảng khi tổng Variance của lô < 0.  
> Kết quả: khi lô được xác nhận, mỗi size có Variance < 0 sinh một bản ghi hao hụt bằng đúng số thiếu; số hao hụt ra Output.  
> Kiểm thử:  
> - Variance −2 ở một size → bản ghi hao hụt 2 đôi cho size đó  
> Chưa chốt: bản ghi hao hụt lưu ở đâu (Defect Records, sổ hao hụt riêng hay chỉ trên lô).  
> Nguồn: prototype v0.51  

#### B11 · Có size nhận nhiều hơn Machine total?

- Warehouse Staff
- Đến từ: B10, B09
- Đi tới [Có]: B13 · Ghi chênh lệch dương · cảnh báo
- Đi tới [Không]: B14 · Xác nhận lô Curing

> Có size nào nhận nhiều hơn số máy báo không?  
> Có: "Variance" > 0 ở ít nhất một size → ghi chênh lệch dương và cảnh báo, không chặn.  
> Không: không size nào dương → xác nhận lô.  
> Kiểm thử:  
> - Mọi size Variance = 0 → Không, đi thẳng tới xác nhận  
> Nguồn: Q-20260930-05 (câu 2)  

#### B13 · Ghi chênh lệch dương · cảnh báo

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B11
- Đi tới: B15 · Chênh lệch dương (Variance > 0)
- Đi tới: B14 · Xác nhận lô Curing

> Hệ thống ghi phần nhận dư thành bản ghi chênh lệch dương và cảnh báo người xác nhận.  
> Hệ thống: size có "Variance" > 0 tô cam và màn hiện cảnh báo; "Confirm Lot" / "Confirm All Shift Lots" vẫn bấm được.  
> Kết quả: khi lô được xác nhận, mỗi size có Variance > 0 sinh một bản ghi chênh lệch dương bằng đúng số dư; số chênh lệch ra Output.  
> Kiểm thử:  
> - Machine total 100, nhận 101 → cảnh báo, vẫn xác nhận được, bản ghi chênh lệch +1  
> - Size A −2, size B +3 → một bản ghi hao hụt 2 đôi và một bản ghi chênh lệch dương 3 đôi  
> Chưa chốt: prototype v0.51 chỉ tô cam, chưa có dòng cảnh báo; bản ghi chênh lệch dương lưu cùng chỗ với hao hụt băng chuyền hay không.  
> Nguồn: Q-20260930-05 (câu 2) · prototype v0.51  

#### B14 · Xác nhận lô Curing

- Warehouse Staff · Web · Curing Confirmation
- Đến từ: B13, B11
- Đi tới: B16 · In tem lô Curing

> Warehouse Staff xác nhận lô vào phòng Curing.  
> Khi nào: lô ở trạng thái WAITING CONFIRMATION.  
> Thao tác: nút "Confirm Lot" (popup "Confirm LOT <lot>?", nút "Confirm Lot") cho từng lô, hoặc "Confirm All Shift Lots" (popup "Confirm all shift lots?", nút "Confirm All") cho mọi lô chưa xác nhận của ca.  
> Hệ thống: popup hiện "LOT No." · "WO No." · "Item" · "Shift" · "Curing room" · "Machine reported" · "Curing confirmed" và ghi chú "The lot goes into the curing room as Curing stock."; popup "Confirm all shift lots?" hiện "Curing room" · "Lots waiting" · "Machine reported".  
> Kết quả: lô → UNDER CURING, thành tồn kho công đoạn "WH-CUR-01 / Curing" ở phòng đã chọn (cột "Room" của tab "LOT Register"); thông báo "<lot> confirmed — <n> pairs into curing room (<WO>)"; lô ghi "Confirmed by <user> at <time> — LOT created, status Cured – Unallocated after <n> curing days, then waiting for Trimming."  
> Kiểm thử:  
> - "Confirm All Shift Lots" khi ca còn 2 lô chờ → cả 2 lô sang UNDER CURING  
> - Mọi lô của ca đã xác nhận, bấm lại → "All shift lots are already confirmed."  
> Nguồn: prototype v0.51 · Q-20261009-09 (câu 1, 2) · prototype v0.87  

#### B16 · In tem lô Curing

- Warehouse Staff · Web · Curing Confirmation
- Đến từ: B14
- Đi tới: B17 · Tem lô Curing đã in
- Đi tới: B18 · Đếm ngày Curing

> Warehouse Staff in tem cho các lô Curing vừa xác nhận.  
> Thao tác: tab "Shift Confirmation" › nút "Print Lot Labels" — thông báo "LOT labels sent to printer."  
> Hệ thống: khoá lô gồm "Lot + WO + Item Group + Model + Color + Size + Machine + Production Date + Shift".  
> Nguồn: prototype v0.51  

#### B18 · Đếm ngày Curing

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B02, B16
- Đi tới: B19 · Đủ ngày Curing chuẩn?

> Hệ thống đếm số ngày lô đã nằm trong phòng Curing.  
> Hệ thống: số ngày curing = hôm nay − ngày sản xuất của lô ("Curring Day" = Today − IN Date); ngày chuẩn lấy từ master data Standard curing days.  
> Kết quả: tab "LOT Register" cột "Cured" hiện "<số ngày>d / <chuẩn>d"; lô giữ UNDER CURING ("Under Curing") cho tới khi đủ ngày chuẩn.  
> Nguồn: Q-20260918-29 · Excel khách · prototype v0.51  

#### B19 · Đủ ngày Curing chuẩn?

- Warehouse Staff
- Đến từ: B18
- Đi tới [Chưa]: B20 · Lô UNDER CURING — lên plan Trimming được, chưa xuất
- Đi tới [Đủ]: B21 · Chuyển lô sang CURED – UNALLOCATED

> Lô đã đủ số ngày curing chuẩn chưa?  
> Đủ: số ngày curing ≥ Standard curing days → chuyển CURED – UNALLOCATED.  
> Chưa: lô vẫn UNDER CURING; Trimming Planning vẫn chọn được lô để lên plan, nhưng phiếu Stock Out sang kho Trimming chỉ sinh khi lô đủ ngày.  
> Kiểm thử:  
> - Chuẩn 2 ngày, lô vào 1 ngày → Chưa  
> - Chuẩn 2 ngày, lô vào 2 ngày → Đủ  
> Nguồn: Q-20260918-29 · Q-20260930-05 (câu 5)  

#### B21 · Chuyển lô sang CURED – UNALLOCATED

- Warehouse Staff · System (auto) · Curing Confirmation
- Đến từ: B19
- Đi tới: B22 · Lô CURED – UNALLOCATED vào Curring Room INV List (chưa có Customer PO)
- Đi tới: B23 · Lô có trong plan Trimming APPROVED?

> Hệ thống chuyển lô đủ ngày sang tồn chung chờ Trimming.  
> Kết quả: lô → CURED – UNALLOCATED (tab "LOT Register" cột "Lot Status" hiện "Cured – Unallocated"), vẫn nằm trong "Curring Room INV List"; lô không gắn Customer PO ở Curing và Trimming.  
> Hệ thống: lô không có trạng thái chuyển sang Trimming; phần plan Trimming giữ thể hiện bằng số "Available" theo size (tồn lô − phần các plan đang giữ), trạng thái lô không đổi.  
> Nguồn: Q-20260930-05 (câu 3) · Q-20260928-03 · Q-20260929-04 · Q-20261009-03 (câu 4) · prototype v0.85  

#### B23 · Lô có trong plan Trimming APPROVED?

- Warehouse Staff
- Đến từ: B03, B21
- Đi tới [Chưa]: B24 · Lô chờ plan Trimming — còn ở kho Curing
- Đi tới [Có]: B25 · Sinh phiếu Stock Out Curing → kho Trimming

> Lô có nằm trong plan Trimming đã APPROVED mà chưa có phiếu Stock Out không?  
> Có: lô có "Plan Qty" > 0 trong một plan Trimming APPROVED, phần đó chưa có phiếu (plan được Confirm khi lô còn đang curing) → sinh phiếu lúc lô đủ ngày.  
> Chưa: lô ở lại kho Curing. Plan Confirm khi lô đã đủ ngày thì phiếu đã sinh ngay ở Trimming Planning.  
> Kiểm thử:  
> - Plan chứa lô còn DRAFT → Chưa  
> - Plan APPROVED khi lô mới curing 1 / 2 ngày → sang ngày thứ 2 → Có  
> Nguồn: Q-20260930-05 (câu 4, 5) · Q-20261006-02 · Q-20261006-03 (câu 2)  

#### B25 · Sinh phiếu Stock Out Curing → kho Trimming

- Warehouse Staff · System (auto)
- Đến từ: B23
- Đi tới: B26 · Phiếu Stock Out Curing → kho Trimming (theo Plan Qty)
- Đi tới: B27 · End

> Hệ thống tự sinh phiếu Stock Out chuyển phần lô của plan Trimming từ kho công đoạn "WH-CUR-01 / Curing" sang "WH-TRM-01 / Trimming" khi lô vừa đủ ngày curing.  
> Khi nào: lô đủ Standard curing days và đang nằm trong plan Trimming APPROVED chưa có phiếu; lô đã đủ ngày lúc Confirm & Release thì phiếu sinh ở Trimming Planning, không sinh lại ở đây.  
> Thao tác: không có màn, không có nút — Warehouse Staff không bấm gì.  
> Hệ thống: mỗi lô × plan một phiếu, đúng "Plan Qty" theo size của lô trong plan; phiếu APPROVED ngay, tồn chuyển ngay.  
> Hệ thống: số phiếu theo khuôn phiếu Stock Out của WMS "REQ-<mã kho>-YYMM-<5 số>" (prototype: REQ-CUR01-2608-00001); ô "Notes" của phiếu ghi WO của LOT.  
> Kết quả: phần lô không nằm trong plan vẫn ở kho Curing; Trimming Result nhập output tối đa bằng số trên phiếu. Sửa số / bỏ lô / huỷ plan ở Trimming Planning thì phiếu CANCELLED và tồn về kho Curing.  
> Kiểm thử:  
> - Lô 2.490 đôi, plan giữ 2.000 đôi, APPROVED khi lô curing 1 / 2 ngày → sang ngày thứ 2 → phiếu 2.000 đôi APPROVED, 490 đôi còn ở kho Curing  
> Nguồn: Q-20260930-05 (câu 4, 5, 6) · Q-20261006-02 (câu 1, 2) · Q-20261006-03 (câu 2) · Q-20261009-09 (câu 2, 3) · prototype v0.87  

#### B29 · Yêu cầu mở lại lô Curing

- Warehouse Staff · Web · Curing Confirmation
- Đến từ: B28
- Đi tới: B30 · Lô đã vào plan / phiếu Trimming?

> Warehouse Staff xin mở lại lô đã xác nhận để sửa số nhận.  
> Khi nào: lô UNDER CURING hoặc CURED – UNALLOCATED.  
> Thao tác: tab "Shift Confirmation" › nút "Reopen" trên lô "Confirmed", ghi lý do.  
> Kết quả: yêu cầu chờ Production Supervisor duyệt; lô chưa đổi trạng thái.  
> Chưa chốt: prototype v0.51 chưa có ô lý do, "Reopen" mở lại ngay.  
> Nguồn: Q-20260930-05 (câu 1) · BRD §7  

#### B30 · Lô đã vào plan / phiếu Trimming?

- Warehouse Staff
- Đến từ: B29
- Đi tới [Có]: B31 · Chặn Reopen — lô đã vào plan / phiếu Trimming
- Đi tới [Chưa]: B32 · Duyệt mở lại lô Curing

> Lô đã bị Trimming dùng tới chưa?  
> Có: lô nằm trong một plan Trimming chưa CANCELLED, hoặc có phiếu Stock Out Curing chưa CANCELLED → chặn mở lại.  
> Chưa: gửi Production Supervisor duyệt.  
> Kiểm thử:  
> - Lô trong plan Trimming DRAFT → chặn; plan đó Cancel Plan → CANCELLED → mở lại được  
> - Lô có phiếu Stock Out Curing APPROVED → chặn; phiếu bị CANCELLED do huỷ plan → không còn chặn vì phiếu  
> Nguồn: Q-20260930-05 (câu 1) · Q-20261006-02 (câu 2) · Q-20261009-03 (câu 2)  

#### B32 · Duyệt mở lại lô Curing

- Production Supervisor · Web · Curing Confirmation
- Đến từ: B30
- Đi tới: B33 · Duyệt?

> Production Supervisor xem xét yêu cầu mở lại lô.  
> Khi nào: yêu cầu Reopen đã qua kiểm tra chặn.  
> Thao tác: xem lý do, số "Curing confirmed", bản ghi hao hụt / chênh lệch và tem đã in; duyệt hoặc từ chối.  
> Chưa chốt: prototype v0.51 chưa có màn duyệt Reopen.  
> Nguồn: Q-20260930-05 (câu 1) · BRD §7  

#### B33 · Duyệt?

- Production Supervisor
- Đến từ: B32
- Đi tới [Không]: B34 · Giữ nguyên lô — từ chối mở lại
- Đi tới [Duyệt]: B35 · Huỷ tem cũ · đảo xác nhận lô

> Supervisor có duyệt mở lại không?  
> Duyệt: huỷ tem cũ và đảo xác nhận lô.  
> Không: giữ nguyên lô, số nhận và tem.  
> Nguồn: Q-20260930-05 (câu 1)  

#### B35 · Huỷ tem cũ · đảo xác nhận lô

- Production Supervisor · System (auto) · Curing Confirmation
- Đến từ: B33
- Đi tới: B36 · Lô về WAITING CONFIRMATION — xác nhận lại
- Đi tới: B37 · End

> Hệ thống huỷ tem cũ và đảo xác nhận lô để Warehouse Staff xác nhận lại.  
> Kết quả: tem đã in bị huỷ · "Curing confirmed" bị xoá · bản ghi hao hụt băng chuyền và bản ghi chênh lệch dương được đảo · ngày curing đặt lại · lô về WAITING CONFIRMATION.  
> Hệ thống: mọi lần đảo ghi giao dịch audit; không đảo POP Injection — việc đó làm ở Daily Injection by Shift.  
> Kiểm thử:  
> - Mở lại lô có hao hụt −2 và chênh lệch +3 → cả hai bản ghi bị đảo, lô về WAITING CONFIRMATION  
> Nguồn: Q-20260930-05 (câu 1) · BRD §6.3  

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

#### Lô Curing (Lot Status)

`WAITING CONFIRMATION` → `UNDER CURING` → `CURED – UNALLOCATED`

Bước chuyển:

- `WAITING CONFIRMATION` -- Confirm Lot --> `UNDER CURING`
- `UNDER CURING` -- Đủ ngày Curing chuẩn --> `CURED – UNALLOCATED`
- `CURED – UNALLOCATED` -- Reopen (UNDER CURING / CURED – UNALLOCATED) — Supervisor duyệt --> `WAITING CONFIRMATION` (quay lại)

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Sản lượng POP ca theo máy (INJ-xx REPORTED) — lô ILOT chờ Curing do Daily Injection by Shift chuyển sang | Kết quả sản xuất — MES (Daily Injection by Shift) | Gom sản lượng máy thành lô ca |
| I-2 | Curing Room (CUR-ROOM-A / B) · Standard curing days (prototype: 2 ngày) | Master data | Đếm ngày Curing |
| I-3 | Plan Trimming `APPROVED` — các lô và Plan Qty theo size của từng lô | Kế hoạch — MES (Trimming Planning) | Lô có trong plan Trimming APPROVED? |

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

| Bước | Vai trò | Màn hình · nút trên UI |
| --- | --- | --- |
| Chọn ngày · ca · phòng Curing · Nhập số nhận theo size · Xác nhận lô Curing · In tem lô Curing | Warehouse Staff | Curing Confirmation · tab `Shift Confirmation` (`Confirm Lot`, `Confirm All Shift Lots`, `Print Lot Labels`) |
| Gom sản lượng máy thành lô ca · Tính Variance · Ghi hao hụt băng chuyền · Ghi chênh lệch dương · cảnh báo · Đếm ngày Curing · Chuyển lô sang CURED – UNALLOCATED | System (auto) | Curing Confirmation · tab `Shift Confirmation` / `LOT Register` |
| Sinh phiếu Stock Out Curing → kho Trimming | System (auto) | Không có màn, không có nút — hệ thống tự sinh khi plan Trimming APPROVED và lô đủ ngày |
| Yêu cầu mở lại lô Curing | Warehouse Staff | Curing Confirmation · `Reopen` |
| Duyệt mở lại lô Curing | Production Supervisor | Curing Confirmation (prototype chưa có màn duyệt) |
| Huỷ tem cũ · đảo xác nhận lô | System (auto) | Curing Confirmation |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Hao hụt băng chuyền (Variance < 0) | CURING CONFIRMED < MACHINE TOTAL ở một size — "the gap is logged as loss on the conveyor" |
| O-2 | Chênh lệch dương (Variance > 0) — có cảnh báo, không chặn | CURING CONFIRMED > MACHINE TOTAL ở một size |
| O-3 | Tem lô Curing đã in | Warehouse Staff bấm Print Lot Labels |
| O-4 | Lô `UNDER CURING` — lên plan Trimming được, chưa xuất kho | Chưa đủ Standard curing days — Trimming Planning vẫn chọn được lô ("Curing not completed") |
| O-5 | Lô `CURED – UNALLOCATED` vào Curring Room INV List, không gắn Customer PO | Đủ Standard curing days — nguồn chọn lô của Trimming Planning |
| O-6 | Lô chờ plan Trimming — còn ở kho Curing | Lô đủ ngày nhưng chưa nằm trong plan Trimming APPROVED nào |
| O-7 | Phiếu Stock Out Curing → kho Trimming, số theo Plan Qty | Plan Trimming chứa lô APPROVED và lô đủ Standard curing days — Trimming Result nhập output tối đa bằng số đã xuất |
| O-8 | Chặn Reopen — lô đã vào plan / phiếu Trimming | Lô trong plan Trimming chưa `CANCELLED`, hoặc có phiếu Stock Out Curing chưa `CANCELLED` |
| O-9 | Giữ nguyên lô — từ chối mở lại | Production Supervisor không duyệt |
| O-10 | Lô về `WAITING CONFIRMATION` — tem cũ huỷ, xác nhận, hao hụt và chênh lệch dương đảo, xác nhận lại | Production Supervisor duyệt yêu cầu Reopen |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `Lô Curing` | Lô sinh từ một ca ép (mỗi WO của ca một lô), mã LOT-<yyyymmdd>-AB (ca ngày) / -CD (ca đêm), trùng ca thêm -02, -03 |
| `MACHINE TOTAL` | Tổng sản lượng POP các máy báo trong ca, theo size |
| `CURING CONFIRMED` | Số phòng Curing thực nhận, theo size |
| `VARIANCE` | CURING CONFIRMED − MACHINE TOTAL; âm là hao hụt băng chuyền, dương là chênh lệch dương (không chặn) |
| `Standard curing days` | Số ngày curing chuẩn trong master data (prototype: 2 ngày) |
| `Curring Day` | Hôm nay − IN Date (nguyên văn "Curring" trên Excel khách) |
| `UNDER CURING` | Lô đang curing, chưa đủ ngày chuẩn; vẫn lên plan Trimming được nhưng chưa xuất kho |
| `CURED – UNALLOCATED` | Lô đủ ngày, là tồn chung không gắn Customer PO, chờ Trimming |
| `Curring Room INV List` | Danh sách tồn lô trong phòng Curing mà plan Trimming chọn từ đó |
| `Available` | Tồn lô theo size trừ phần các plan Trimming đang giữ — số plan khác còn chọn được |
| `Plan Qty` | Số theo size của lô trong một plan Trimming — số phiếu Stock Out Curing lấy ra |
| `Stock Out Curing` | Phiếu Stock Out của WMS hệ thống tự sinh, xuất lô từ WH-CUR-01 / Curing sang WH-TRM-01 / Trimming theo Plan Qty của plan Trimming APPROVED; số phiếu khuôn REQ-<mã kho>-YYMM-<5 số>, ô Notes ghi WO |
| `WH-CUR-01 / Curing` | Kho công đoạn (Process warehouse) của phòng Curing; kiểm tồn / kiểm kê làm ở kho này bên WMS |
