Outsourcing Planning (Spray Out) — lập plan gửi sơn 3 bước, duyệt, sinh phiếu Stock Out gửi nhà cung cấp; kho duyệt phiếu thì plan SENT

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

Process Flow (swimlane)

MES · Outsourcing Planning (Spray Out) — Planner lập plan 3 bước và duyệt, hệ thống sinh Stock Out, kho duyệt phiếu thì plan SENTPhaseInputPlannerWarehouse StaffOutputNgoại lệ — sửa plan chưa gửi · bỏ plan (xoá nháp / huỷ)KhôngCóChưaCóNEWKhôngĐạtAPPROVEDStock Out APPROVEDRồiChưaCóKhôngKhôngCóMaster data: Vendor(NCC sơn)Master dataWaiting SPRAY-OUT ZONE —LOT Spray A + A- (TrimmingResult · WH-TRM-01)Repair Inventory — hàng Spray(Trimming · Pending repairđã sửa — Repaired)Customer P.O SPRAY · ETD· P.O Month (Sales Order)Start▣ Outsourcing PlanningTạo Spray Out PlanWeb▣ Outsourcing PlanningStep 1 · Chọn LOT WaitingSPRAY-OUT ZONEWeb▣ Outsourcing PlanningStep 2 · ChọnRepair InventoryWeb▣ Outsourcing PlanningStep 3 · Phân bổvào Detail P.OWebPhân bổ hợp lệ?Release ngay?▣ Outsourcing PlanningLưu nháp Spray Out PlanWeb▣ Outsourcing PlanningPhát hành SprayOut PlanWebDuyệt plan?▣ Outsourcing PlanningTừ chối SprayOut PlanWeb▣ Outsourcing PlanningDuyệt Spray Out PlanWeb▣ Outsourcing PlanningSinh phiếu Stock OutWH-TRM-01 → VendorSystem (auto)▣ OutboundDuyệt phiếu Stock OutWeb▣ Outsourcing PlanningChuyển plan SENT(OUT DATE = ngày duyệt)System (auto)EndCần sửa planPhiếu Stock Outđã APPROVED?▣ Outsourcing PlanningSửa Spray Out Plan(Edit / Revise plan)WebEndBỏ planPlan DRAFT?▣ Outsourcing PlanningXoá plan nhápWebPhiếu Stock Outchưa APPROVED?▣ Outsourcing PlanningHuỷ Spray Out PlanWebEndChặn Release — vượtAvailable / Remaining P.O,thiếu VendorPlan DRAFT — mở lạiStep 3, Release sauPlan REJECTED — nguồntrả về, lập plan mớiPhiếu Stock Out → WMS(chờ kho duyệt)Plan SENT — LOT ở NCC(đã trừ WH-TRM-01), chờOutsourcing ResultKhông sửa — hàng đãxuất sang NCCPlan sửa ở Step 3 — phiếuStock Out cập nhật theoPlan nháp đã xoá ·nguồn trả vềKhông huỷ được — phiếuStock Out đã APPROVEDPlan CANCELLED — nguồntrả về, phiếu Stock Out huỷPlanner tạo một Spray Out Plan mới để gửi hàng SPRAY đã Trimming sang NCC sơn. Thao tác: Outsourcing Planning › "SPRAY OUT List" › nút "Create Plan" → trang "Add Spray Out Plan"; card "Plan Details" có "Plan No." (Auto-generated) · "P.O (Month) *" · "Plan Date" · "Vendor *". Hệ thống: Plan No. dạng SPO-YYYYMMDD-NN; P.O (Month) mặc định tháng đầu còn P.O SPRAY có Remaining; danh sách Vendor lấy từ master data NCC sơn (COVA, MINH HUY). Chặn khi: bấm "Next" ở Step 1 khi chưa chọn P.O (Month) — "Select P.O (Month) first." Kiểm thử: - Để trống P.O (Month), bấm Next → hiện thông báo trên, không sang Step 2 Nguồn: Q-20261001-10 (OQ-93) · Q-20260929-02 · prototype v0.69Planner chọn các LOT SPRAY đang chờ gửi sơn — bước này chỉ chọn, chưa phân bổ cho P.O. Thao tác: "Step 1 · Select Waiting SPRAY-OUT ZONE" › tick cột "Select"; cột LOT No. · Trimming Plan · P.O (Month) · WO No. · Model · Base Color · AL / INT · Grade · IN Date · Curing Days · số theo size · Available. Hệ thống: "IN Date" = ngày LOT vào Curing; "Curing Days" = Plan Date − Curing Date. Step 1 không có cột Status (Step 2 Repair vẫn có). Hệ thống: nguồn = A + A- đã ghi ở Trimming Result của LOT Spray, nằm ở WH-TRM-01; "Available" = số đã ghi − số các plan Spray Out khác còn hiệu lực (DRAFT, NEW, APPROVED, SENT, RECEIVED) đang giữ. Chặn khi: LOT không phải hàng SPRAY — "Logo output — unavailable for Spray Out"; LOT đã bị giữ hết — "Fully reserved" (lý do hiện khi rê chuột lên ô tick bị khoá). Kiểm thử: - LOT Logo → ô tick bị khoá, rê chuột thấy lý do trên - LOT 100 đôi, plan khác đã giữ 60 → Available 40 Nguồn: Q-20261001-10 (OQ-93) · Q-20260929-01 · Q-20261006-06 (3) · prototype v0.80Planner chọn thêm hàng Spray đã sửa xong trong kho Repair để gửi sơn cùng plan — bước này chỉ chọn. Thao tác: "Step 2 · Select Repair Inventory" › tick dòng; cột Repair No. (kèm "from RW-…") · WO No. · Model · Base Color · AL / INT · số theo size · Available. Hệ thống: chỉ hiện phiếu Repair / Rework đã "Repaired" của hàng SPRAY có Source "Trimming · Pending repair"; "Available" = số sửa đạt − số plan Spray Out khác đang giữ − số Packing Plan đang dùng cùng dòng Repair. Kết quả: hàng SPRAY bị Pending repair ở Trimming, sửa xong thì được chọn ở đây để gửi sơn cùng plan; hàng "Spray Out · Pending repair" sửa xong không về đây mà sang Step 2 của Packing Planning Spray. Kiểm thử: - Phiếu RW "Trimming · Pending repair" của hàng SPRAY ghi Repaired 3 đôi → Step 2 có dòng 3 đôi chọn được - Phiếu RW "Spray Out · Pending repair" ghi Repaired → không có dòng ở Step 2 này (hiện ở Packing Planning Spray) Nguồn: Q-20261013-01 · Q-20261001-11 (OQ-96) · prototype v0.91Planner phân bổ hàng đã chọn ở Step 1 và Step 2 vào từng Customer P.O — đây là bước duy nhất phân bổ. Thao tác: "Step 3 · Allocate to Detail P.O" › khối "Selected Stock (by size)" (Selected · "Allocated to P.O" · "Not Allocated"); mỗi P.O hai dòng "Remaining" / "Allocated" (ô nhập theo size), cột "Action" "Allocate" / "Remove", nút "Auto Allocate", "Clear". Hệ thống: chỉ liệt kê P.O SPRAY cùng P.O (Month), khớp Model · Base Color · AL / INT và Grade P.O chấp nhận; "Remaining" = ORDER của P.O − số các plan Spray Out khác còn hiệu lực đã phân bổ. Hệ thống: "Auto Allocate" lấp hàng Repair trước, rồi P.O có ETD sớm nhất trước; một plan chứa được nhiều P.O; Vendor để trống thì lấy NCC của P.O đầu tiên. Kiểm thử: - Chọn 1.802 đôi, Auto Allocate → dòng Repair được dùng trước, P.O ETD sớm được lấp trước - Không P.O nào khớp → "No Customer P.O in P.O Month … matches the selected stock." Nguồn: Q-20260929-06 · Q-20261001-10 (OQ-93) · prototype v0.69Hệ thống kiểm phân bổ trước khi lưu hoặc phát hành plan. Có: có Vendor, Plan Date, mọi P.O cùng một P.O (Month), tổng mỗi LOT / size ≤ "Available", tổng mỗi P.O / size ≤ "Remaining", có ít nhất một đôi được phân bổ. Không: hiện lỗi trên trang — "Select the Vendor." · "LOT … / … exceeds Available (n)." · "P.O … / … exceeds the P.O Remaining (n)." · "All P.O of one plan must be in the same P.O Month." · "Allocate at least one pair to a Detail P.O." Kiểm thử: - Available 136, nhập 137 → bị chặn "exceeds Available (136)" - Remaining P.O 80, nhập 80 → được Nguồn: prototype v0.69Planner phát hành plan ngay hay lưu nháp để sửa tiếp? Có: bấm "Release Plan" ở Step 3. Chưa: bấm "Save Draft". Nguồn: prototype v0.69Planner lưu plan ở dạng nháp để mở lại sửa sau. Thao tác: Step 3 › nút "Save Draft". Kết quả: plan → DRAFT; số đã phân bổ được giữ ngay (trừ khỏi Available của LOT / Repair và Remaining của P.O) cho tới khi xoá nháp; mở lại plan vào thẳng Step 3. Kiểm thử: - Lưu nháp plan giữ 40 đôi của LOT A → plan khác thấy Available của LOT A giảm 40 Chưa chốt: plan DRAFT có nên giữ nguồn không — prototype v0.69 giữ ngay từ khi lưu nháp. Nguồn: prototype v0.69Planner phát hành plan để chờ duyệt. Thao tác: Step 3 › nút "Release Plan" → hộp "Release Spray Out Plan …?" (P.O (Month) · P.O in plan · Vendor · Plan Date · Send Qty, bảng size theo "P.O · LOT / Repair") › "Release Plan". Hệ thống: kiểm lại như bước "Phân bổ hợp lệ?"; số theo size được giữ cho từng Customer P.O, hàng Repair dùng trước. Kết quả: plan → NEW (chờ duyệt); thông báo "… released · New (waiting for approval) · n P.O · n pairs reserved · Vendor …". Kiểm thử: - Release plan 2 P.O → danh sách SPRAY OUT List hiện hai dòng (mỗi P.O một dòng) cùng số plan Nguồn: Q-20261001-10 (OQ-93) · prototype v0.69Planner quyết định plan NEW có được gửi NCC sơn không. Đạt: bấm "Approve" trên trang chi tiết plan. Không: bấm "Reject". Chưa chốt: Planner tự duyệt lệch BRD §7 (Production Supervisor duyệt) — chờ khách xác nhận. Nguồn: Q-20261005-01 (2) · Q-20260928-04 · prototype v0.69Planner từ chối plan và ghi lý do; nguồn đã giữ được trả lại. Khi nào: plan NEW. Thao tác: trang chi tiết plan › nút "Reject" → hộp "Reject Spray Out Plan …?" › nhập lý do › "Reject". Kết quả: plan → REJECTED, là trạng thái cuối — không mở lại sửa được; LOT, Repair và Remaining P.O được trả lại ("LOT reservation released"); Planner lập plan mới nếu cần. Chặn khi: lý do để trống. Kiểm thử: - Reject plan giữ 40 đôi LOT A → plan mới thấy Available LOT A tăng lại 40 - Reject không nhập lý do → không lưu được Chưa chốt: prototype v0.69 chưa có ô lý do trong hộp Reject. Nguồn: Q-20260923-19 (C) · Q-20261005-01 (2) · prototype v0.69Planner duyệt plan để hàng được xuất sang NCC sơn. Khi nào: plan NEW. Thao tác: trang chi tiết plan › nút "Approve" → hộp "Approve Spray Out Plan …?" › "Approve". Hệ thống: kiểm lại phân bổ như lúc Release (Vendor, Available, Remaining P.O). Kết quả: plan → APPROVED; hệ thống sinh phiếu Stock Out ngay sau đó (bước kế). Kiểm thử: - Approve plan NEW → plan APPROVED, có một phiếu Stock Out mang số plan Nguồn: Q-20261005-01 (2) · Q-20261005-04 · prototype v0.69Hệ thống tự sinh một phiếu Stock Out để xuất hàng của plan khỏi WH-TRM-01 gửi Vendor. Khi nào: plan chuyển sang APPROVED. Hệ thống: một phiếu / plan, kho xuất WH-TRM-01, nơi nhận là Vendor của plan; mỗi dòng plan (LOT hoặc dòng Repair × Customer P.O) một dòng phiếu theo size; chỉ hàng LOT / Repair, không vật tư khác. Kết quả: phiếu Stock Out chờ kho duyệt ở màn WMS Outbound; tồn WH-TRM-01 chưa đổi cho tới khi phiếu APPROVED. Kiểm thử: - Approve plan 4 dòng 2.050 đôi → phiếu Stock Out 4 dòng, 2.050 đôi, Vendor COVA Chưa chốt: trạng thái phiếu lúc sinh (SAVED hay SUBMITTED) và số phiếu; prototype v0.69 còn sinh MOR-SO thay cho Stock Out. Nguồn: Q-20261005-04 · Q-20260930-05 (tiền lệ Stock Out Curing)Warehouse Staff duyệt phiếu Stock Out khi hàng thực sự rời xưởng sang NCC sơn. Khi nào: phiếu Stock Out của plan APPROVED, chưa APPROVED. Thao tác: WMS › màn "Outbound" (Stock Out) › mở phiếu mang số Spray Out Plan › Approve. Hệ thống: trừ các LOT / dòng Repair của phiếu khỏi WH-TRM-01 theo size theo luật Slip của WMS. Kết quả: phiếu Stock Out → APPROVED; plan được chuyển sang SENT ở bước kế. Kiểm thử: - LOT 1.826 đôi, phiếu xuất 640 đôi của LOT → sau khi phiếu APPROVED tồn LOT ở WH-TRM-01 còn 1.186 Chưa chốt: ai submit phiếu trước khi duyệt và kho có được sửa số trên phiếu tự sinh không. Nguồn: Q-20261005-05 (2)Hệ thống chuyển plan sang SENT khi phiếu Stock Out của plan được duyệt. Khi nào: phiếu Stock Out của plan chuyển APPROVED. Hệ thống: OUT DATE của plan = ngày phiếu APPROVED; "At vendor" = Send Qty. Kết quả: plan → SENT; plan hiện ở "Waiting to Return" của Outsourcing Result. Màn Outsourcing Planning không còn khối "Send to vendor" / nút "Confirm Spray Out". Kiểm thử: - Phiếu APPROVED ngày 2026-08-11 → plan SENT, OUT DATE 2026-08-11 Chưa chốt: prototype v0.69 còn khối "Send to vendor" với ô "OUT DATE" và nút "Confirm Spray Out". Nguồn: Q-20261005-05 (2)Plan còn sửa được không? Chưa: plan DRAFT, NEW, hoặc APPROVED mà phiếu Stock Out chưa APPROVED → cho sửa. Rồi: phiếu Stock Out đã APPROVED (hàng đã xuất, plan SENT / RECEIVED) → không sửa; REJECTED / CANCELLED cũng không mở lại được. Nguồn: Q-20261005-05 (1)Planner mở lại plan chưa xuất hàng để sửa phân bổ. Khi nào: plan DRAFT / NEW (nút "Edit plan") hoặc APPROVED với phiếu Stock Out chưa APPROVED (nút "Revise plan"). Thao tác: trang chi tiết › "Edit plan" / "Revise plan" → trang "Edit Spray Out Plan" mở ở Step 3 › "Save Draft", "Release Plan" hoặc "Save revision". Kết quả: DRAFT / NEW lưu theo nút bấm; APPROVED bấm "Save revision" → plan giữ APPROVED, hệ thống cập nhật dòng phiếu Stock Out theo số mới. Chặn khi: plan đã bị người khác đổi hoặc phiếu đã APPROVED — "The plan changed or has already shipped. Reopen the current plan before editing." Kiểm thử: - Revise plan APPROVED giảm 40 đôi khi phiếu chưa APPROVED → phiếu Stock Out giảm 40 đôi Chưa chốt: Revise plan APPROVED không qua duyệt lại — lệch nguyên tắc Revision về DRAFT, duyệt lại. Nguồn: Q-20261005-05 (1) · prototype v0.69Plan muốn bỏ đang là nháp không? Có: plan DRAFT → xoá được. Không: xét tiếp có huỷ được không. Nguồn: prototype v0.69Planner xoá plan nháp không dùng nữa. Thao tác: trang chi tiết plan DRAFT › nút "Delete Draft". Kết quả: plan bị xoá; nguồn và Remaining P.O đã giữ được trả lại; thông báo "… deleted · reservation released". Kiểm thử: - Plan NEW → không có nút "Delete Draft" Nguồn: prototype v0.69Plan có còn huỷ được không? Có: plan NEW, hoặc APPROVED mà phiếu Stock Out chưa APPROVED → huỷ được. Không: phiếu Stock Out đã APPROVED (hàng đã xuất) → không huỷ; thông báo "Status cannot change after shipment or receipt." Nguồn: Q-20261005-05 (1)Planner huỷ plan chưa xuất hàng. Thao tác: trang chi tiết plan › nút "Cancel Plan" → hộp "Cancel Spray Out Plan …?" › "Cancel Plan". Kết quả: plan → CANCELLED; nguồn và Remaining P.O được trả lại ("LOT reservation released"); plan APPROVED có phiếu Stock Out chưa APPROVED thì hệ thống huỷ phiếu đó. Kiểm thử: - Huỷ plan APPROVED giữ 100 đôi, phiếu chưa APPROVED → LOT có lại 100 đôi Available, phiếu Stock Out CANCELLED, tồn WH-TRM-01 không đổi Nguồn: Q-20261005-05 (1) · prototype v0.69
Bắt đầuđiểm khởi động của luồng
Kết thúcmỗi Bắt đầu đi tới ít nhất một Kết thúc
Bước xử lýdải trên = màn hình thực hiện, ô màu = nền tảng
Điểm quyết địnhmỗi nhánh đi ra đều có nhãn điều kiện
Dữ liệu / chứng từđầu vào ở lane Input, kết quả ở lane Output
Luồng chínhthứ tự bắt buộc của các bước
Nhãn trên hộpMaster dataWebSystem (auto)

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

