# Stock Evaluation Checking — Đối chiếu tồn hệ thống với tồn thực tế sau kiểm kê

> Fine Chemical (FC) · Module WMS · v1.1 · 17/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: /wms/stock-evaluation-checking

## 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
- Warehouse Manager
- 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 | Warehouse · Location · Bin Item · Barcode/QR · Lot No | Master data | B05 |
| B02 | Input | Dữ liệu | Tồn hệ thống theo từng Barcode/QR trước khi chốt kỳ | System (auto) | B07 |
| B03 | Input | Dữ liệu | Hàng thật đang nằm trong từng Bin | Hàng thật trong kho | B12 |
| B04 | Warehouse Manager | Bắt đầu | Start |  | B05 |
| B05 | Warehouse Manager | Bước | Tìm kỳ theo Close Date · Warehouse · Location → chọn dòng · Close → xác nhận | Web · Stock Closing | B06 [nhánh tuỳ chọn]; B07 |
| B06 | Warehouse Manager | Bước | In-Progress Txn — rà giao dịch SAVED / SUBMITTED còn treo trong kỳ | Web · Stock Closing |  |
| B07 | Warehouse Manager | Bước | Đóng băng snapshot tồn theo từng Barcode/QR · Status = Closed Giao dịch sau ngày chốt tính ngược: nhập trừ, xuất cộng | System (auto) · Stock Closing | B08; B09 |
| B08 | Output | Dữ liệu | Kỳ chốt kho Status = Closed Snapshot Qty đóng băng theo từng Barcode/QR |  | (kết thúc) |
| B09 | Warehouse Manager | Bước | Tạo kỳ kiểm kê CNT-… — tần suất · kho · vị trí · PIC | Web · Stock Evaluation (Web) | B10; B11 |
| B10 | Output | Dữ liệu | Kỳ kiểm kê CNT-… kèm dòng tồn hệ thống theo từng Bin |  | (kết thúc) |
| B11 | Warehouse Staff | Bước | Chọn kỳ CNT-… · scan Bin cần kiểm | Mobile · Stock Evaluation (Mobile) | B12 |
| B12 | Warehouse Staff | Bước | Scan từng Barcode/QR · nhập Count Qty thực tế | Mobile · Stock Evaluation (Mobile) | B13 |
| B13 | Warehouse Staff | Bước | Submit Count — đẩy kết quả lên Web, KHÔNG đổi tồn kho | Mobile · Stock Evaluation (Mobile) | B14; B15 |
| B14 | Output | Dữ liệu | Phiếu kiểm kê CNT-… đã Submit kèm System / Count / Variance |  | (kết thúc) |
| B15 | Warehouse Staff | Bước | Đối chiếu Snapshot ↔ Count theo từng Barcode/QR · gán 1 trong 7 Barcode Status | System (auto) | B16 |
| B16 | Warehouse Staff | Bước | Đặt filter: Close Date · Eval/Trans Date · Warehouse · Location · Item · Barcode · Lot → Search | Web · Stock Evaluation Checking | B17 |
| B17 | Warehouse Staff | Bước | Đọc lưới Snapshot ↔ Evaluation · lọc nhanh theo nhóm trạng thái | Web · Stock Evaluation Checking | B18 [nhánh tuỳ chọn]; B19 |
| B18 | Warehouse Staff | Bước | Export — xuất kết quả đang lọc ra file .xlsx | Web · Stock Evaluation Checking | B20 [nhánh tuỳ chọn] |
| B19 | Warehouse Staff | Điểm quyết định | Barcode Status = Matched? |  | B21 [Có]; B22 [Không] |
| B20 | Output | Dữ liệu | File StockEvaluation_ [YYYYMMDD].xlsx |  | (kết thúc) |
| B21 | Output | Dữ liệu | Dòng Matched — tồn khớp, không phát sinh xử lý |  | (kết thúc) |
| B22 | Warehouse Staff | Bước | Lọc dòng lệch theo kỳ · kho · loại lệch · chọn dòng → Create Adjustment (ADJ-YYYY-NNN) · lý do điều chỉnh (tuỳ chọn) | Web · Stock Adjustment | B23 |
| B23 | Warehouse Staff | Điểm quyết định | Lưu Draft hay gửi duyệt ngay? |  | B24 [Draft]; B25 [Gửi duyệt] |
| B24 | Warehouse Staff | Bước | Phiếu = Draft · sửa nội dung, gửi duyệt sau | Web · Stock Adjustment | B25 [Submit for review] |
| B25 | Warehouse Staff | Bước | Phiếu = Pending Approval · dòng lệch rời khỏi danh sách chờ | System (auto) · Stock Adjustment | B26; B27 |
| B26 | Output | Dữ liệu | Phiếu ADJ-YYYY-NNN = Pending Approval |  | (kết thúc) |
| B27 | Warehouse Manager | Bước | Mở phiếu · soát bảng Before → After từng dòng | Web · Stock Adjustment | B28 |
| B28 | Warehouse Manager | Điểm quyết định | Duyệt phiếu? |  | B29 [Không]; B30 [Có] |
| B29 | Warehouse Manager | Bước | Từ chối — bắt buộc nhập lý do | Web · Stock Adjustment | B31 |
| B30 | Warehouse Manager | Bước | Phiếu = Approved · giao dịch điều chỉnh tồn chạy ngay theo loại lệch của từng dòng | System (auto) · Stock Adjustment | B32 [nhánh tuỳ chọn]; B33 |
| B31 | Output | Dữ liệu | Phiếu = Rejected (kết thúc) lý do ghi ở Remark |  | (kết thúc) |
| B32 | Warehouse Staff | Bước | W/H Stock Checking (view-only, tra cứu) | Web · W/H Stock Checking |  |
| B33 | Output | Dữ liệu | Phiếu = Approved · tồn kho đã chỉnh theo Count: Qty / Lot / Location / Warehouse |  | (kết thúc) |
| B34 | Warehouse Manager | Bắt đầu | Start |  | B35 |
| B35 | Warehouse Manager | Bước | Chọn phiếu đang Approved → Cancel · bắt buộc nhập lý do | Web · Stock Adjustment | B36 |
| B36 | Warehouse Manager | Bước | Phiếu = Cancelled (kết thúc) · đảo giao dịch điều chỉnh tồn | System (auto) · Stock Adjustment | B37 |
| B37 | Output | Dữ liệu | Phiếu = Cancelled · tồn kho trả về trước điều chỉnh · lý do ghi Remark tiền tố "[Cancel]" |  | (kết thúc) |

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

