# Daily Injection by Shift — nhập POP ca ép theo size, xác nhận ca và chuyển lô sang Curing

> Fine Chemical (FC) · Module MES · v0.6 · 13/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/daily-injection

## 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
- Operator
- 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 | WI Injection theo ca (WO × máy × ngày × ca) |  | B08 |
| B02 | Input | Dữ liệu | Master data: Mold · Cavity · Machine | Master data | B10 |
| B03 | Input | Dữ liệu | Material Lot Assignment CONFIRMED — lô gán ngày · ca · máy · WI |  | B11 |
| B04 | Input | Dữ liệu | Lô NVL đã xuất ra khu Mixing (MOR ISSUED) |  | B13 |
| B05 | Input | Dữ liệu | Master data: Defect Reason · Downtime Reason | Master data | B16 |
| B06 | Input | Dữ liệu | Trạng thái lô ILOT ở Curing (Curing Confirmation) |  | B42 |
| B07 | Operator | Bắt đầu | Start |  | B08 |
| B08 | Operator | Bước | Mở danh sách WI theo ca | Web · Daily Injection by Shift | B09 |
| B09 | Operator | Bước | Mở màn nhập POP ca | Web · Daily Injection by Shift | B10 |
| B10 | Operator | Bước | Gán khuôn vào vị trí máy | Web · Daily Injection by Shift | B11 |
| B11 | Operator | Điểm quyết định | Có Material Lot Assignment cho WI? |  | B12 [Có]; B13 [Không] |
| B12 | Operator | Bước | Tự điền lô từ Material Lot Assignment | System (auto) · Daily Injection by Shift | B13 |
| B13 | Operator | Bước | Khai báo lô vật tư đã dùng | Web · Daily Injection by Shift | B14 |
| B14 | Operator | Bước | Nhập sản lượng theo size và grade | Web · Daily Injection by Shift | B15 |
| B15 | Operator | Điểm quyết định | Có grade C? |  | B16 [Có]; B17 [Không] |
| B16 | Operator | Bước | Nhập lý do lỗi grade C | Web · Daily Injection by Shift | B17 |
| B17 | Operator | Bước | Nhập thời gian · downtime | Web · Daily Injection by Shift | B18 |
| B18 | Operator | Điểm quyết định | Operator chọn thao tác nào? |  | B19 [Save Draft]; B20 [Validate] |
| B19 | Operator | Bước | Lưu nháp POP ca | Web · Daily Injection by Shift | B21 |
| B20 | Operator | Bước | Kiểm tra dữ liệu POP | Web · Daily Injection by Shift | B22 |
| B21 | Output | Dữ liệu | POP DRAFT — chưa sinh batch / lô |  | (kết thúc) |
| B22 | Operator | Điểm quyết định | Dữ liệu hợp lệ? |  | B09 [Không — sửa lại]; B23 [Có] |
| B23 | Operator | Bước | Xác nhận POP ca | Web · Daily Injection by Shift | B24 |
| B24 | Operator | Bước | Sinh batch và lô Curing | System (auto) · Daily Injection by Shift | B25; B26 |
| B25 | Output | Dữ liệu | Batch IB + lô ILOT chờ Curing (sản lượng ca theo máy · size) |  | (kết thúc) |
| B26 | Operator | Bước | Chuyển POP sang Curing | Web · Daily Injection by Shift | B27 |
| B27 | Operator | Bước | Ghi Defect Records grade C | System (auto) · Daily Injection by Shift | B28; B29 |
| B28 | Output | Dữ liệu | Defect Records grade C (scrap) (lý do · WI · máy · ca), không RW |  | (kết thúc) |
| B29 | Operator | Bước | Ghi tiêu hao lô vật tư | System (auto) · Daily Injection by Shift | B30; B31 |
| B30 | Output | Dữ liệu | Tiêu hao lô vật tư ([Injection] Stock Out) |  | (kết thúc) |
| B31 | Operator | Bước | Ghi downtime · khuôn · cavity | System (auto) · Daily Injection by Shift | B32; B33 |
| B32 | Output | Dữ liệu | Downtime · khuôn · cavity → Machine / Mold |  | (kết thúc) |
| B33 | Operator | Bước | Cập nhật Produced · Shift Remaining | System (auto) · Daily Injection by Shift | B34; B35 |
| B34 | Output | Dữ liệu | Produced theo Detail Plan → I/J Plan (Remaining) |  | (kết thúc) |
| B35 | Operator | Điểm quyết định | Còn Shift Remaining? |  | B36 [Có]; B37 [Không] |
| B36 | Operator | Bước | Báo cần xếp lại ca | System (auto) · Daily Injection by Shift | B38; B39 |
| B37 | Output | Dữ liệu | Ca đã đủ — Shift plan fully produced |  | (kết thúc) |
| B38 | Output | Dữ liệu | Remaining → Planner xếp lại ở Injection Schedule |  | (kết thúc) |
| B39 | Operator | Kết thúc | End |  |  |
| B40 | Operator | Bắt đầu | Cần sửa POP ca |  | B41 |
| B41 | Operator | Bước | Yêu cầu mở lại POP ca | Web · Daily Injection by Shift | B42 |
| B42 | Operator | Điểm quyết định | Lô đã được Curing xác nhận? |  | B43 [Có]; B44 [Chưa] |
| B43 | Output | Dữ liệu | Chặn mở lại — lô đã vào Curing |  | (kết thúc) |
| B44 | Production Supervisor | Bước | Xem xét yêu cầu mở lại | Web · Daily Injection by Shift | B45 |
| B45 | Production Supervisor | Điểm quyết định | Đồng ý mở lại? |  | B46 [Không]; B47 [Đồng ý] |
| B46 | Output | Dữ liệu | POP giữ CONFIRMED |  | (kết thúc) |
| B47 | Production Supervisor | Bước | Mở lại POP ca | System (auto) · Daily Injection by Shift | B48 |
| B48 | Production Supervisor | Bước | Sinh bút toán đảo | System (auto) · Daily Injection by Shift | B49; B50; B51 |
| B49 | Output | Dữ liệu | POP về WAITING — Operator nhập lại ca |  | (kết thúc) |
| B50 | Output | Dữ liệu | Bút toán đảo: Produced · tiêu hao · Defect · downtime |  | (kết thúc) |
| B51 | Production Supervisor | Kết thúc | End |  |  |

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

