# Outsourcing Result — nhận hàng Spray Out từ nhà cung cấp sơn theo plan: A + A- vào Spray In List, C ghi Defect Records, Pending repair sang Repair / Rework

> Fine Chemical (FC) · Module MES · v0.8 · 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/outsourcing-result

## 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
- 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 | Spray Out Plan SENT — LOT ở NCC sơn (Outsourcing Planning) |  | B03 |
| B02 | Warehouse Staff | Bắt đầu | Start |  | B03 |
| B03 | Warehouse Staff | Bước | Mở Waiting to Return | Web · Outsourcing Result | B04 |
| B04 | Warehouse Staff | Bước | Mở Spray Out Plan (Open Plan) | Web · Outsourcing Result | B05 |
| B05 | Warehouse Staff | Bước | Chọn LOT cần nhận (Enter Output) | Web · Outsourcing Result | B06 |
| B06 | Warehouse Staff | Bước | Nhập A / A- / C / PR theo size | Web · Outsourcing Result | B07 |
| B07 | Warehouse Staff | Điểm quyết định | Có nhập C? |  | B08 [Có]; B09 [Không] |
| B08 | Warehouse Staff | Bước | Chia C theo lý do lỗi | Web · Outsourcing Result | B09 |
| B09 | Warehouse Staff | Điểm quyết định | Số nhập hợp lệ? |  | B10 [Không]; B11 [Có] |
| B10 | Output | Dữ liệu | Chặn Record Result — chưa nhập, vượt Remaining, lệch tổng lý do C |  | (kết thúc) |
| B11 | Warehouse Staff | Bước | Ghi nhận kết quả nhận hàng | Web · Outsourcing Result | B12 |
| B12 | Warehouse Staff | Bước | Sinh phiếu OSR · cộng Received của plan | System (auto) · Outsourcing Result | B13 |
| B13 | Warehouse Staff | Bước | Chuyển A + A- vào Spray In List | System (auto) · Outsourcing Result | B14; B15 |
| B14 | Output | Dữ liệu | Spray In List (A + A-) → Packing Planning Spray |  | (kết thúc) |
| B15 | Warehouse Staff | Bước | Ghi C vào Defect Records theo lý do | System (auto) · Outsourcing Result | B16; B17 |
| B16 | Output | Dữ liệu | Defect Records — C Spray Out theo lý do (hàng hỏng) |  | (kết thúc) |
| B17 | Warehouse Staff | Điểm quyết định | Có Pending repair? |  | B18 [Có]; B19 [Không] |
| B18 | Warehouse Staff | Bước | Mở phiếu Repair / Rework theo size | System (auto) · Outsourcing Result | B20; B19 |
| B19 | Warehouse Staff | Điểm quyết định | Mọi LOT hết Remaining? |  | B21 [Không]; B22 [Có] |
| B20 | Output | Dữ liệu | Phiếu Repair / Rework mới → sửa xong vào Packing Planning Spray Step 2 |  | (kết thúc) |
| B21 | Output | Dữ liệu | Plan giữ SENT — chờ lần nhận sau, không đóng thiếu |  | (kết thúc) |
| B22 | Warehouse Staff | Bước | Chuyển plan RECEIVED | System (auto) · Outsourcing Result | B23; B24 |
| B23 | Output | Dữ liệu | Plan RECEIVED — "All quantity received" |  | (kết thúc) |
| B24 | Warehouse Staff | Kết thúc | End |  |  |
| B25 | Warehouse Staff | Bắt đầu | Xem plan đã nhận |  | B26 |
| B26 | Warehouse Staff | Bước | Xem Output Entries (View) | Web · Outsourcing Result | B27; B28 |
| B27 | Output | Dữ liệu | Chỉ xem — không nhập thêm khi Remaining = 0 |  | (kết thúc) |
| B28 | Warehouse Staff | Kết thúc | End |  |  |

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

