# FG Receipt — nhận lô thành phẩm vào kho FG, phân bổ cho Sales Order theo ETD, chuyển sang WMS

> Fine Chemical (FC) · Module MES · v0.3 · 24/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: /mes/fg-receipt

## 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
- System
- 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 | Packing Output đã Complete + FG Handover Note |  | B07 |
| B02 | Input | Dữ liệu | Lô xong công đoạn cuối (routing tắt Packing) |  | B07 |
| B03 | Input | Dữ liệu | Master data: FG Warehouse · Bin | Master data | B13 |
| B04 | Input | Dữ liệu | QA disposition của lỗi Critical |  | B16 |
| B05 | Input | Dữ liệu | Dòng SO phân bổ cho WO (Qty · Current ETD) |  | B22 |
| B06 | System | Bắt đầu | Start |  | B07 |
| B07 | System | Bước | Đưa lô vào FG Queue | System (auto) · FG Receipt | B08 [Waiting FG] |
| B08 | Warehouse Staff | Bước | Lọc FG Queue theo SO · WO | Web · FG Receipt | B09 |
| B09 | Warehouse Staff | Bước | Chọn dòng SO · lô cần nhận | Web · FG Receipt | B10 |
| B10 | Warehouse Staff | Bước | Bấm Receive to Warehouse | Web · FG Receipt | B11 |
| B11 | Warehouse Staff | Điểm quyết định | Đã chọn ít nhất một dòng? |  | B12 [Không]; B13 [Có] |
| B12 | Output | Dữ liệu | Chặn: "Select at least one SO line." |  | (kết thúc) |
| B13 | Warehouse Staff | Bước | Chọn kho · Bin nhận | Web · FG Receipt | B14 |
| B14 | Warehouse Staff | Điểm quyết định | Có kho đích? |  | B15 [Không]; B16 [Có] |
| B15 | Output | Dữ liệu | Chặn: "Scan or select the destination FG warehouse first." |  | (kết thúc) |
| B16 | Warehouse Staff | Điểm quyết định | Có lô Critical chưa có QA disposition? |  | B17 [Có]; B18 [Không] |
| B17 | Warehouse Staff | Bước | Loại lô bị chặn khỏi phiếu | System (auto) · FG Receipt | B19; B18 [lô còn lại] |
| B18 | Warehouse Staff | Bước | Xác nhận Warehouse-In | Web · FG Receipt | B20 |
| B19 | Output | Dữ liệu | Lô bị chặn ở lại FG Queue — chờ QA disposition |  | (kết thúc) |
| B20 | System | Bước | Tạo FG Receipt Received | System (auto) · FG Receipt | B21; B22 |
| B21 | Output | Dữ liệu | FG Receipt FGR-nnnn Received · lô · kho · Bin |  | (kết thúc) |
| B22 | System | Bước | Phân bổ FG cho SO của WO theo ETD | System (auto) · FG Receipt | B23 |
| B23 | System | Điểm quyết định | Còn số không gắn Customer PO? |  | B24 [Có]; B25 [Không] |
| B24 | System | Bước | Tách phần dư vào Common Stock | System (auto) · FG Receipt | B26; B25 |
| B25 | System | Bước | Cập nhật WO Completed Qty | System (auto) · FG Receipt | B27; B28 |
| B26 | Output | Dữ liệu | Phần không gắn Customer PO → Common Stock |  | (kết thúc) |
| B27 | Output | Dữ liệu | WO Completed Qty + phân bổ SO đã nhận |  | (kết thúc) |
| B28 | System | Bước | Sinh Product Income Request | System (auto) · FG Receipt | B29; B30 |
| B29 | Output | Dữ liệu | Product Income Request → WMS Product Income |  | (kết thúc) |
| B30 | System | Kết thúc | End |  |  |

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

#### B07 · Đưa lô vào FG Queue

- System · System (auto) · FG Receipt
- Đến từ: B06, B01, B02
- Đi tới [Waiting FG]: B08 · Lọc FG Queue theo SO · WO