#### B08 · Mở danh sách WI theo ca

- Operator · Web · Daily Injection by Shift
- Đến từ: B01, B07
- Đi tới: B09 · Mở màn nhập POP ca

> Operator mở danh sách WI Injection của ca để chọn WI cần khai báo sản lượng.  
> Thao tác: Daily Injection by Shift › lọc "PLANNED DATE" · "SHIFT" · "INJECTION LINE" · "WI NO." · "ITEM GROUP" · "POP STATUS" (Waiting / Confirmed).  
> Hệ thống: KPI "PLANNED WI" · "WAITING FOR POP" · "MATERIAL SHORTAGE WI". Mỗi WI một khối, theo size: "SHIFT REQUIRED" / "CONFIRMED POP" / "SHIFT REMAINING".  
> Hệ thống: ca chỉ có "Day (AB)" hoặc "Night (CD)"; chip "Material Shortage" trên khối WI chỉ cảnh báo, vật tư thiếu được đặt bằng MOR ở Work Order / WI.  
> Kiểm thử:  
> - Lọc "POP STATUS" = Waiting → chỉ hiện WI chưa xác nhận POP  
> Nguồn: BRD §6.2 Step 5 · Q-20260923-07 · Q-20260929-01 · Q-20261009-08 (câu 1) · prototype v0.86  

#### B09 · Mở màn nhập POP ca

- Operator · Web · Daily Injection by Shift
- Đến từ: B08, B22
- Đi tới: B10 · Gán khuôn vào vị trí máy

> Operator mở màn nhập POP cho một WI của ca.  
> Thao tác: nút "Enter Shift POP" → màn "Injection Shift POP Entry".  
> Hệ thống: header chỉ đọc "WI NO." · "WO NO." · "ITEM GROUP" · "PLANNED DATE" · "SHIFT" · "LINE" · "SHIFT REQUIRED QTY" · "WO REMAINING BEFORE POP" · "POP STATUS".  
> Hệ thống: ngày và ca lấy theo dòng kế hoạch, không sửa ở đây ("Date and shift are taken from the plan line and cannot be changed here.").  
> Kiểm thử:  
> - Ô ngày và ca trên header không sửa được  
> Nguồn: prototype v0.23  

#### B10 · Gán khuôn vào vị trí máy

- Operator · Web · Daily Injection by Shift
- Đến từ: B02, B09
- Đi tới: B11 · Có Material Lot Assignment cho WI?