#### B03 · Mở Waiting to Return

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B01, B02
- Đi tới: B04 · Mở Spray Out Plan (Open Plan)

> Warehouse Staff mở danh sách các Spray Out Plan đang có hàng ở NCC sơn để chọn plan cần nhận.  
> Thao tác: Outsourcing Result › bảng "Waiting to Return · by Spray Out plan"; ô lọc "All vendors" / tên Vendor, công tắc "Open only", ô tìm "Search plan, P.O, LOT, model or color".  
> Hệ thống: bốn thẻ "PLANS AT VENDOR" · "REMAIN AT VENDOR" · "A + A- RECEIVED" · "C + PENDING REPAIR"; mỗi dòng một plan SENT với cột Action · Spray Out Plan · P.O · Out Date · LOTs · Model / Base Color · Vendor · Sent Qty · Received · Remaining · A + A- · C · Pending repair · Status; cột "LOTs" hiện số dòng LOT của plan ("3 LOT(s)").  
> Hệ thống: "Remaining" của plan = "Sent Qty" − "Received", cộng từ mọi dòng LOT; Status hiện "At vendor" (chưa nhận), "Partially received" (đã nhận một phần) hoặc "Received" (đủ).  
> Kiểm thử:  
> - Bật "Open only" → plan đã nhận đủ không còn trong danh sách  
> - Plan SENT 3 LOT, 1.350 đôi, chưa nhận → "LOTs" 3 LOT(s), "Remaining" 1.350, Status "At vendor"  
> Nguồn: Q-20260929-01 · Q-20260929-03 · Q-20261006-05 · prototype v0.78  

#### B04 · Mở Spray Out Plan (Open Plan)

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B03
- Đi tới: B05 · Chọn LOT cần nhận (Enter Output)

> Warehouse Staff mở một Spray Out Plan để xem các dòng LOT của plan.  
> Khi nào: plan SENT còn "Remaining" > 0.  
> Thao tác: dòng plan › nút "Open Plan" hoặc bấm số plan / ô "LOTs" (plan đã nhận đủ hiện nút "View").  
> Hệ thống: trang "Outsourcing Result — <Plan No.>" có khối "Spray Out Plan" (SPRAY OUT PLAN NO. · P.O · LOTS · MODEL · BASE COLOR · VENDOR · OUT DATE · SENT QTY · RECEIVED · REMAINING), khối "LOTs in plan <Plan No.> (n)" và khối "Output Entries" của cả plan có cột "LOT No.".  
> Hệ thống: "LOTS" hiện "<n> (<m> fully received)", m = số dòng LOT đã hết Remaining.  
> Kết quả: trang plan mở, chưa ghi gì; nút mũi tên quay về danh sách "Waiting to Return".  
> Kiểm thử:  
> - Plan 3 LOT → khối "LOTs in plan" có 3 dòng, "LOTS" 3 (0 fully received)  
> Nguồn: Q-20260929-12 · Q-20261006-05 · prototype v0.78  

#### B05 · Chọn LOT cần nhận (Enter Output)

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B04
- Đi tới: B06 · Nhập A / A- / C / PR theo size

> Warehouse Staff chọn dòng LOT của plan để ghi hàng nhận về cho đúng LOT đó.  
> Khi nào: dòng LOT còn "Remaining" > 0.  
> Thao tác: khối "LOTs in plan <Plan No.> (n)" › nút "Enter Output" của dòng, hoặc bấm "LOT No."; dòng đã hết Remaining hiện nút "View".  
> Hệ thống: mỗi dòng của plan (một LOT, hoặc một dòng Repair) là một dòng bảng với cột Action · LOT No. · WO No. · Grade · số gửi theo size · Sent Qty · Received · Remaining · Status.  
> Hệ thống: "Remaining" của dòng = "Sent Qty" của dòng − "Received" của dòng; Status của dòng "At vendor" / "Partially received" / "Received".  
> Kết quả: trang nhập của LOT mở; nút mũi tên trên trang nhập quay về danh sách LOT của plan.  
> Kiểm thử:  
> - Plan 3 LOT, ghi 405 đôi cho LOT-20260807-AB → chỉ dòng đó có "Received" 405, hai LOT kia giữ "Received" 0  
> Nguồn: Q-20261006-05 · prototype v0.78  