Spray Out PlanDRAFTNEWAPPROVEDSENTRECEIVEDRelease PlanApprove · sinh Stock OutStock Out APPROVED (WMS)Record Result — hết RemainingĐã xoáDelete DraftREJECTEDRejectCANCELLEDCancel PlanEdit plan · Save DraftCancel Plan
◻ DRAFT ◻ NEW / SENT ◻ APPROVED / RECEIVED ◻ REJECTED / CANCELLED

Input

#InputLoạiĐi vào bước
I-1Master data Vendor (nhà cung cấp sơn, vd COVA · MINH HUY)Master dataTạo Spray Out Plan
I-2Waiting SPRAY-OUT ZONE — LOT Spray có A + A- đã ghi ở Trimming Result, nằm ở kho WH-TRM-01Bể tồn công đoạn — flow TrimmingStep 1 · Chọn LOT Waiting SPRAY-OUT ZONE
I-3Repair Inventory — hàng Spray đã sửa xong (Repaired) ở Repair / Rework, gồm Pending repair nhận về từ NCCBể tồn — flow Repair / ReworkStep 2 · Chọn Repair Inventory
I-4Customer P.O SPRAY · ETD · P.O Month (từ Sales Order)Chứng từ — Sales OrderStep 3 · Phân bổ vào Detail P.O

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