> Hệ thống đưa lô đã xong công đoạn cuối vào hàng chờ nhận thành phẩm.  
> Hệ thống: nguồn mặc định là lô Packing đã bàn giao (Complete Packing Output + FG Handover Note); routing không có Packing thì lô vào thẳng từ công đoạn cuối, không qua Packing QC.  
> Kết quả: lô ở tab "FG Queue" ("SO lines that finished the last routing process — choose a warehouse and receive them."), trạng thái "Waiting FG", xếp theo ETD tăng dần; KPI "LOTS WAITING" · "WAITING QTY".  
> Nguồn: Q-20260918-31 · prototype v0.23  

#### B08 · Lọc FG Queue theo SO · WO

- Warehouse Staff · Web · FG Receipt
- Đến từ: B07
- Đi tới: B09 · Chọn dòng SO · lô cần nhận

> Warehouse Staff lọc hàng chờ theo đơn hàng hoặc lệnh sản xuất.  
> Thao tác: ô chọn "All sales orders" / từng SO; tìm theo WO / SO.  
> Hệ thống: cột "SO No." · "Customer" · "ETD" · "Lot No." · "WO No." · "Item Group" · "Item" · W5…W11 · "Total" · "Finished" · "Status".  
> Nguồn: prototype v0.23  

#### B09 · Chọn dòng SO · lô cần nhận

- Warehouse Staff · Web · FG Receipt
- Đến từ: B08
- Đi tới: B10 · Bấm Receive to Warehouse

> Warehouse Staff chọn các dòng SO / lô sẽ nhận vào kho.  
> Thao tác: tick từng dòng, hoặc ô tiêu đề để chọn tất cả.  
> Hệ thống: dòng đếm "n SO line(s) · n pairs".  
> Nguồn: prototype v0.23  

#### B10 · Bấm Receive to Warehouse

- Warehouse Staff · Web · FG Receipt
- Đến từ: B09
- Đi tới: B11 · Đã chọn ít nhất một dòng?

> Warehouse Staff mở phiếu nhận thành phẩm cho các dòng đã chọn.  
> Thao tác: nút "Receive to Warehouse" cạnh "DEFAULT WAREHOUSE" (vd "WH-FG-01 / Finished Goods A").  
> Kết quả: phiếu yêu cầu nhận mở ra với kho mặc định điền sẵn, đổi hoặc quét kho khác được ("The receipt request opens with this warehouse pre-filled — you can change or scan another one there.").  
> Nguồn: prototype v0.23  

#### B11 · Đã chọn ít nhất một dòng?

- Warehouse Staff
- Đến từ: B10
- Đi tới [Không]: B12 · Chặn: "Select at least one SO line."
- Đi tới [Có]: B13 · Chọn kho · Bin nhận

> Đã chọn ít nhất một dòng SO chưa?  
> Có: mở phiếu nhận.  
> Không: chặn, thông báo "Select at least one SO line."  
> Kiểm thử:  
> - Không tick dòng nào rồi bấm "Receive to Warehouse" → bị chặn  
> Nguồn: prototype v0.23  

#### B13 · Chọn kho · Bin nhận

- Warehouse Staff · Web · FG Receipt
- Đến từ: B11, B03
- Đi tới: B14 · Có kho đích?

> Warehouse Staff chọn kho và Bin nhận hàng.  
> Thao tác: pop-up "FG Warehouse-In Request" (số FGR-REQ-nnnn) › "RECEIVE INTO WAREHOUSE" (bắt buộc) · "BIN / LOCATION" (Optional) · "SCAN WAREHOUSE / BIN BARCODE" → "Scan"; ô "REMARK".  
> Hệ thống: bảng lô "Lot No." · "WO No." · "Item" · W5…W11 · "Total".  
> Nguồn: prototype v0.23  

#### B14 · Có kho đích?