#### B06 · Nhập A / A- / C / PR theo size

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B05
- Đi tới: B07 · Có nhập C?

> Warehouse Staff nhập số hàng nhận về của lần này cho LOT đã chọn, theo grade và size.  
> Thao tác: khối "Spray Out Plan · LOT" (SPRAY OUT PLAN NO. · P.O · LOT NO. · WO NO. · GRADE · …) › "Output Matrix (Item / Size)" › ô số các hàng "A" ("First grade → Spray In"), "A-" ("First grade, minor → Spray In"), "C" ("Reject → Defect Records"), "PR" ("Pending repair"); ô "Receipt Date"; nút "Fill A = Remaining", "Clear".  
> Hệ thống: "This Entry" = A + A- + C + Pending repair; "Remaining" = "Sent Qty" của LOT − "Already Received" của LOT − "This Entry", tính lại theo từng size khi gõ; ô của size LOT không gửi bị khoá.  
> Kiểm thử:  
> - LOT gửi 80 ở M5/W7, nhập A 70, PR 5 → "This Entry" 75, "Remaining" 5  
> - Bấm "Fill A = Remaining" khi "Already Received" của LOT 30 → A mỗi size bằng phần còn lại của LOT, "Remaining" 0  
> Nguồn: Q-20261001-10 (OQ-93) · Q-20261006-05 · prototype v0.78  

#### B07 · Có nhập C?

- Warehouse Staff
- Đến từ: B06
- Đi tới [Có]: B08 · Chia C theo lý do lỗi
- Đi tới [Không]: B09 · Số nhập hợp lệ?

> Lần nhận này có hàng C không?  
> Có: tổng hàng "C" > 0 → phải chia số C theo lý do lỗi trước khi ghi.  
> Không: C = 0 → kiểm số nhập.  
> Nguồn: Q-20261005-01 (4)  

#### B08 · Chia C theo lý do lỗi

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B07
- Đi tới: B09 · Số nhập hợp lệ?

> Warehouse Staff chia toàn bộ số hàng C theo lý do lỗi, vì hàng C nhận từ NCC sơn là hàng hỏng.  
> Khi nào: lần nhận có C > 0.  
> Thao tác: khối "Defect Reason Breakdown (grade C)" hiện trong "Output Matrix (Item / Size)", ngay trên nút "Record Result", khi ô C có số › mỗi lý do một dòng "Defect Reason" · "Qty" · "Defect Detail"; nút "Add Defect Line" (cùng cách nhập như Trimming Result).  
> Hệ thống: danh sách "Defect Reason" = "Color mismatch" · "Peeling" · "Spray overflow" · "Stain / dirt" · "Other"; dòng tóm tắt "Grade C" · "Mapped" · "Balanced" / "Unmapped: n"; tổng "Qty" các dòng phải bằng tổng C của lần nhận.  
> Chặn khi: "Grade C quantity recorded — map the defect quantity to a defect reason." · "A defect line has a quantity but no defect reason." · "A defect reason has no quantity." · "Defect reason breakdown (n) must equal the grade C quantity (m)."  
> Kiểm thử:  
> - C = 5, chưa có dòng nào, bấm "Record Result" → "Grade C quantity recorded — map the defect quantity to a defect reason."  
> - C = 5, dòng Peeling 3 → "Defect reason breakdown (3) must equal the grade C quantity (5)."  
> - Thêm dòng Stain / dirt 2 → "Balanced", mở được hộp xác nhận  
> Nguồn: Q-20261005-01 (4) · Q-20261002-02 (3) · Q-20260929-11 · Q-20261007-01 · prototype v0.81  