BướcVai tròMàn hình · nút trên UI
Tạo Spray Out PlanPlannerOutsourcing Planning · SPRAY OUT List · Create Plan → Add Spray Out Plan (card Plan Details)
Step 1 · Chọn LOT Waiting SPRAY-OUT ZONE · Step 2 · Chọn Repair Inventory · Step 3 · Phân bổ vào Detail P.OPlannerOutsourcing Planning · Step 1 · Select Waiting SPRAY-OUT ZONE · Step 2 · Select Repair Inventory · Step 3 · Allocate to Detail P.O (Allocate, Remove, Auto Allocate, Clear)
Lưu nháp · Phát hành Spray Out PlanPlannerOutsourcing Planning · Save Draft, Release Plan
Duyệt · Từ chối Spray Out PlanPlannerOutsourcing Planning · Spray Out Plan detail (Approve, Reject)
Sinh phiếu Stock Out WH-TRM-01 → VendorSystem (auto)Outsourcing Planning · khi Approve
Duyệt phiếu Stock Out → plan SENTWarehouse Staff · System (auto)WMS · Outbound (Stock Out); plan SENT, OUT DATE = ngày duyệt
Sửa · Xoá nháp · Huỷ Spray Out PlanPlannerOutsourcing Planning · Edit plan, Revise plan, Delete Draft, Cancel Plan