> Operator ghi khuôn đang chạy ở từng vị trí máy của line.  
> Thao tác: khối "Machine Mold Layout — <Line> / Capacity 20" › mỗi vị trí "POS 01" … chọn khuôn (vd "Mold W5-A / MOLD-…"); nút "Clear layout" xoá hết.  
> Hệ thống: đếm "Assigned n / 20".  
> Kết quả: machine / mold / cavity của ca được ghi lại để cấp cho bảo trì máy và quản lý khuôn.  
> Nguồn: BRD §6.4 · prototype v0.23  

#### B11 · Có Material Lot Assignment cho WI?

- Operator
- Đến từ: B03, B10
- Đi tới [Có]: B12 · Tự điền lô từ Material Lot Assignment
- Đi tới [Không]: B13 · Khai báo lô vật tư đã dùng

> WI của ca đã có phiếu Material Lot Assignment CONFIRMED chưa?  
> Có: có Assignment CONFIRMED cùng "PRODUCTION DATE", "SHIFT", "MACHINE" và "WORK INSTRUCTION" với WI → hệ thống tự điền lô.  
> Không: chưa có Assignment, hoặc Assignment còn DRAFT → khối "Material Lot" để trống, Operator tự khai báo lô.  
> Kiểm thử:  
> - Assignment của WI còn DRAFT → mở POP thấy khối "Material Lot" trống  
> Nguồn: Q-20261009-08 (câu 3) · prototype v0.86  

#### B12 · Tự điền lô từ Material Lot Assignment

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B11
- Đi tới: B13 · Khai báo lô vật tư đã dùng

> Hệ thống điền sẵn các lô nguyên vật liệu đã gán cho WI vào khối "Material Lot" của màn nhập POP.  
> Khi nào: Operator bấm "Enter Shift POP", WI chưa có POP DRAFT và có Material Lot Assignment CONFIRMED.  
> Hệ thống: mỗi lô của Assignment thành một dòng "Material Type" · "Lot Number" · "Used Qty" · "UoM" · "QC Status"; "Used Qty" điền sẵn bằng "Assigned Qty" của lô.  
> Kết quả: trên bảng lô hiện "Prefilled from Material Lot Assignment <số> — enter the actual Used Qty; scan to add more lots."  
> Kiểm thử:  
> - Assignment gán LOT-CMP-8821 1.250 KG và LOT-COL-109B 25 KG → mở POP thấy sẵn 2 dòng, Used Qty 1.250 và 25  
> Chưa chốt: WI đã có POP DRAFT thì giữ lô của bản nháp, không điền lại; WI có nhiều Assignment CONFIRMED thì gộp lô, cùng một lô thì cộng "Assigned Qty" — đề xuất, chưa được xác nhận.  
> Nguồn: Q-20261009-08 (câu 3) · prototype v0.86  

#### B13 · Khai báo lô vật tư đã dùng

- Operator · Web · Daily Injection by Shift
- Đến từ: B04, B11, B12
- Đi tới: B14 · Nhập sản lượng theo size và grade

> Operator khai báo hoặc chỉnh các lô nguyên vật liệu đã dùng trong ca.  
> Thao tác: khối "Material Lot" › quét hoặc gõ số lô rồi Enter ("Scan barcode or type lot number, then Enter"), hoặc "Add Lot"; nhập "Used Qty"; dấu x xoá dòng.  
> Hệ thống: lô tự điền từ Material Lot Assignment sửa và xoá được như lô quét tay; WI không có Assignment thì trên bảng lô hiện "No confirmed Material Lot Assignment for this WI — scan the lots used in this shift."  
> Hệ thống: lô không nằm trong danh sách đã xuất cho WO của WI (MOR ISSUED) vẫn được thêm, QC "UNVERIFIED", báo "Lot <số> added — not in the issued list, QC unverified."  
> Kiểm thử:  
> - Lô tự điền Used Qty 1.250, Operator sửa thành 1.180 → tiêu hao ghi 1.180  
> - Quét lô không có trong danh sách đã xuất → dòng lô QC UNVERIFIED, "Validate" bị chặn  
> Nguồn: BRD §6.3 Step 3–4 · Q-20261009-08 (câu 3) · prototype v0.86  

#### B14 · Nhập sản lượng theo size và grade

- Operator · Web · Daily Injection by Shift
- Đến từ: B13
- Đi tới: B15 · Có grade C?