- Warehouse Staff
- Đến từ: B13
- Đi tới [Không]: B15 · Chặn: "Scan or select the destination FG warehouse first."
- Đi tới [Có]: B16 · Có lô Critical chưa có QA disposition?

> Phiếu đã có kho đích chưa?  
> Có: kiểm tiếp lỗi Critical.  
> Không: chặn, thông báo "Scan or select the destination FG warehouse first."  
> Kiểm thử:  
> - Xoá kho mặc định rồi xác nhận → bị chặn  
> Nguồn: prototype v0.23  

#### B16 · Có lô Critical chưa có QA disposition?

- Warehouse Staff
- Đến từ: B14, B04
- Đi tới [Có]: B17 · Loại lô bị chặn khỏi phiếu
- Đi tới [Không]: B18 · Xác nhận Warehouse-In

> Trên phiếu có lô mang lỗi Critical mà QA chưa ra quyết định không?  
> Có: gỡ các lô đó khỏi phiếu, các lô khác nhận bình thường.  
> Không: xác nhận nhận hàng.  
> Hệ thống: lỗi Critical chặn nhận thành phẩm cho tới khi QA ra quyết định ("Block WI closing, FG receipt or shipment until QA disposition is completed.").  
> Chưa chốt: kiểm theo từng lô, không chặn cả phiếu — đề xuất, chưa được xác nhận.  
> Nguồn: BRD §6.5 · BRD §7 · quy ước Q6  

#### B17 · Loại lô bị chặn khỏi phiếu

- Warehouse Staff · System (auto) · FG Receipt
- Đến từ: B16
- Đi tới: B19 · Lô bị chặn ở lại FG Queue — chờ QA disposition
- Đi tới [lô còn lại]: B18 · Xác nhận Warehouse-In

> Hệ thống gỡ lô bị chặn khỏi phiếu nhận.  
> Kết quả: lô Critical chưa có QA disposition ở lại FG Queue, trạng thái "Waiting FG" kèm cờ chặn; các lô còn lại vẫn nhận.  
> Chặn khi: phiếu không còn lô nào thì không xác nhận được.  
> Kiểm thử:  
> - Phiếu 3 lô, 1 lô Critical chưa disposition → nhận 2 lô, lô kia ở lại FG Queue  
> Nguồn: BRD §6.5 · quy ước Q6  

#### B18 · Xác nhận Warehouse-In

- Warehouse Staff · Web · FG Receipt
- Đến từ: B17, B16
- Đi tới: B20 · Tạo FG Receipt Received

> Warehouse Staff xác nhận nhận thành phẩm vào kho.  
> Thao tác: nút "Confirm Warehouse-In" ("Cancel" đóng pop-up, lô giữ "Waiting FG").  
> Kết quả: thông báo "FGR-0001 (from FGR-REQ-0001) — n SO line(s), n pairs received into <kho>."  
> Nguồn: prototype v0.23  

#### B20 · Tạo FG Receipt Received

- System · System (auto) · FG Receipt
- Đến từ: B18
- Đi tới: B21 · FG Receipt FGR-nnnn Received · lô · kho · Bin
- Đi tới: B22 · Phân bổ FG cho SO của WO theo ETD

> Hệ thống tạo phiếu FG Receipt đã nhận.  
> Kết quả: phiếu FGR-nnnn, "Status" = "Received"; lô rời FG Queue sang tab "Receipts" (cột "Receipt No" · "Date" · "Warehouse" · "SO Lines" · "Qty" · "SO" · "Lot" · "Status").  
> Hệ thống: phiếu ghi giao dịch và truy vết lô ("FG Receipt must create stock transaction and lot traceability record."); tồn thành phẩm không tăng ở bước này — chỉ tăng một lần khi Product Income Slip APPROVED ở WMS.  
> Chưa chốt: tồn thành phẩm chỉ tăng ở WMS — đề xuất, chưa được xác nhận.  
> Kiểm thử:  
> - Sau Confirm, lô không còn ở FG Queue và hiện ở tab "Receipts"  
> Nguồn: BRD §6.6 · quy ước Q6  