Output

#OutputĐiều kiện sinh ra
O-1Chặn Release — vượt Available / Remaining P.O, thiếu VendorPhân bổ không qua kiểm tra ở Step 3
O-2Plan DRAFT — mở lại Step 3, Release sauPlanner bấm Save Draft
O-3Plan REJECTED + lý do — nguồn trả về, lập plan mớiPlanner bấm Reject plan NEW
O-5Phiếu Stock Out WH-TRM-01 → Vendor gửi WMS (chờ kho duyệt)Plan chuyển APPROVED
O-6Plan SENT — LOT ở NCC (đã trừ WH-TRM-01), chờ Outsourcing ResultPhiếu Stock Out của plan APPROVED ở WMS
O-7Không sửa — hàng đã ở NCCPlan SENT / RECEIVED
O-8Plan sửa ở Step 3 — phiếu Stock Out cập nhật theo số mớiPlanner sửa plan DRAFT / NEW / APPROVED
O-9Plan nháp đã xoá · nguồn trả vềPlanner bấm Delete Draft
O-10Không huỷ được — phiếu Stock Out đã APPROVEDPlan SENT / RECEIVED
O-11Plan CANCELLED — nguồn trả về, phiếu Stock Out chưa duyệt bị huỷPlanner bấm Cancel Plan plan NEW / APPROVED

