# Exchange Customer PO — Planner đổi hàng đã phân bổ chưa đóng gói của một Customer P.O sang một hoặc nhiều P.O, tự Confirm phiếu EXC; phần đã đổi được hoàn trả cho Packing Planning, phần không đổi ở lại plan nguồn; plan P.O đích dùng MOR của plan nguồn; phiếu DRAFT xoá được, phiếu CONFIRMED huỷ được khi P.O đích chưa đóng gói

> Fine Chemical (FC) · Module MES · v0.5 · 14/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/exchange-customer-po

## 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
- Planner
- 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 Plan RELEASED chưa đóng gói hết (P.O nguồn) |  | B05 |
| B02 | Input | Dữ liệu | Customer P.O đích · balance (Sales Order) |  | B06 |
| B03 | Planner | Bắt đầu | Start |  | B04 |
| B04 | Planner | Bước | Tạo phiếu Exchange Customer PO | Web · Exchange Customer PO | B05 |
| B05 | Planner | Bước | Chọn P.O nguồn · hàng theo size | Web · Exchange Customer PO | B06 |
| B06 | Planner | Bước | Chọn các P.O đích · Reason | Web · Exchange Customer PO | B07 |
| B07 | Planner | Bước | Nhập số đổi theo size từng P.O đích | Web · Exchange Customer PO | B08 |
| B08 | Planner | Điểm quyết định | Số đổi hợp lệ? |  | B07 [Không — sửa]; B09 [Có] |
| B09 | Planner | Điểm quyết định | Confirm ngay? |  | B10 [Chưa]; B11 [Có] |
| B10 | Planner | Bước | Lưu nháp phiếu Exchange Customer PO | Web · Exchange Customer PO | B12; B11 [Confirm từ phiếu DRAFT] |
| B11 | Planner | Bước | Xác nhận phiếu Exchange Customer PO | Web · Exchange Customer PO | B13 |
| B12 | Output | Dữ liệu | Phiếu EXC DRAFT — mở lại sửa được |  | (kết thúc) |
| B13 | Planner | Bước | Ghi phiếu EXC · hoàn trả Remaining | System (auto) · Exchange Customer PO | B14; B15 |
| B14 | Output | Dữ liệu | Remaining P.O nguồn hoàn trả → Packing Planning |  | (kết thúc) |
| B15 | Planner | Bước | Trừ plan nguồn · tạo plan từng P.O đích | System (auto) · Exchange Customer PO | B16; B17 |
| B16 | Output | Dữ liệu | Plan RELEASED cho P.O đích (MOR của plan nguồn) · plan nguồn giữ Remaining → Result |  | (kết thúc) |
| B17 | Planner | Kết thúc | End |  |  |
| B18 | Planner | Bắt đầu | Cần xoá / huỷ phiếu |  | B19 |
| B19 | Planner | Điểm quyết định | Phiếu ở trạng thái nào? |  | B20 [DRAFT]; B21 [CONFIRMED] |
| B20 | Planner | Bước | Xoá phiếu nháp Exchange Customer PO | Web · Exchange Customer PO | B22 |
| B21 | Planner | Điểm quyết định | Huỷ được? |  | B23 [Không]; B24 [Có] |
| B22 | Output | Dữ liệu | Phiếu DRAFT đã xoá — số phiếu không cấp lại |  | (kết thúc) |
| B23 | Output | Dữ liệu | Cancel bị chặn — báo lý do trên phiếu |  | (kết thúc) |
| B24 | Planner | Bước | Huỷ phiếu Exchange Customer PO | Web · Exchange Customer PO | B25 |
| B25 | Planner | Bước | Xoá plan P.O đích · trả số plan nguồn | System (auto) · Exchange Customer PO | B26; B27 |
| B26 | Output | Dữ liệu | Phiếu CANCELLED · plan P.O đích bị xoá · plan nguồn nhận lại số |  | (kết thúc) |
| B27 | Planner | Kết thúc | End |  |  |

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

#### B04 · Tạo phiếu Exchange Customer PO

- Planner · Web · Exchange Customer PO
- Đến từ: B03
- Đi tới: B05 · Chọn P.O nguồn · hàng theo size