> Operator nhập sản lượng ca theo từng size và từng grade.  
> Thao tác: bảng "POP Matrix (Item / Size)" — dòng A (First grade), A- (First grade, minor), C (Reject), mỗi size một cột; nút nhập nhanh "Fill A = Required" / "Clear".  
> Hệ thống: "Total POP" = A + A- + C · "Shift Remaining" = "Shift Required" − A − A-.  
> Kiểm thử:  
> - Shift Required 100, A 90, A- 5, C 3 → Total POP 98, Shift Remaining 5  
> Nguồn: prototype v0.23 · Q-20260923-19 (I)  

#### B15 · Có grade C?

- Operator
- Đến từ: B14
- Đi tới [Có]: B16 · Nhập lý do lỗi grade C
- Đi tới [Không]: B17 · Nhập thời gian · downtime

> Ca có hàng lỗi grade C không?  
> Có: số C > 0 ở bất kỳ size nào → phải nhập lý do lỗi.  
> Không: sang nhập thời gian và downtime.  
> Nguồn: BRD §6.5 · prototype v0.23  

#### B16 · Nhập lý do lỗi grade C

- Operator · Web · Daily Injection by Shift
- Đến từ: B05, B15
- Đi tới: B17 · Nhập thời gian · downtime

> Operator ghi lý do cho số hàng grade C.  
> Thao tác: khối "Defect Reason Breakdown (grade C)" › "Add Defect Line": "Defect Reason" · "Qty" · "Remark".  
> Chặn khi: tổng "Qty" các dòng lý do khác tổng số grade C (bị chặn ở bước "Validate").  
> Kiểm thử:  
> - Grade C = 5, dòng lý do tổng 4 → Validate báo lỗi  
> Nguồn: BRD §6.5 · prototype v0.23  

#### B17 · Nhập thời gian · downtime

- Operator · Web · Daily Injection by Shift
- Đến từ: B15, B16
- Đi tới: B18 · Operator chọn thao tác nào?

> Operator ghi thời gian chạy, downtime và tình trạng khuôn / máy của ca.  
> Thao tác: khối "Production Record": "Start Time" · "End Time" · "Operator / Team Leader" · "Downtime (min)" · "Downtime Reason" · "Mold / Machine Condition" · "Production Remark".  
> Hệ thống: "Downtime Reason" chọn một trong: Mold change · Machine breakdown · Material waiting · Power / utility · Quality hold · Other.  
> Chặn khi: thiếu "Start Time" hoặc "End Time" (bị chặn ở bước "Validate").  
> Nguồn: BRD §6.4 Step 3 · prototype v0.23  

#### B18 · Operator chọn thao tác nào?

- Operator
- Đến từ: B17
- Đi tới [Save Draft]: B19 · Lưu nháp POP ca
- Đi tới [Validate]: B20 · Kiểm tra dữ liệu POP

> Operator lưu nháp hay kiểm tra để xác nhận?  
> Save Draft: lưu tạm, chưa sinh batch / lô.  
> Validate: kiểm dữ liệu để xác nhận POP ca.  
> Nguồn: prototype v0.23  

#### B19 · Lưu nháp POP ca

- Operator · Web · Daily Injection by Shift
- Đến từ: B18
- Đi tới: B21 · POP DRAFT — chưa sinh batch / lô

> Operator lưu tạm POP ca để nhập tiếp sau.  
> Thao tác: nút "Save Draft".  
> Kết quả: "POP STATUS" = DRAFT; thông báo "POP draft saved for <WI>. No batch or lot generated."; mở lại bằng "Enter Shift POP".  
> Kiểm thử:  
> - Save Draft → không có batch / lô ILOT nào được sinh  
> Nguồn: prototype v0.23  

#### B20 · Kiểm tra dữ liệu POP

- Operator · Web · Daily Injection by Shift
- Đến từ: B18
- Đi tới: B22 · Dữ liệu hợp lệ?

> Hệ thống kiểm tra toàn bộ dữ liệu POP ca trước khi cho xác nhận.  
> Thao tác: nút "Validate".  
> Chặn khi (thông báo nguyên văn):  
> - Không nhập số ở dòng grade nào: "Enter a quantity in at least one grade row (A / A- / C)."  
> - Thiếu giờ: "Production start and end time are required."  
> - A + A- vượt Shift Required của size: "<size>: first quality (A + A-) exceeds Shift Required."  
> - Không có lô vật tư có Used Qty: "At least one material lot with used qty is required."  
> - Lô đang HOLD: "A selected lot is on QC HOLD." · lô ngoài danh sách xuất: "A scanned lot is not on the issued list — QC unverified."  
> - Lý do lỗi lệch số C: "Defect reason breakdown (n) must equal the grade C quantity (n)."  
> Nguồn: BRD §6.4 Step 4 · prototype v0.23  