#### B22 · Phân bổ FG cho SO của WO theo ETD

- System · System (auto) · FG Receipt
- Đến từ: B20, B05
- Đi tới: B23 · Còn số không gắn Customer PO?

> Hệ thống phân bổ số thành phẩm nhận được cho các SO của WO theo ETD.  
> Hệ thống: SO có "Current ETD" sớm hơn được phân bổ trước ("Finished quantity is allocated to Sales Orders by Current ETD priority.").  
> Chưa chốt: prototype có mã "Allocate by ETD" (SO Qty · Allocate · Open · Open / Partial / Fulfilled) nhưng chưa hiện tab.  
> Kiểm thử:  
> - WO có 2 SO, nhận đủ cho 1 SO → SO có ETD sớm hơn được phân bổ trước  
> Nguồn: prototype v0.23 (Master Plan · Plan Details)  

#### B23 · Còn số không gắn Customer PO?

- System
- Đến từ: B22
- Đi tới [Có]: B24 · Tách phần dư vào Common Stock
- Đi tới [Không]: B25 · Cập nhật WO Completed Qty

> Còn số nhận chưa gắn được Customer PO không?  
> Có: số nhận vượt tổng SO của WO, hoặc lô không có Customer PO → tách phần dư vào Common Stock.  
> Không: cập nhật WO luôn.  
> Nguồn: Q-20260918-29  

#### B24 · Tách phần dư vào Common Stock

- System · System (auto) · FG Receipt
- Đến từ: B23
- Đi tới: B26 · Phần không gắn Customer PO → Common Stock
- Đi tới: B25 · Cập nhật WO Completed Qty

> Hệ thống tách phần dư không có Customer PO vào Common Stock.  
> Kết quả: phần dư vào Common Stock, re-map sang SO khác sau. Riêng PO Mỹ, phần dư ≤ 3 % gắn luôn vào PO ("Over shipping 3%(only us)").  
> Kiểm thử:  
> - SO cần 100, nhận 110 (PO không phải Mỹ) → 10 vào Common Stock  
> - PO Mỹ cần 100, nhận 103 → 103 gắn vào PO  
> Nguồn: Q-20260918-29 · Function List no. 76  

#### B25 · Cập nhật WO Completed Qty

- System · System (auto) · FG Receipt
- Đến từ: B24, B23
- Đi tới: B27 · WO Completed Qty + phân bổ SO đã nhận
- Đi tới: B28 · Sinh Product Income Request

> Hệ thống cập nhật số hoàn thành của WO.  
> Kết quả: WO "Completed Qty" và phân bổ nhu cầu được cập nhật ("updates completed quantity for WO and demand allocation").  
> Hệ thống: tiến độ WO tính theo Good Qty của công đoạn cuối hoặc số FG Receipt ("WO completion based on last operation Good Qty or FG Receipt Qty.").  
> Nguồn: BRD §6.6 · BRD §6.1  

#### B28 · Sinh Product Income Request

- System · System (auto) · FG Receipt
- Đến từ: B25
- Đi tới: B29 · Product Income Request → WMS Product Income
- Đi tới: B30 · End

> Hệ thống sinh Product Income Request để WMS nhập kho thành phẩm.  
> Kết quả: Product Income Request theo lô · kho · Bin đã nhận, chuyển sang WMS Product Income.  
> Hệ thống: tồn thành phẩm chỉ tăng khi Product Income Slip APPROVED ở WMS.  
> Chưa chốt: cách sinh Request này là đề xuất (câu J chưa trả lời); lệch Q-20260923-17 (Request tạo từ Sales Order).  
> Nguồn: Q-20260917-22 · Q-20260923-19 (J) · quy ước Q6  

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

#### Lô trong FG Queue

`WAITING FG` → `RECEIVED`

Bước chuyển:

- `WAITING FG` -- Confirm Warehouse-In --> `RECEIVED`

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Packing Output đã Complete + FG Handover Note (Packing hand-over) | Kết quả sản xuất — MES Packing Process | Đưa lô vào FG Queue |
| I-2 | Lô xong công đoạn cuối khi routing tắt Packing — không qua Packing QC | Kết quả sản xuất — MES (step cuối của Routing) | Đưa lô vào FG Queue |
| I-3 | FG Warehouse · Bin (Location) | Master data | Chọn kho · Bin nhận |
| I-4 | QA disposition của lỗi Critical | Kết quả chất lượng — QC / QA | Lô có lỗi Critical chưa có QA disposition? |
| I-5 | Dòng SO phân bổ cho WO (SO Qty · Current ETD) | Chứng từ — module Sales / Master Plan | Phân bổ FG cho SO của WO theo ETD |

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

| Bước | Vai trò | Màn hình · nút trên UI |
| --- | --- | --- |
| Đưa lô vào FG Queue | System (auto) | FG Receipt · tab `FG Queue` (Status `Waiting FG`) |
| Lọc FG Queue theo SO · WO · Chọn dòng SO · lô cần nhận · Bấm Receive to Warehouse | Warehouse Staff | FG Receipt · `All sales orders`, checkbox, `Receive to Warehouse` |
| Chọn kho · Bin nhận · Xác nhận Warehouse-In | Warehouse Staff | Pop-up `FG Warehouse-In Request` (`Scan`, `Cancel`, `Confirm Warehouse-In`) |
| Loại lô bị chặn khỏi phiếu | System (auto) | Pop-up `FG Warehouse-In Request` (kiểm từng lô) |
| Tạo FG Receipt Received · Phân bổ FG cho SO của WO theo ETD · Tách phần dư vào Common Stock · Cập nhật WO Completed Qty · Sinh Product Income Request | System (auto) | FG Receipt · tab `Receipts` |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Chặn: "Select at least one SO line." | Bấm Receive to Warehouse khi chưa chọn dòng nào |
| O-2 | Chặn: "Scan or select the destination FG warehouse first." | Bấm Confirm Warehouse-In khi chưa có kho đích |
| O-3 | Lô bị chặn ở lại FG Queue — chờ QA disposition | Lô có lỗi Critical chưa có QA disposition (BRD §6.5) — hệ gỡ lô đó khỏi phiếu, các lô còn lại vẫn nhận |
| O-4 | FG Receipt FGR-nnnn = `RECEIVED` theo lô · kho · Bin; lô rời FG Queue | Warehouse Staff bấm Confirm Warehouse-In |
| O-5 | Phần không gắn Customer PO → Common Stock | Số nhận vượt tổng SO của WO, hoặc lô không có Customer PO (Q-20260918-29) |
| O-6 | WO Completed Qty + phân bổ SO đã nhận | Sau khi FG Receipt Received và phân bổ SO theo Current ETD |
| O-7 | Product Income Request → WMS Product Income (tồn thành phẩm chỉ tăng khi Product Income Slip `APPROVED`) | Sau khi FG Receipt Received (Q-20260917-22; khuyến nghị câu J, chưa chốt) |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `FG` | Finished Goods — thành phẩm |
| `FG Queue` | Hàng chờ nhận thành phẩm: lô đã xong công đoạn cuối, trạng thái Waiting FG |
| `FG Receipt (FGR)` | Phiếu nhận thành phẩm vào kho; Status Received |
| `QA disposition` | Quyết định của QA cho lô có lỗi Critical; chưa có thì lô không được nhận |
| `ETD` | Ngày dự kiến xuất hàng — SO có ETD sớm được phân bổ trước |
| `Common Stock` | Tồn chung chưa gắn Customer PO, re-map sang SO khác sau |
| `Completed Qty` | Số hoàn thành của WO, cập nhật theo FG Receipt |
| `Product Income Request` | Yêu cầu nhập kho thành phẩm gửi sang WMS; tồn chỉ tăng khi Product Income Slip APPROVED |