> Planner tạo phiếu đổi hàng chưa đóng gói của một Customer P.O sang một hoặc nhiều Customer P.O khác.  
> Khi nào: hàng không đạt P.O nguồn nhưng đạt P.O khác, lịch giao đổi, đơn gấp của khách khác, đổi nước đến; áp cho hàng Logo và SPRAY, không áp cho hàng đang ở NCC Spray Out.  
> Không áp: FG đã đóng gói và nhập kho — đổi P.O bằng chức năng exchange của WMS.  
> Thao tác: menu PACKING › Exchange Customer PO › nút "Create Exchange".  
> Kết quả: mở phiếu mới; số phiếu cấp khi lưu.  
> Chưa chốt: tên nút và bố cục theo prototype v0.92, khách chưa xác nhận.  
> Nguồn: Q-20261002-02 (1) · Q-20261002-04 · Q-20261014-01 (2) · MOM 28/09 dòng 12–13  

#### B05 · Chọn P.O nguồn · hàng theo size

- Planner · Web · Exchange Customer PO
- Đến từ: B01, B04
- Đi tới: B06 · Chọn các P.O đích · Reason

> Planner chọn P.O nguồn rồi chọn Packing Plan của P.O đó.  
> Thao tác: ô "LOGO / SPRAY *" → "SOURCE CUSTOMER P.O *" → "PACKING PLAN NO. *"; P.O chỉ có một plan thì hệ thống tự chọn.  
> Hệ thống: chỉ liệt kê Packing Plan RELEASED chưa đóng gói hết; một P.O có thể có nhiều plan; số đổi được theo size "Available to exchange" = Plan Qty − đã Record Output (A + A- + C + Pending repair).  
> Hệ thống: khối thông tin P.O (Customer · Model · Base Color · Upper Color (chỉ SPRAY) · AL / INT · Destination · ETD · Sales Order) hiện sẵn với giá trị "—"; chọn Source Customer P.O thì hệ thống điền.  
> Kiểm thử:  
> - Plan 690 đôi đã Record Output 600 → "Available to exchange" còn 90  
> - P.O 260811-06 chỉ có PKP-20260812-04 → chọn P.O xong, ô Packing Plan No. tự điền  
> Nguồn: Q-20261007-03 (7) · Q-20261014-01 (1, 2) · Q-20261006-06 · prototype v0.92  

#### B06 · Chọn các P.O đích · Reason

- Planner · Web · Exchange Customer PO
- Đến từ: B02, B05
- Đi tới: B07 · Nhập số đổi theo size từng P.O đích

> Planner chọn một hoặc nhiều Customer P.O đích và ghi lý do đổi nếu cần.  
> Thao tác: bảng Step 2 mỗi dòng một P.O đích, ô "Target Customer P.O *"; nút "Add Target P.O" thêm dòng, biểu tượng thùng rác xoá dòng; ô "REASON" nhập text, không bắt buộc, chung cho cả phiếu.  
> Hệ thống: chỉ liệt kê P.O cùng Model, Base Color, AL / INT với P.O nguồn (SPRAY thêm Upper Color) và còn balance; P.O đã chọn ở dòng khác không hiện lại; mỗi dòng hiện Customer · Model · Base Color · AL / INT · Destination · ETD · Sales Order · Exchange Qty.  
> Kiểm thử:  
> - P.O nguồn Sandal Black · Black · INT → danh sách P.O đích không có P.O khác màu hoặc AL  
> - Dòng 1 chọn 260811-14 → ô P.O của dòng 2 không còn 260811-14  
> Nguồn: Q-20261014-01 (3) · Q-20261002-04 · Q-20261006-06 (2) · prototype v0.92  

#### B07 · Nhập số đổi theo size từng P.O đích

- Planner · Web · Exchange Customer PO
- Đến từ: B06, B08
- Đi tới: B08 · Số đổi hợp lệ?

> Planner nhập số đôi đổi theo size cho từng P.O đích, hoặc để hệ thống tự điền.  
> Thao tác: Step 3, mỗi P.O đích có dòng "Balance · P.O …" và dòng nhập "Exchange → P.O …"; nút "Auto Fill (earliest ETD first)" điền thay.  
> Hệ thống: Auto Fill với mỗi size rót lần lượt cho P.O đích có ETD sớm nhất, tối đa bằng Balance của P.O đó, hết "Available to exchange" thì dừng; cùng ETD theo thứ tự dòng; ghi đè số đã nhập.  
> Hệ thống: "Total exchange" = Σ số đổi các P.O đích theo size; "Remaining · stays with P.O <nguồn>" = Available to exchange − Total exchange.  
> Kiểm thử:  
> - Available W5 60; P.O A ETD 19/08 Balance 50, P.O B ETD 17/08 Balance 140 → Auto Fill: B 60, A 0, Remaining 0  
> - Nhập A W5 20, B W5 30 → Total exchange 50, Remaining W5 10  
> Nguồn: Q-20261014-01 (3, 4, 5) · prototype v0.92  