#### B22 · Dữ liệu hợp lệ?

- Operator
- Đến từ: B20
- Đi tới [Không — sửa lại]: B09 · Mở màn nhập POP ca
- Đi tới [Có]: B23 · Xác nhận POP ca

> Dữ liệu POP ca có qua kiểm tra không?  
> Có: thông báo "Validation passed. Ready to confirm." → xác nhận POP.  
> Không — sửa lại: quay về màn nhập POP, sửa khuôn, lô vật tư hoặc sản lượng rồi Validate lại.  
> Kiểm thử:  
> - A + A- của size W7 = Shift Required + 1 → không qua  
> - Chọn lô QC HOLD → không qua  
> Nguồn: prototype v0.23  

#### B23 · Xác nhận POP ca

- Operator · Web · Daily Injection by Shift
- Đến từ: B22
- Đi tới: B24 · Sinh batch và lô Curing

> Operator xác nhận POP ca.  
> Khi nào: dữ liệu đã qua "Validate".  
> Thao tác: nút "Confirm Shift POP" → màn "Injection Batch POP Confirmation".  
> Hệ thống: mỗi POP ca sinh đúng một batch ép và một lô ("One shift POP generates one injection batch and one lot.").  
> Nguồn: prototype v0.23  

#### B24 · Sinh batch và lô Curing

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B23
- Đi tới: B25 · Batch IB + lô ILOT chờ Curing (sản lượng ca theo máy · size)
- Đi tới: B26 · Chuyển POP sang Curing

> Hệ thống sinh batch ép và lô Curing cho ca.  
> Kết quả: "Batch No." IB-<ngày>-nn · "Curing Lot" ILOT-<ngày>-nnn; "POP Summary" Grade A / A- / C và "Shift Remaining".  
> Hệ thống: "Data Checks" hiện "Total POP within shift plan" · "Compound lot released" · "Defect quantity broken down by size".  
> Thao tác: nút "Print Lot Label" in tem lô (Lot No. · Item · Color · Shift · Qty).  
> Kiểm thử:  
> - Xác nhận 1 ca → đúng 1 batch IB và 1 lô ILOT  
> Nguồn: prototype v0.23  

#### B26 · Chuyển POP sang Curing

- Operator · Web · Daily Injection by Shift
- Đến từ: B24
- Đi tới: B27 · Ghi Defect Records grade C

> Operator chốt POP và chuyển lô sang hàng chờ Curing.  
> Thao tác: nút "Save POP & Transfer to Curing".  
> Kết quả: "POP STATUS" = CONFIRMED · WI Injection của ca → COMPLETED · thông báo "<Lot> released to Curing incoming queue" · lô Curing ở trạng thái "Waiting for Curing".  
> Chưa chốt: WI Injection của ca → COMPLETED ngay khi POP CONFIRMED — đề xuất, chưa được xác nhận.  
> Kiểm thử:  
> - Sau khi chuyển, lô ILOT hiện ở hàng chờ của Curing Confirmation  
> Nguồn: prototype v0.23 · download.png · quy ước Q5  

#### B27 · Ghi Defect Records grade C

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B26
- Đi tới: B28 · Defect Records grade C (scrap) (lý do · WI · máy · ca), không RW
- Đi tới: B29 · Ghi tiêu hao lô vật tư

> Hệ thống ghi số hàng grade C vào Defect Records; C ở Daily Injection là hàng bỏ (scrap) và không sinh phiếu Repair / Rework vì màn này không có hạng Pending repair.  
> Kết quả: mỗi dòng gồm grade C theo size + lý do lỗi, gắn WI · WO · máy · khuôn · ca, Process "Injection".  
> Kiểm thử:  
> - Khai C = 5 với 2 lý do → Defect Records có 2 dòng, tổng 5  
> - C = 12 → Repair / Rework không thêm phiếu  
> Nguồn: BRD §6.5 · Q-20261013-01 · prototype v0.91  

#### B29 · Ghi tiêu hao lô vật tư

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B27
- Đi tới: B30 · Tiêu hao lô vật tư ([Injection] Stock Out)
- Đi tới: B31 · Ghi downtime · khuôn · cavity