#### B09 · Số nhập hợp lệ?

- Warehouse Staff
- Đến từ: B08, B07
- Đi tới [Không]: B10 · Chặn Record Result — chưa nhập, vượt Remaining, lệch tổng lý do C
- Đi tới [Có]: B11 · Ghi nhận kết quả nhận hàng

> Hệ thống kiểm số nhập trước khi mở hộp xác nhận.  
> Có: "This Entry" > 0, không size nào có "This Entry" vượt "Remaining", C đã chia đủ lý do → mở hộp xác nhận.  
> Không: báo lỗi trên trang, không mở hộp: "Enter A / A- / C / Pending repair before recording the result." · "This Entry is more than Remaining at <size>." · lỗi chia lý do C (bước T4).  
> Kiểm thử:  
> - Remaining M3/W5 = 60, nhập A 61 → "This Entry is more than Remaining at M3/W5."  
> - Nhập A 60 → được  
> Nguồn: prototype v0.81 · Q-20261005-01 (4)  

#### B11 · Ghi nhận kết quả nhận hàng

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B09
- Đi tới: B12 · Sinh phiếu OSR · cộng Received của plan

> Warehouse Staff xác nhận ghi kết quả nhận hàng của lần này cho LOT đã chọn.  
> Thao tác: nút "Record Result" → hộp "Record Spray Out result for <LOT> · <plan>?" (SPRAY OUT PLAN · P.O · LOT NO. · RECEIPT DATE · THIS ENTRY · A + A- → SPRAY IN LIST · C → DEFECT RECORDS (số + lý do) · PENDING REPAIR → REPAIR / REWORK · REMAINING AFTER ENTRY, bảng theo size) › "Record Result"; "Cancel" đóng hộp, không ghi.  
> Hệ thống: số thứ tự "entry #n" trong hộp đếm theo LOT, không theo plan.  
> Kết quả: hệ thống sinh phiếu nhận và chuyển hàng theo grade ở các bước sau.  
> Kiểm thử:  
> - Bấm "Cancel" trong hộp → không sinh phiếu, số nhập giữ trên trang  
> - LOT đã có 1 lần nhận, plan đã có 3 lần nhận → hộp hiện "entry #2"  
> Nguồn: Q-20261001-10 (OQ-93) · Q-20261006-05 · prototype v0.81  

#### B12 · Sinh phiếu OSR · cộng Received của plan

- Warehouse Staff · System (auto) · Outsourcing Result
- Đến từ: B11
- Đi tới: B13 · Chuyển A + A- vào Spray In List