#### B08 · Số đổi hợp lệ?

- Planner
- Đến từ: B07
- Đi tới [Không — sửa]: B07 · Nhập số đổi theo size từng P.O đích
- Đi tới [Có]: B09 · Confirm ngay?

> Hệ thống kiểm phiếu trước khi lưu hoặc xác nhận.  
> Có: đã chọn P.O nguồn và Packing Plan, ít nhất một P.O đích hợp lệ, không P.O nào chọn hai lần, mỗi P.O đích có tổng > 0, số đổi của từng P.O mỗi size ≤ Balance của P.O đó, và Total exchange mỗi size ≤ "Available to exchange".  
> Không: báo lỗi và sửa — "Select the source Customer P.O and the Packing Plan No." · "Select at least one target Customer P.O with the same Model, Base Color and AL / INT." · "P.O <x>: enter the quantity to exchange by size, or remove the row." · "P.O <x> · <size>: exchange quantity exceeds the balance of the P.O (n)." · "<size>: total exchange quantity (n) exceeds the available quantity of <plan> (m)."  
> Kiểm thử:  
> - Available W5 60, nhập P.O A W5 50 và P.O B W5 30 → báo "M3/W5: total exchange quantity (80) exceeds the available quantity of PKP-20260812-04 (60)."  
> - Chọn P.O đích nhưng để trống số → báo "P.O 260811-05: enter the quantity to exchange by size, or remove the row."  
> Không kiểm: REASON để trống vẫn lưu / xác nhận được.  
> Chưa chốt: câu thông báo theo prototype v0.92, khách chưa xác nhận.  
> Nguồn: Q-20261014-01 (3) · Q-20261006-06 · prototype v0.92  

#### B09 · Confirm ngay?

- Planner
- Đến từ: B08
- Đi tới [Chưa]: B10 · Lưu nháp phiếu Exchange Customer PO
- Đi tới [Có]: B11 · Xác nhận phiếu Exchange Customer PO

> Planner chọn lưu nháp hay xác nhận ngay.  
> Chưa: cần soát lại → lưu nháp, phiếu DRAFT.  
> Có: số đã đúng → xác nhận, phiếu CONFIRMED.  
> Nguồn: Q-20261002-04 (3)  

#### B10 · Lưu nháp phiếu Exchange Customer PO

- Planner · Web · Exchange Customer PO
- Đến từ: B09
- Đi tới: B12 · Phiếu EXC DRAFT — mở lại sửa được
- Đi tới [Confirm từ phiếu DRAFT]: B11 · Xác nhận phiếu Exchange Customer PO

> Planner lưu phiếu nháp để làm tiếp sau.  
> Thao tác: nút "Save Draft".  
> Kết quả: phiếu → DRAFT; chưa đổi số nào ở Packing Planning, Packing Result hay WMS; mở lại sửa được.  
> Chưa chốt: phiếu DRAFT có huỷ / xoá được không, và có giữ chỗ số "Available to exchange" không — đề xuất, chưa được xác nhận.  
> Nguồn: Q-20261002-04 (3)  

#### B11 · Xác nhận phiếu Exchange Customer PO

- Planner · Web · Exchange Customer PO
- Đến từ: B10, B09
- Đi tới: B13 · Ghi phiếu EXC · hoàn trả Remaining

> Planner tự xác nhận phiếu, không qua bước duyệt.  
> Khi nào: phiếu mới hoặc DRAFT, đã qua kiểm số.  
> Thao tác: nút "Confirm Exchange" → popup "Exchange n pairs from <plan> to <k> P.Os?" (From plan · From P.O · To P.O · Reason · Exchange quantity · Remaining; bảng size từng P.O đích, Total exchange, Remaining) → nút "Confirm Exchange".  
> Kết quả: phiếu → CONFIRMED.  
> Chưa chốt: phiếu CONFIRMED có huỷ hoặc đảo được không.  
> Nguồn: Q-20261002-04 (3) · Q-20261014-01 · prototype v0.92  