> Hệ thống ghi tiêu hao các lô vật tư đã dùng trong ca.  
> Kết quả: "Used Qty" từng lô được ghi thành giao dịch "[Injection] Stock Out (Used Compound)".  
> Hệ thống: số này dùng để đối soát Issue Balance = Issued − Consumed − Returned ở MRP & Material Ready.  
> Nguồn: BRD §6.3 · Function List "[Injection] Stock Out (Used Compound)" · quy ước Q9  

#### B31 · Ghi downtime · khuôn · cavity

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B29
- Đi tới: B32 · Downtime · khuôn · cavity → Machine / Mold
- Đi tới: B33 · Cập nhật Produced · Shift Remaining

> Hệ thống ghi downtime, tình trạng khuôn / máy và khuôn theo vị trí của ca.  
> Kết quả: dữ liệu cấp cho Machine Maintenance và Mold Management.  
> Nguồn: BRD §6.4  

#### B33 · Cập nhật Produced · Shift Remaining

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B31
- Đi tới: B34 · Produced theo Detail Plan → I/J Plan (Remaining)
- Đi tới: B35 · Còn Shift Remaining?

> Hệ thống cộng sản lượng đạt vào kế hoạch ép và tính phần còn thiếu của ca.  
> Hệ thống: "Produced" = A + A-, cộng dồn vào Detail Plan (= WO) của I/J Plan.  
> Hệ thống: "Shift Remaining" giữ là số kế hoạch, không chuyển thành shortage ("Shift Remaining stays planned quantity — it is not converted to shortage.").  
> Kết quả: phần thiếu về Remaining của WO để xếp sang ca / WI mới.  
> Kiểm thử:  
> - A 90 + A- 5 → Produced của Detail Plan tăng 95  
> Nguồn: Q-20260923-11 · quy ước Q5 · prototype v0.23  

#### B35 · Còn Shift Remaining?

- Operator
- Đến từ: B33
- Đi tới [Có]: B36 · Báo cần xếp lại ca
- Đi tới [Không]: B37 · Ca đã đủ — Shift plan fully produced

> Ca còn thiếu so với kế hoạch không?  
> Có: "Shift Remaining" > 0 ở bất kỳ size nào → báo Planner xếp lại.  
> Không: ca đã đủ kế hoạch.  
> Nguồn: prototype v0.23  

#### B36 · Báo cần xếp lại ca

- Operator · System (auto) · Daily Injection by Shift
- Đến từ: B35
- Đi tới: B38 · Remaining → Planner xếp lại ở Injection Schedule
- Đi tới: B39 · End

> Hệ thống báo Planner cần xếp lại phần còn thiếu của ca.  
> Kết quả: thông báo "… · Replanning alert raised for <n> pairs"; Planner xếp phần còn lại ở Injection Schedule.  
> Kiểm thử:  
> - Shift Remaining 5 → cảnh báo 5 pairs  
> Nguồn: Q-20260923-11 · prototype v0.23  

#### B41 · Yêu cầu mở lại POP ca

- Operator · Web · Daily Injection by Shift
- Đến từ: B40
- Đi tới: B42 · Lô đã được Curing xác nhận?

> Operator xin mở lại POP ca đã xác nhận để sửa.  
> Khi nào: khối WI đang "POP Confirmed".  
> Thao tác: nút "Request POP Reopen".  
> Chưa chốt: prototype mở lại ngay ("POP reopened for <WI>"); flow vẽ bước Production Supervisor duyệt theo BRD.  
> Nguồn: BRD §6.6 · prototype v0.23  

#### B42 · Lô đã được Curing xác nhận?

- Operator
- Đến từ: B06, B41
- Đi tới [Có]: B43 · Chặn mở lại — lô đã vào Curing
- Đi tới [Chưa]: B44 · Xem xét yêu cầu mở lại

> Lô ILOT của ca đã được Curing xác nhận chưa?  
> Có: bước sau đã dùng số liệu → chặn mở lại.  
> Chưa: gửi Production Supervisor xem xét.  
> Kiểm thử:  
> - Lô đã "Confirm Lot" ở Curing Confirmation → không mở lại được  
> Nguồn: quy ước Q3  

#### B44 · Xem xét yêu cầu mở lại

- Production Supervisor · Web · Daily Injection by Shift
- Đến từ: B42
- Đi tới: B45 · Đồng ý mở lại?

> Production Supervisor xem xét yêu cầu mở lại POP ca.  
> Khi nào: có yêu cầu mở lại và lô chưa được Curing xác nhận.  
> Chưa chốt: prototype chưa có màn duyệt cho Supervisor.  
> Nguồn: BRD §6.6 · BRD §7  