Thuật ngữ

Thuật ngữNghĩa trong flow này
P.OCustomer PO — đơn hàng của khách; một Spray Out Plan chứa được nhiều P.O cùng P.O (Month)
P.O (Month)Tháng của P.O; mọi P.O trong một plan phải cùng tháng
Waiting SPRAY-OUT ZONEKhu chờ gửi sơn: LOT Spray có A + A- đã ghi ở Trimming Result, nằm ở WH-TRM-01
Repair InventoryHàng Spray đã sửa xong (Repaired) ở Repair / Rework
AvailableSố còn chọn được của LOT / dòng Repair = số nguồn − số các plan khác còn hiệu lực đang giữ
RemainingSố còn phải gửi sơn của P.O = ORDER − số các plan Spray Out khác còn hiệu lực đã phân bổ
VendorNhà cung cấp sơn nhận hàng gia công (vd COVA, MINH HUY)
OUT DATENgày hàng rời xưởng sang NCC = ngày phiếu Stock Out của plan được duyệt
Stock OutPhiếu xuất kho WMS (màn Outbound); hệ thống tự sinh khi Approve Spray Out Plan, xuất LOT / Repair của plan khỏi WH-TRM-01 gửi Vendor
SENTHàng đã rời xưởng, đang ở NCC sơn; nhận về ở Outsourcing Result
A / A-Grade hàng đạt (A) và đạt có lỗi nhẹ (A-)