#### B13 · Ghi phiếu EXC · hoàn trả Remaining

- Planner · System (auto) · Exchange Customer PO
- Đến từ: B11
- Đi tới: B14 · Remaining P.O nguồn hoàn trả → Packing Planning
- Đi tới: B15 · Trừ plan nguồn · tạo plan từng P.O đích

> Hệ thống ghi phiếu và hoàn trả balance của P.O nguồn cho Packing Planning.  
> Hệ thống: số phiếu "EXC-<YYYYMMDD>-NN", một phiếu cho mọi P.O đích; Remaining (balance) theo size của P.O nguồn ở Packing Planning cộng lại đúng Total exchange; balance của từng P.O đích giảm số đã nhận.  
> Kết quả: Planner chọn nguồn khác cho phần đã đổi đi của P.O nguồn, lập plan lại ở Packing Planning.  
> Kiểm thử:  
> - Đổi 30 đôi W5 từ P.O 260811-06 sang 260811-04 → Step 3 của Packing Planning: "Remaining" W5 của 260811-06 tăng 30  
> Chưa chốt: cách đánh số phiếu của màn mới; "EXC-<YYYYMMDD>-NN" lấy theo khung Exchange cũ.  
> Nguồn: Q-20261002-03 · Q-20261014-01 · MOM 28/09 dòng 14  

#### B15 · Trừ plan nguồn · tạo plan từng P.O đích

- Planner · System (auto) · Exchange Customer PO
- Đến từ: B13
- Đi tới: B16 · Plan RELEASED cho P.O đích (MOR của plan nguồn) · plan nguồn giữ Remaining → Result
- Đi tới: B17 · End

> Hệ thống chuyển phần hàng đổi từ plan nguồn sang plan mới của từng P.O đích; phần không đổi ở lại plan nguồn.  
> Hệ thống: mỗi P.O đích một Packing Plan RELEASED mới, dòng nguồn ghi "Exchange" và số EXC; Plan Qty của plan nguồn giảm Total exchange theo size; Spray Plan / Spray Result không đổi.  
> Hệ thống: plan P.O đích không tạo MOR mới — mang số MOR đã tạo cho plan nguồn (cột "MOR" hiện "MOR-PK-… · shared"; Packing Result ghi "shared from <plan nguồn> (Exchange EXC-…)").  
> Kết quả: plan mới hiện ở Packing Result với trạng thái "Waiting"; Remaining (phần không đổi) vẫn thuộc P.O nguồn, plan nguồn tiếp tục đóng gói ở Packing Result.  
> Kiểm thử:  
> - Plan nguồn 690 đôi, đổi 20 cho P.O A và 80 cho P.O B → thêm hai plan RELEASED 20 và 80 đôi; plan nguồn còn 590 đôi "Waiting" ở Packing Result  
> - Plan nguồn có MOR-PK-2603 → hai plan mới hiện "MOR-PK-2603 · shared", không có MOR mới  
> Nguồn: Q-20261014-01 (3, 5) · Q-20261014-02 (1) · Q-20261002-04 · prototype v0.93  

#### B19 · Phiếu ở trạng thái nào?

- Planner
- Đến từ: B18
- Đi tới [DRAFT]: B20 · Xoá phiếu nháp Exchange Customer PO
- Đi tới [CONFIRMED]: B21 · Huỷ được?

> Trạng thái phiếu quyết định Planner xoá hay huỷ.  
> DRAFT: phiếu chưa đổi số nào → xoá hẳn.  
> CONFIRMED: đã sinh plan cho P.O đích → chỉ huỷ được có điều kiện, phiếu giữ vết CANCELLED.  
> Nguồn: Q-20261014-02 (2)  

#### B20 · Xoá phiếu nháp Exchange Customer PO

- Planner · Web · Exchange Customer PO
- Đến từ: B19
- Đi tới: B22 · Phiếu DRAFT đã xoá — số phiếu không cấp lại