> Hệ thống tạo một phiếu nhận cho lần nhận của LOT và cộng số nhận vào đúng dòng LOT đó.  
> Hệ thống: phiếu số OSR-YYYYMMDD-NN chỉ có dòng của LOT đã chọn; "Received" của LOT += "This Entry"; "Received" của plan = tổng "Received" các dòng LOT.  
> Kết quả: "Output Entries" trên trang nhập của LOT thêm một dòng (#, Receipt No., Receipt Date, A, A-, C, Pending repair, Total, By); "Output Entries" trên trang plan hiện cùng phiếu kèm "LOT No."; "Receipt history" ở Outsourcing Planning cũng hiện phiếu.  
> Kiểm thử:  
> - Plan 3 LOT, ghi 405 cho LOT-20260807-AB → OSR-20260811-01 một dòng LOT-20260807-AB; plan "Received" 405, "Remaining" 945  
> - LOT nhận 30 rồi 380 → hai phiếu, "Received" của LOT 410  
> Chưa chốt: một chuyến giao gồm nhiều LOT thành nhiều phiếu OSR (mỗi LOT một phiếu) — cần xác nhận với kho (OQ-103); phiếu OSR đã ghi chưa có thao tác sửa / huỷ.  
> Nguồn: Q-20261006-05 · prototype v0.78  

#### B13 · Chuyển A + A- vào Spray In List

- Warehouse Staff · System (auto) · Outsourcing Result
- Đến từ: B12
- Đi tới: B14 · Spray In List (A + A-) → Packing Planning Spray
- Đi tới: B15 · Ghi C vào Defect Records theo lý do

> Hệ thống đưa hàng A và A- của lần nhận vào Spray In List để đóng gói.  
> Khi nào: A + A- của lần nhận > 0.  
> Hệ thống: dòng A và dòng A- tách riêng để giữ Grade; mỗi dòng mang LOT No., P.O và số phiếu OSR.  
> Kết quả: dòng mới hiện ở "Step 1 · Select Spray IN" của Packing Planning Spray.  
> Kiểm thử:  
> - Nhận A 20, A- 5 → Packing Planning Spray Step 1 có hai dòng OSR-… (20 grade A, 5 grade A-)  
> Nguồn: Q-20261001-10 (OQ-93) · prototype v0.69  

#### B15 · Ghi C vào Defect Records theo lý do

- Warehouse Staff · System (auto) · Outsourcing Result
- Đến từ: B13
- Đi tới: B16 · Defect Records — C Spray Out theo lý do (hàng hỏng)
- Đi tới: B17 · Có Pending repair?

> Hệ thống ghi hàng C của lần nhận vào Defect Records theo từng lý do lỗi; hàng C không quay lại luồng sản xuất.  
> Khi nào: C của lần nhận > 0.  
> Hệ thống: mỗi lý do một dòng Defect Records, Process "Spray Out", mang LOT No., WO, P.O (cột SO), số lượng, lý do; cột Detail ghi chi tiết đã nhập + Vendor + số phiếu OSR + số Spray Out Plan. Số C theo size nằm trên phiếu OSR, không tách theo lý do.  
> Kết quả: hàng C không vào Repair Spray In List, không sơn lại, không sang Packing Spray (không hiện ở Step 2 Packing Planning Spray); bộ lọc "Process" của Defect Records có "Spray Out".  
> Kiểm thử:  
> - Nhận C 2 lý do Peeling → Defect Records có một dòng Spray Out 2 đôi Peeling  
> - Nhận C 5 = Peeling 3 + Stain / dirt 2 → lọc Process "Spray Out" thấy 2 dòng cùng số OSR  
> Nguồn: Q-20261002-02 (3) · Q-20261005-01 (4) · Q-20261007-01 · Q-20261013-01 · prototype v0.91  

#### B17 · Có Pending repair?

- Warehouse Staff
- Đến từ: B15
- Đi tới [Có]: B18 · Mở phiếu Repair / Rework theo size
- Đi tới [Không]: B19 · Mọi LOT hết Remaining?

> Lần nhận này có hàng Pending repair không?  
> Có: tổng "PR" > 0 → mở phiếu Repair / Rework.  
> Không: PR = 0 → xét Remaining của plan.  
> Nguồn: Q-20261001-11 (OQ-96) · Q-20261013-01  

#### B18 · Mở phiếu Repair / Rework theo size

- Warehouse Staff · System (auto) · Outsourcing Result
- Đến từ: B17
- Đi tới: B20 · Phiếu Repair / Rework mới → sửa xong vào Packing Planning Spray Step 2
- Đi tới: B19 · Mọi LOT hết Remaining?

> Hệ thống mở phiếu Repair / Rework cho hàng Pending repair để sửa; sửa xong hàng đi thẳng Packing Planning Spray.  
> Hệ thống: mỗi size có PR > 0 một phiếu RW-…, trạng thái Pending, nguồn "Spray Out · Pending repair", lý do "Pending repair", mang LOT No. của dòng LOT đã chọn, WO, P.O; PR không vào Defect Records.  
> Kết quả: sửa xong ở màn Repair / Rework (Repaired), hàng hiện ở Packing Planning Spray › "Step 2 · Select Repair Inventory" (next process = Packing Spray), không hiện ở Step 2 của Outsourcing Planning; thông báo "Result recorded · C n pairs → Defect Records · Pending repair n pairs → n Repair / Rework record(s)".  
> Kiểm thử:  
> - Nhận PR 10 ở W5 cho LOT-20260806-AB → một phiếu RW-… 10 đôi Pending, LOT No. LOT-20260806-AB  
> - Ghi Repaired phiếu đó → Packing Planning Spray Step 2 có dòng 10 đôi chọn được, Outsourcing Planning Step 2 không có  
> Chưa chốt: lệch Q-20261001-11 (OQ-96) "lập lại plan Spray Out mới" — prototype cho đi thẳng Packing Spray.  
> Nguồn: Q-20261001-11 (OQ-96) · Q-20261012-04 (đích Packing Planning Spray) · Q-20261013-01 · prototype v0.91  

#### B19 · Mọi LOT hết Remaining?

- Warehouse Staff
- Đến từ: B18, B17
- Đi tới [Không]: B21 · Plan giữ SENT — chờ lần nhận sau, không đóng thiếu
- Đi tới [Có]: B22 · Chuyển plan RECEIVED

> Mọi dòng LOT của plan đã nhận hết chưa?  
> Có: mọi dòng LOT có "Remaining" = 0 ở mọi size → plan RECEIVED.  
> Không: còn dòng LOT có "Remaining" > 0 → plan giữ SENT, Status "Partially received"; Warehouse Staff quay về danh sách LOT để nhận LOT khác hoặc chờ lần nhận sau.  
> Kiểm thử:  
> - Plan 3 LOT, LOT-20260807-AB còn 5, hai LOT kia chưa nhận → plan giữ SENT, "Remaining" 945  
> - LOT cuối cùng hết Remaining → plan RECEIVED  
> Nguồn: Q-20261006-05 · prototype v0.78  

#### B22 · Chuyển plan RECEIVED

- Warehouse Staff · System (auto) · Outsourcing Result
- Đến từ: B19
- Đi tới: B23 · Plan RECEIVED — "All quantity received"
- Đi tới: B24 · End

> Hệ thống chuyển plan sang RECEIVED khi mọi dòng LOT đã nhận hết.  
> Kết quả: plan → RECEIVED ở cả Outsourcing Result và SPRAY OUT List; mọi dòng LOT hiện nút "View"; trên trang nhập của LOT, nút ghi đổi thành "All quantity received" và bị khoá, "Fill A = Remaining", "Clear" bị khoá.  
> Kiểm thử:  
> - Lần nhận cuối làm LOT cuối cùng hết Remaining → SPRAY OUT List hiện RECEIVED  
> Nguồn: Q-20261006-05 · prototype v0.78  

#### B26 · Xem Output Entries (View)

- Warehouse Staff · Web · Outsourcing Result
- Đến từ: B25
- Đi tới: B27 · Chỉ xem — không nhập thêm khi Remaining = 0
- Đi tới: B28 · End

> Warehouse Staff mở lại plan đã nhận đủ để xem các lần nhận.  
> Khi nào: plan RECEIVED (tắt "Open only" để thấy dòng).  
> Thao tác: dòng plan › nút "View" → trang plan; dòng LOT › nút "View" để xem riêng LOT.  
> Kết quả: trang plan hiện "Output Entries" của mọi LOT (có cột "LOT No."); trang LOT hiện "Output Entries" của LOT và tổng "First quality (A + A-) … · C … · Pending repair … · entries …"; không nhập thêm được.  
> Chưa chốt: hàng NCC không trả đủ không có thao tác đóng plan thiếu — plan chờ tới khi mọi LOT hết Remaining, phần chênh xử lý ngoài hệ thống.  
> Nguồn: Q-20261005-01 (3) · Q-20261006-05 · prototype v0.78  

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

#### Spray Out Plan (nhận hàng ở Outsourcing Result)

`SENT` → `RECEIVED`

Bước chuyển:

- `SENT` -- Record Result · mọi LOT hết Remaining --> `RECEIVED`

Ghi chú trên sơ đồ:

- Còn LOT Remaining > 0 → plan giữ SENT

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Spray Out Plan `SENT` — LOT đã gửi sang NCC sơn, có Sent Qty theo size (Outsourcing Planning) | Chứng từ — flow spray-out | Mở Waiting to Return |

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

| Bước | Vai trò | Màn hình · nút trên UI |
| --- | --- | --- |
| Mở Waiting to Return · Mở plan cần nhận | Warehouse Staff | Outsourcing Result · `Waiting to Return · by Spray Out plan` (`Open only`, `Record Result`, `View`) |
| Nhập A / A- / C / PR theo size · Chia C theo lý do lỗi · Ghi nhận kết quả nhận hàng | Warehouse Staff | Outsourcing Result · `Output Matrix (Item / Size)` (`Fill A = Remaining`, `Clear`, `Receipt Date`, `Defect Reason Breakdown`, `Record Result`) |
| Sinh phiếu OSR · Chuyển A + A- vào Spray In List · Ghi C vào Defect Records · Mở phiếu Repair / Rework · Chuyển plan RECEIVED | System (auto) | Outsourcing Result · khi `Record Result`; bảng `Output Entries` |
| Xem Output Entries | Warehouse Staff | Outsourcing Result · `View` |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Chặn Record Result — chưa nhập, vượt Remaining, lệch tổng lý do C | This Entry = 0, This Entry > Remaining ở một size, hoặc tổng theo lý do ≠ C |
| O-2 | Spray In List (A + A-) — nguồn Step 1 của Packing Planning Spray | Lần nhận có A + A- > 0 |
| O-3 | Defect Records — C Spray Out theo lý do (hàng hỏng, không quay lại luồng) | Lần nhận có C > 0 |
| O-4 | Phiếu Repair / Rework mới (Pending) mỗi size, Source `Spray Out · Pending repair` — sửa xong vào Packing Planning Spray, Step 2 · Select Repair Inventory | Lần nhận có Pending repair > 0 |
| O-5 | Plan giữ `SENT` — chờ lần nhận sau, không có thao tác đóng thiếu | Sau lần nhận, còn size có Remaining > 0 |
| O-6 | Plan `RECEIVED` — nút "All quantity received" | Sau lần nhận, Remaining = 0 ở mọi size |
| O-7 | Chỉ xem — không nhập thêm khi Remaining = 0 | Mở plan `RECEIVED` bằng `View` |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `Spray Out Plan` | Plan gửi hàng SPRAY sang NCC sơn, lập ở Outsourcing Planning; số SPO-… |
| `Sent Qty` | Số đôi đã gửi sang NCC theo size (phiếu Stock Out của plan đã duyệt) |
| `Received / Already Received` | Tổng số đã nhận về của plan qua các lần nhận trước |
| `This Entry` | Số nhận của lần này = A + A- + C + Pending repair |
| `Remaining` | Số còn ở NCC = Sent Qty − Already Received − This Entry |
| `A / A-` | Grade hàng đạt (A) và đạt có lỗi nhẹ (A-); vào Spray In List |
| `C` | Hàng hỏng nhận từ NCC sơn; ghi Defect Records theo lý do, không sửa, không sơn lại |
| `PR` | Pending repair — hàng sửa được; mở phiếu Repair / Rework, sửa xong vào Packing Planning Spray Step 2 |
| `OSR` | Phiếu nhận hàng Spray Out, số OSR-YYYYMMDD-NN, một phiếu mỗi lần Record Result |
| `Spray In List` | Hàng A + A- đã sơn về, nguồn Step 1 của Packing Planning Spray |
| `Repair Inventory` | Kho hàng đã sửa xong (Repaired), nguồn Step 2 của Outsourcing Planning, Packing Planning Logo và Packing Planning Spray tuỳ Source của phiếu |