#### B45 · Đồng ý mở lại?

- Production Supervisor
- Đến từ: B44
- Đi tới [Không]: B46 · POP giữ CONFIRMED
- Đi tới [Đồng ý]: B47 · Mở lại POP ca

> Supervisor có đồng ý mở lại không?  
> Đồng ý: mở lại POP ca và sinh bút toán đảo.  
> Không: POP giữ CONFIRMED.  
> Nguồn: BRD §6.6  

#### B47 · Mở lại POP ca

- Production Supervisor · System (auto) · Daily Injection by Shift
- Đến từ: B45
- Đi tới: B48 · Sinh bút toán đảo

> Hệ thống mở lại POP ca để Operator nhập lại.  
> Kết quả: "POP STATUS" CONFIRMED → WAITING · batch / lô ILOT của ca rút khỏi hàng chờ Curing · WI Injection của ca COMPLETED → RELEASED.  
> Kiểm thử:  
> - Sau khi mở lại, lô ILOT không còn ở hàng chờ Curing  
> Nguồn: BRD §6.6 · quy ước Q3  

#### B48 · Sinh bút toán đảo

- Production Supervisor · System (auto) · Daily Injection by Shift
- Đến từ: B47
- Đi tới: B49 · POP về WAITING — Operator nhập lại ca
- Đi tới: B50 · Bút toán đảo: Produced · tiêu hao · Defect · downtime
- Đi tới: B51 · End

> Hệ thống sinh bút toán đảo cho mọi số liệu ca đã ghi, không xoá giao dịch cũ.  
> Kết quả: "Produced" (A + A-) trừ lại ở Detail Plan của I/J Plan · tiêu hao lô vật tư đảo · Defect Records grade C đảo · downtime / khuôn / cavity đảo.  
> Kết quả: Operator nhập lại ca → sinh giao dịch mới.  
> Chưa chốt: cách đảo trên là đề xuất, chưa được xác nhận.  
> Kiểm thử:  
> - Mở lại ca có Produced 95 → Detail Plan giảm 95, có dòng đảo trong lịch sử  
> Nguồn: BRD §6.3 · quy ước Q3  

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

#### POP ca (POP Status)

`WAITING` → `DRAFT` → `CONFIRMED`

Bước chuyển:

- `WAITING` -- Save Draft --> `DRAFT`
- `DRAFT` -- Save POP & Transfer to Curing --> `CONFIRMED`
- `CONFIRMED` -- Request POP Reopen — Supervisor đồng ý · bút toán đảo --> `WAITING` (quay lại)
- `WAITING` -- Save POP & Transfer to Curing (không qua nháp) --> `CONFIRMED` (quay lại)

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | WI Injection theo ca — WO × máy × ngày × ca, SHIFT REQUIRED theo size (sinh khi Planner Release lịch ép ở Injection Schedule, mỗi ca một WI) | Chứng từ — MES (Injection Schedule) | Mở danh sách WI theo ca |
| I-2 | Mold · Cavity · Machine (Mold / Cavity Master, BRD §6.2) | Master data | Gán khuôn vào vị trí máy |
| I-3 | Lô nguyên vật liệu đã xuất ra khu Mixing cho WO của WI (MOR `ISSUED`) — danh sách để kiểm lô Operator quét | Vật tư — MRP & Material Ready / WMS | Khai báo lô vật tư đã dùng |
| I-6 | Material Lot Assignment `CONFIRMED` — lô nguyên vật liệu đã xuất gán cho ngày · ca · máy · WI | Chứng từ — MES (Material Lot Assignment) | Có Material Lot Assignment cho WI? |
| I-4 | Defect Reason · Downtime Reason | Master data | Nhập lý do lỗi grade C · Nhập thời gian · downtime |
| I-5 | Trạng thái lô ILOT ở Curing — đã được Curing Confirmation xác nhận hay chưa | Kết quả sản xuất — Curing Confirmation | Lô đã được Curing xác nhận? |

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