#### B19 · Barcode Status = Matched?

- Warehouse Staff
- Đến từ: B17
- Đi tới [Có]: B21 · Dòng Matched — tồn khớp, không phát sinh xử lý
- Đi tới [Không]: B22 · Lọc dòng lệch theo kỳ · kho · loại lệch · chọn dòng → Create Adjustment (ADJ-YYYY-NNN) · lý do điều chỉnh (tuỳ chọn)

#### B23 · Lưu Draft hay gửi duyệt ngay?

- Warehouse Staff
- Đến từ: B22
- Đi tới [Draft]: B24 · Phiếu = Draft · sửa nội dung, gửi duyệt sau
- Đi tới [Gửi duyệt]: B25 · Phiếu = Pending Approval · dòng lệch rời khỏi danh sách chờ

#### B28 · Duyệt phiếu?

- Warehouse Manager
- Đến từ: B27
- Đi tới [Không]: B29 · Từ chối — bắt buộc nhập lý do
- Đi tới [Có]: B30 · Phiếu = Approved · giao dịch điều chỉnh tồn chạy ngay theo loại lệch của từng dòng

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

#### Kỳ chốt kho (Stock Closing)

`OPEN` → `CLOSED`

Bước chuyển:

- `OPEN` -- Close — đóng băng snapshot --> `CLOSED`
- `CLOSED` -- Release — mở lại kỳ --> `OPEN` (quay lại)

#### Phiếu điều chỉnh tồn (ADJ-YYYY-NNN)

`DRAFT` → `PENDING APPROVAL` → `REJECTED` → `APPROVED` → `CANCELLED`

Bước chuyển:

- `DRAFT` -- Submit for review --> `PENDING APPROVAL`
- `PENDING APPROVAL` -- Duyệt = điều chỉnh tồn ngay --> `APPROVED`
- `APPROVED` -- Cancel — chưa có action sau --> `CANCELLED`
- `PENDING APPROVAL` -- Từ chối --> `REJECTED`

Ghi chú trên sơ đồ:

- Có thể tạo thẳng ở Pending Approval

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | Warehouse, Location, Bin, Item, Barcode/QR, Lot No | Master data | Tìm kỳ · chọn dòng Warehouse / Location → Close |
| I-2 | Tồn hệ thống theo từng Barcode/QR trước khi chốt kỳ, kèm giao dịch phát sinh sau ngày chốt | Dữ liệu hệ thống | Đóng băng snapshot · Status = `Closed` |
| I-3 | Hàng thật đang nằm trong từng Bin | Hàng vật lý | Scan từng Barcode/QR · nhập Count Qty thực tế |

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