> Planner xoá phiếu nháp không dùng nữa.  
> Thao tác: mở phiếu DRAFT › nút "Delete Draft" → popup "Delete draft EXC-…?" → nút "Delete Draft".  
> Kết quả: phiếu biến mất khỏi "Exchange List"; số phiếu đã xoá không cấp lại cho phiếu sau.  
> Kiểm thử:  
> - Xoá EXC-20260811-01 (DRAFT) rồi Confirm phiếu mới → phiếu mới nhận EXC-20260811-02  
> Nguồn: Q-20261014-02 (2) · prototype v0.93  

#### B21 · Huỷ được?

- Planner
- Đến từ: B19
- Đi tới [Không]: B23 · Cancel bị chặn — báo lý do trên phiếu
- Đi tới [Có]: B24 · Huỷ phiếu Exchange Customer PO

> Hệ thống xét phiếu CONFIRMED còn huỷ được không.  
> Có: plan nguồn còn RELEASED; chưa plan P.O đích nào Record Output ở Packing Result; balance của P.O nguồn mỗi size ≥ số đã đổi (phần hoàn trả chưa bị lập plan lại).  
> Không: nút "Cancel Exchange" mờ, phiếu hiện lý do — "Packing output is already recorded for <plan> (P.O <x>) in Packing Result — the exchange cannot be cancelled." · "<size>: the quantity returned to P.O <x> has already been planned again (n of m pairs still open) — revise that plan first." · "The source plan <plan> is no longer Released — the exchange cannot be cancelled."  
> Kiểm thử:  
> - Plan P.O đích PKP-20260811-03 đã Record Output → nút "Cancel Exchange" mờ, hiện câu "Packing output is already recorded for PKP-20260811-03 (P.O 260811-04) …"  
> Nguồn: Q-20261014-02 (2) · prototype v0.93  

#### B24 · Huỷ phiếu Exchange Customer PO

- Planner · Web · Exchange Customer PO
- Đến từ: B21
- Đi tới: B25 · Xoá plan P.O đích · trả số plan nguồn

> Planner huỷ phiếu đã xác nhận khi việc đổi hàng không còn cần.  
> Thao tác: mở phiếu CONFIRMED › nút "Cancel Exchange" → popup "Cancel exchange EXC-…?" (From plan · From P.O · To P.O · Plans removed · Quantity returned; bảng size từng P.O đích) → nút "Cancel Exchange".  
> Kết quả: phiếu → CANCELLED, ghi thời điểm và người huỷ; phiếu vẫn ở "Exchange List" (lọc "CANCELLED").  
> Nguồn: Q-20261014-02 (2) · prototype v0.93  

#### B25 · Xoá plan P.O đích · trả số plan nguồn

- Planner · System (auto) · Exchange Customer PO
- Đến từ: B24
- Đi tới: B26 · Phiếu CANCELLED · plan P.O đích bị xoá · plan nguồn nhận lại số
- Đi tới: B27 · End

> Hệ thống đưa số lượng về như trước khi đổi.  
> Hệ thống: xoá các Packing Plan của P.O đích sinh từ phiếu; plan nguồn nhận lại Total exchange theo size; balance của từng P.O đích tăng lại, Remaining hoàn trả của P.O nguồn ở Packing Planning giảm lại; MOR của plan nguồn không đổi.  
> Kết quả: plan P.O đích biến mất khỏi Packing Result; plan nguồn đóng gói lại đủ số cũ.  
> Kiểm thử:  
> - Huỷ phiếu 70 đôi (20 + 50) từ PKP-20260812-04 → PKP-20260811-03 / -04 bị xoá, PKP-20260812-04 về lại 690 đôi  
> Nguồn: Q-20261014-02 (2) · prototype v0.93  

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

#### Phiếu Exchange Customer PO

`DRAFT` → `CONFIRMED` → `CANCELLED`

Bước chuyển:

- `DRAFT` -- Confirm Exchange --> `CONFIRMED`
- `DRAFT` -- Delete Draft --> `Đã xoá`
- `CONFIRMED` -- Cancel Exchange — chưa Record Output --> `CANCELLED`

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Packing Plan `RELEASED` của P.O nguồn, chưa đóng gói hết — hàng đã phân bổ, chưa đóng gói; kèm MOR vật tư đóng gói của plan | Chứng từ — flow Packing | Chọn P.O nguồn · hàng theo size |
| I-2 | Customer P.O đích theo size — Model, Base Color, Upper Color, AL / INT, ETD, balance | Chứng từ — Sales Order | Chọn các P.O đích · Reason |

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