| Bước | Vai trò | Màn hình · nút trên UI |
| --- | --- | --- |
| Mở danh sách WI theo ca | Operator | Daily Injection by Shift |
| Mở màn nhập POP ca · Gán khuôn vào vị trí máy · Khai báo lô vật tư đã dùng · Nhập sản lượng theo size và grade · Nhập lý do lỗi grade C · Nhập thời gian · downtime | Operator | Injection Shift POP Entry (`Enter Shift POP`, `Fill A = Required`, `Add Lot`, `Add Defect Line`) |
| Lưu nháp POP ca · Kiểm tra dữ liệu POP · Xác nhận POP ca · Chuyển POP sang Curing | Operator | `Save Draft`, `Validate`, `Confirm Shift POP`, `Save POP & Transfer to Curing` |
| Tự điền lô từ Material Lot Assignment | System (auto) | Injection Shift POP Entry › khối `Material Lot` |
| Sinh batch và lô Curing · Ghi Defect Records grade C · Ghi tiêu hao lô vật tư · Ghi downtime · khuôn · cavity · Cập nhật Produced · Shift Remaining · Báo cần xếp lại ca | System (auto) | Injection Batch POP Confirmation |
| Yêu cầu mở lại POP ca | Operator | `Request POP Reopen` |
| Xem xét yêu cầu mở lại · Mở lại POP ca · Sinh bút toán đảo | Production Supervisor (bước System (auto) nằm ở lane này) | Daily Injection by Shift |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-2 | POP = `DRAFT` — chưa sinh batch / lô | Operator bấm Save Draft |
| O-3 | Batch IB + lô ILOT chờ Curing — sản lượng ca theo máy · size | Operator bấm Save POP & Transfer to Curing; POP = `CONFIRMED`, WI Injection của ca → `COMPLETED` |
| O-4 | Defect Records grade C (scrap) — lý do · WI · máy · ca; không sinh phiếu Repair / Rework | POP có grade C khi xác nhận |
| O-5 | Tiêu hao lô vật tư ([Injection] Stock Out (Used Compound)) | POP xác nhận — Used Qty từng lô |
| O-6 | Downtime · khuôn · cavity sang Machine Maintenance / Mold Management | POP xác nhận |
| O-7 | Produced (A + A-) cộng vào Detail Plan (= WO) của I/J Plan — Remaining ở I/J Inquiry | POP xác nhận |
| O-8 | Remaining → Planner xếp lại ở Injection Schedule (Replanning alert) | Shift Remaining > 0 — không chuyển thành shortage |
| O-9 | Ca đã đủ — Shift plan fully produced | Shift Remaining = 0 |
| O-10 | POP giữ `CONFIRMED` | Production Supervisor không đồng ý mở lại |
| O-11 | POP về `WAITING` — Operator nhập lại ca; lô ILOT rút khỏi hàng chờ Curing; WI Injection `COMPLETED` → `RELEASED` | Production Supervisor đồng ý mở lại, lô chưa được Curing xác nhận |
| O-12 | Chặn mở lại — lô đã vào Curing | Lô ILOT của ca đã được Curing Confirmation xác nhận |
| O-13 | Bút toán đảo: Produced · tiêu hao lô vật tư · Defect Records · downtime / khuôn | Mở lại POP ca — giao dịch cũ không xoá, sinh giao dịch đảo có audit (BRD §6.3) |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `WI` | Work Instruction — lệnh làm việc của một ca ép (WO × máy × ngày × ca), sinh khi Release lịch ở Injection Schedule |
| `WO` | Work Order — lệnh sản xuất; một Detail Plan của I/J Plan ứng với một WO |
| `POP` | Point of Production — khai báo sản lượng tại công đoạn, theo ca và theo size |
| `Grade A / A- / C` | A: đạt loại một · A-: đạt loại một, lỗi nhẹ · C: hỏng (Reject) |
| `Shift Required` | Số kế hoạch của ca theo size |
| `Shift Remaining` | Shift Required − A − A-; giữ là số kế hoạch, không thành shortage |
| `Produced` | A + A- cộng dồn vào Detail Plan của I/J Plan |
| `Batch IB / lô ILOT` | Mỗi POP ca sinh một batch ép (IB-…) và một lô chờ curing (ILOT-…) |
| `Downtime` | Thời gian máy dừng trong ca, tính bằng phút, có lý do |
| `Material Lot Assignment` | Phiếu gán lô nguyên vật liệu đã xuất ra khu Mixing cho ngày · ca · máy · WI; phiếu CONFIRMED thì màn nhập POP tự điền lô |
| `Khu Mixing` | Khu trộn nguyên vật liệu ở xưởng, nhận nguyên vật liệu kho xuất theo MOR; không phải công đoạn trong Routing, không sinh lô mới |
| `Bút toán đảo` | Giao dịch ghi ngược số đã ghi khi mở lại POP; giao dịch cũ không bị xoá |