| Bước | Vai trò | Màn hình |
| --- | --- | --- |
| Tìm kỳ theo Close Date · Warehouse · Location → chọn dòng · Close → xác nhận | Warehouse Manager | Stock Closing · Web |
| In-Progress Txn — rà giao dịch SAVED / SUBMITTED còn treo trong kỳ (tuỳ chọn) | Warehouse Manager | Stock Closing · Web |
| Đóng băng snapshot tồn theo từng Barcode/QR · Status = `Closed` · giao dịch phát sinh sau ngày chốt tính ngược: nhập trừ ra, xuất cộng vào | System (auto) | Stock Closing |
| Tạo kỳ kiểm kê `CNT-…` — tần suất · kho · vị trí · PIC | Warehouse Manager | Stock Evaluation · Web |
| Chọn kỳ `CNT-…` · scan Bin cần kiểm | Warehouse Staff | Stock Evaluation · Mobile |
| Scan từng Barcode/QR · nhập Count Qty thực tế | Warehouse Staff | Stock Evaluation · Mobile |
| Submit Count — đẩy kết quả lên Web, không đổi tồn kho | Warehouse Staff | Stock Evaluation · Mobile |
| Đối chiếu Snapshot ↔ Count theo từng Barcode/QR · gán 1 trong 7 Barcode Status | System (auto) | — |
| Đặt filter: Close Date · Eval/Trans Date · Warehouse · Location · Item · Barcode · Lot No → Search | Warehouse Staff | Stock Evaluation Checking · Web |
| Đọc lưới Snapshot ↔ Evaluation · lọc nhanh theo nhóm trạng thái | Warehouse Staff | Stock Evaluation Checking · Web |
| Export — xuất kết quả đang lọc ra file .xlsx (tuỳ chọn) | Warehouse Staff | Stock Evaluation Checking · Web |
| Lọc dòng lệch theo kỳ · kho · loại lệch · chọn dòng → Create Adjustment (`ADJ-YYYY-NNN`) · nhập lý do điều chỉnh (tuỳ chọn) | Warehouse Staff | Stock Adjustment · Web |
| Lưu `Draft` · sửa nội dung, gửi duyệt sau | Warehouse Staff | Stock Adjustment · Web |
| Phiếu = `Pending Approval` · dòng lệch rời khỏi danh sách chờ | System (auto) | Stock Adjustment |
| Mở phiếu · soát bảng Before → After từng dòng | Warehouse Manager | Stock Adjustment · Web |
| Từ chối — bắt buộc nhập lý do | Warehouse Manager | Stock Adjustment · Web |
| Phiếu = `Approved` · giao dịch điều chỉnh tồn chạy ngay theo loại lệch của từng dòng | System (auto) | Stock Adjustment |
| W/H Stock Checking (view-only, tra cứu) | Warehouse Staff | W/H Stock Checking · Web |
| Chọn phiếu đang `Approved` → Cancel · bắt buộc nhập lý do | Warehouse Manager | Stock Adjustment · Web |
| Phiếu = `Cancelled` · đảo giao dịch điều chỉnh tồn | System (auto) | Stock Adjustment |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Kỳ chốt kho Status = `Closed`; Snapshot Qty đóng băng theo từng Barcode/QR, đã tính ngược giao dịch phát sinh sau ngày chốt | Warehouse Manager bấm Close và xác nhận trên modal |
| O-2 | Kỳ kiểm kê `CNT-…` kèm dòng tồn hệ thống theo từng Bin | Tạo kỳ kiểm kê trên màn Stock Evaluation (Web) |
| O-3 | Phiếu kiểm kê `CNT-…` đã Submit, kèm System / Count / Variance | Bấm Submit Count trên Mobile; mọi pallet đã scan đều có Count Qty |
| O-4 | File `StockEvaluation_[YYYYMMDD].xlsx` | Bấm Export trên Stock Evaluation Checking — xuất đúng tập kết quả đang lọc |
| O-5 | Dòng `Matched` — tồn khớp, không phát sinh xử lý | Barcode/QR khớp cả Warehouse, Location, Qty, Lot No, PO No |
| O-6 | Phiếu `ADJ-YYYY-NNN` = `Pending Approval` | Tạo phiếu và gửi duyệt ngay, hoặc gửi duyệt một phiếu đang `Draft` |
| O-7 | Phiếu = `Rejected` (kết thúc); lý do ghi ở Remark | Warehouse Manager từ chối phiếu đang `Pending Approval` và đã nhập lý do |
| O-8 | Phiếu = `Approved`; tồn kho đã chỉnh theo Count: Qty / Lot / Location / Warehouse. Dòng Duplicate Scan và Invalid Barcode chỉ ghi nhận, không đổi tồn | Warehouse Manager duyệt phiếu — duyệt là thực thi ngay, không có bước chờ thực thi |
| O-9 | *Ngoại lệ:* Phiếu = `Cancelled` (kết thúc); tồn kho trả về trước điều chỉnh; lý do ghi ở Remark với tiền tố `[Cancel]` | Warehouse Manager huỷ phiếu đang `Approved` và đã nhập lý do |