| Bước | Vai trò | Màn hình · nút trên UI (theo prototype v0.93) |
| --- | --- | --- |
| Tạo phiếu Exchange Customer PO · Chọn P.O nguồn · hàng theo size · Chọn các P.O đích · Reason · Nhập số đổi theo size từng P.O đích | Planner | Exchange Customer PO · `Create Exchange` · `SOURCE CUSTOMER P.O *` · `PACKING PLAN NO. *` · `Target Customer P.O *` · `Add Target P.O` · `REASON` · `Exchange → P.O …` · `Auto Fill (earliest ETD first)` |
| Lưu nháp phiếu Exchange Customer PO · Xác nhận Exchange Customer PO | Planner | Exchange Customer PO · `Save Draft` · `Confirm Exchange` |
| Ghi phiếu EXC · hoàn trả Remaining · Trừ plan nguồn · tạo plan từng P.O đích | System (auto) | Exchange Customer PO |
| Xoá phiếu nháp Exchange Customer PO · Huỷ phiếu Exchange Customer PO | Planner | Exchange Customer PO · phiếu DRAFT `Delete Draft` · phiếu CONFIRMED `Cancel Exchange` |
| Xoá plan P.O đích · trả số plan nguồn | System (auto) | Exchange Customer PO |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Phiếu EXC `DRAFT` — mở lại sửa được | Planner lưu nháp |
| O-2 | Remaining (balance) của P.O nguồn được hoàn trả → Packing Planning, Planner lập plan lại cho P.O nguồn | Phiếu `CONFIRMED` |
| O-3 | Mỗi P.O đích một Packing Plan `RELEASED` mới → Packing Result (Waiting), không tạo MOR mới — mang số MOR của plan nguồn; plan nguồn giảm Total exchange, phần Remaining không đổi vẫn thuộc P.O nguồn và tiếp tục đóng gói | Phiếu `CONFIRMED` |
| O-4 | Phiếu `DRAFT` đã xoá — số phiếu không cấp lại | Planner bấm Delete Draft |
| O-5 | Cancel bị chặn — phiếu hiện lý do | Plan P.O đích đã Record Output, hoặc Remaining hoàn trả của P.O nguồn đã được lập plan lại, hoặc plan nguồn không còn `RELEASED` |
| O-6 | Phiếu `CANCELLED` — plan P.O đích bị xoá khỏi Packing Result, plan nguồn nhận lại số, balance hai phía trả về như trước khi đổi; MOR plan nguồn không đổi | Planner bấm Cancel Exchange trên phiếu `CONFIRMED` còn huỷ được |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `P.O nguồn · P.O đích` | Customer P.O đang giữ hàng · Customer P.O nhận hàng đổi sang |
| `EXC` | Phiếu Exchange Customer PO, số EXC-<YYYYMMDD>-NN |
| `Reason` | Lý do đổi, nhập text, không bắt buộc, một ô chung cho cả phiếu |
| `Available to exchange` | Số đổi được theo size của Packing Plan nguồn = Plan Qty − đã Record Output (A + A- + C + Pending repair) |
| `Balance · P.O …` | Số P.O đích còn cần theo size (Remaining ở Packing Planning) |
| `Total exchange` | Σ số đổi các P.O đích theo size; mỗi size ≤ Available to exchange |
| `Remaining · stays with P.O …` | Available to exchange − Total exchange: phần không đổi, ở lại plan nguồn của P.O nguồn và vẫn đóng gói ở Packing Result |
| `Auto Fill (earliest ETD first)` | Mỗi size rót lần lượt cho P.O đích có ETD sớm nhất, tối đa Balance của P.O đó, hết Available to exchange thì dừng; cùng ETD theo thứ tự dòng |
| `Remaining (balance) hoàn trả` | Số đã đổi đi được cộng lại vào Remaining của P.O nguồn ở Packing Planning để lập plan lại |
| `AL / INT` | Thị trường của P.O — P.O đích phải trùng với P.O nguồn |
| `MOR` | Material Out Request vật tư đóng gói, tạo khi Release plan nguồn; plan P.O đích sinh từ Exchange dùng chung MOR đó (hiện "MOR-PK-… · shared") |
| `FG` | Thành phẩm đã đóng gói và nhập kho thành phẩm — không đổi P.O ở màn này, dùng chức năng exchange của WMS |
