# Stock Evaluation Checking — Reconciling system stock against the physical count

> Fine Chemical (FC) · WMS module · v1.1 · 17/09/2026 · Standard flow — for implementation, testing and development
>
> Generated from the diagram by `sync.js` — do not edit by hand. The diagram is authoritative: report any mismatch with the diagram page.
>
> Diagram page: /en/wms/stock-evaluation-checking

## How to read

- Every box on the diagram has a code `Bxx`, numbered in flow order (from the start event, following the arrows).
- "Goes to" lists every arrow leaving the box; text in square brackets is that arrow's condition label.
- "Optional branch" = a dashed arrow on the diagram: may be done or skipped.
- "Data" boxes in the Input lane are incoming data; in the Output lane they are results / end points of the flow.

## Process Flow (swimlane)

### Roles (lanes)

- Input
- Warehouse Staff
- Warehouse Manager
- Output

### Steps

| Code | Role | Type | Content | Platform · Screen | Goes to |
| --- | --- | --- | --- | --- | --- |
| B01 | Input | Data | Warehouse · Location · Bin Item · Barcode/QR · Lot No | Master data | B05 |
| B02 | Input | Data | System stock per Barcode/QR before closing | System (auto) | B07 |
| B03 | Input | Data | Physical goods sitting in each Bin | Physical goods | B12 |
| B04 | Warehouse Manager | Start | Start |  | B05 |
| B05 | Warehouse Manager | Task | Search by Close Date · Warehouse · Location → pick the row · Close → confirm | Web · Stock Closing | B06 [optional branch]; B07 |
| B06 | Warehouse Manager | Task | In-Progress Txn — review SAVED / SUBMITTED entries still open in the period | Web · Stock Closing |  |
| B07 | Warehouse Manager | Task | Freeze the stock snapshot per Barcode/QR · Status = Closed Transactions after the close reverse: in −, out + | System (auto) · Stock Closing | B08; B09 |
| B08 | Output | Data | Closing period Status = Closed Snapshot Qty frozen for each Barcode/QR |  | (end) |
| B09 | Warehouse Manager | Task | Create count cycle CNT-… — frequency · WH · location · PIC | Web · Stock Evaluation (Web) | B10; B11 |
| B10 | Output | Data | Count cycle CNT-… with the system stock lines per Bin |  | (end) |
| B11 | Warehouse Staff | Task | Pick count cycle CNT-… · scan the Bin to count | Mobile · Stock Evaluation (Mobile) | B12 |
| B12 | Warehouse Staff | Task | Scan each Barcode/QR · enter the physical Count Qty | Mobile · Stock Evaluation (Mobile) | B13 |
| B13 | Warehouse Staff | Task | Submit Count — post results to Web, NO stock change | Mobile · Stock Evaluation (Mobile) | B14; B15 |
| B14 | Output | Data | Count CNT-… submitted, with System / Count / Variance |  | (end) |
| B15 | Warehouse Staff | Task | Compare Snapshot ↔ Count per Barcode/QR · assign 1 of the 7 Barcode Status | System (auto) | B16 |
| B16 | Warehouse Staff | Task | Set filters: Close Date · Eval/Trans Date · Warehouse · Location · Item · Barcode · Lot → Search | Web · Stock Evaluation Checking | B17 |
| B17 | Warehouse Staff | Task | Read the Snapshot ↔ Evaluation grid · quick-filter by status | Web · Stock Evaluation Checking | B18 [optional branch]; B19 |
| B18 | Warehouse Staff | Task | Export — write the filtered result set to an .xlsx file | Web · Stock Evaluation Checking | B20 [optional branch] |
| B19 | Warehouse Staff | Decision | Barcode Status = Matched? |  | B21 [Yes]; B22 [No] |
| B20 | Output | Data | File StockEvaluation_ [YYYYMMDD].xlsx |  | (end) |
| B21 | Output | Data | Matched row — stock agrees, nothing further to handle |  | (end) |
| B22 | Warehouse Staff | Task | Filter variances by cycle · WH · type · pick rows → Create Adjustment (ADJ-YYYY-NNN) · adjustment reason (optional) | Web · Stock Adjustment | B23 |
| B23 | Warehouse Staff | Decision | Save as Draft or submit right away? |  | B24 [Draft]; B25 [Submit] |
| B24 | Warehouse Staff | Task | Slip = Draft · edit it and submit for review later | Web · Stock Adjustment | B25 [Submit for review] |
| B25 | Warehouse Staff | Task | Slip = Pending Approval · rows leave the pending list | System (auto) · Stock Adjustment | B26; B27 |
| B26 | Output | Data | Slip ADJ-YYYY-NNN = Pending Approval |  | (end) |
| B27 | Warehouse Manager | Task | Open the slip · review the Before → After table per row | Web · Stock Adjustment | B28 |
| B28 | Warehouse Manager | Decision | Approve slip? |  | B29 [No]; B30 [Yes] |
| B29 | Warehouse Manager | Task | Reject — a reason is mandatory | Web · Stock Adjustment | B31 |
| B30 | Warehouse Manager | Task | Slip = Approved · the stock adjustment runs at once, per the variance type of each row | System (auto) · Stock Adjustment | B32 [optional branch]; B33 |
| B31 | Output | Data | Slip = Rejected (terminal) reason stored in Remark |  | (end) |
| B32 | Warehouse Staff | Task | W/H Stock Checking (view-only lookup) | Web · W/H Stock Checking |  |
| B33 | Output | Data | Slip = Approved · stock now matches the Count: Qty / Lot / Location / Warehouse |  | (end) |
| B34 | Warehouse Manager | Start | Start |  | B35 |
| B35 | Warehouse Manager | Task | Pick an Approved slip → Cancel · a reason is mandatory | Web · Stock Adjustment | B36 |
| B36 | Warehouse Manager | Task | Slip = Cancelled (terminal) · the adjustment is reversed | System (auto) · Stock Adjustment | B37 |
| B37 | Output | Data | Slip = Cancelled · stock back to pre-adjustment · reason in Remark, prefixed "[Cancel]" |  | (end) |

### Step details (hover content on the diagram)

#### B19 · Barcode Status = Matched?

- Warehouse Staff
- Comes from: B17
- Goes to [Yes]: B21 · Matched row — stock agrees, nothing further to handle
- Goes to [No]: B22 · Filter variances by cycle · WH · type · pick rows → Create Adjustment (ADJ-YYYY-NNN) · adjustment reason (optional)

#### B23 · Save as Draft or submit right away?

- Warehouse Staff
- Comes from: B22
- Goes to [Draft]: B24 · Slip = Draft · edit it and submit for review later
- Goes to [Submit]: B25 · Slip = Pending Approval · rows leave the pending list

#### B28 · Approve slip?

- Warehouse Manager
- Comes from: B27
- Goes to [No]: B29 · Reject — a reason is mandatory
- Goes to [Yes]: B30 · Slip = Approved · the stock adjustment runs at once, per the variance type of each row

## Status lifecycle

#### Closing period (Stock Closing)

`OPEN` → `CLOSED`

Transitions:

- `OPEN` -- Close — freeze the snapshot --> `CLOSED`
- `CLOSED` -- Release — reopen the period --> `OPEN` (back)

#### Stock adjustment slip (ADJ-YYYY-NNN)

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

Transitions:

- `DRAFT` -- Submit for review --> `PENDING APPROVAL`
- `PENDING APPROVAL` -- Approve = adjust stock at once --> `APPROVED`
- `APPROVED` -- Cancel — no later action --> `CANCELLED`
- `PENDING APPROVAL` -- Reject --> `REJECTED`

Notes on the diagram:

- A slip can be created straight into Pending Approval

## Input

| # | Input | Type | Used in step |
| --- | --- | --- | --- |
| I-1 | Warehouse, Location, Bin, Item, Barcode/QR, Lot No | Master data | Search the period · pick the Warehouse / Location row → Close |
| I-2 | System stock per Barcode/QR before the period is closed, plus any transaction dated after the closing date | System data | Freeze the snapshot · Status = `Closed` |
| I-3 | Physical goods sitting in each Bin | Physical goods | Scan each Barcode/QR · enter the physical Count Qty |

## Step ↔ screen

| Step | Role | Screen |
| --- | --- | --- |
| Search by Close Date · Warehouse · Location → pick the row · Close → confirm | Warehouse Manager | Stock Closing · Web |
| In-Progress Txn — review SAVED / SUBMITTED entries still open in the period (optional) | Warehouse Manager | Stock Closing · Web |
| Freeze the stock snapshot per Barcode/QR · Status = `Closed` · a transaction dated after the closing date is reversed out: inbound is subtracted, outbound is added back | System (auto) | Stock Closing |
| Create count cycle `CNT-…` — frequency · warehouse · location · PIC | Warehouse Manager | Stock Evaluation · Web |
| Pick count cycle `CNT-…` · scan the Bin to count | Warehouse Staff | Stock Evaluation · Mobile |
| Scan each Barcode/QR · enter the physical Count Qty | Warehouse Staff | Stock Evaluation · Mobile |
| Submit Count — post the results to Web, no stock change | Warehouse Staff | Stock Evaluation · Mobile |
| Compare Snapshot ↔ Count per Barcode/QR · assign 1 of the 7 Barcode Status | System (auto) | — |
| Set filters: Close Date · Eval/Trans Date · Warehouse · Location · Item · Barcode · Lot No → Search | Warehouse Staff | Stock Evaluation Checking · Web |
| Read the Snapshot ↔ Evaluation grid · quick-filter by status group | Warehouse Staff | Stock Evaluation Checking · Web |
| Export — write the filtered result set to an .xlsx file (optional) | Warehouse Staff | Stock Evaluation Checking · Web |
| Filter variance rows by cycle · warehouse · variance type · pick rows → Create Adjustment (`ADJ-YYYY-NNN`) · enter an adjustment reason (optional) | Warehouse Staff | Stock Adjustment · Web |
| Save as `Draft` · edit the content, submit for review later | Warehouse Staff | Stock Adjustment · Web |
| Slip = `Pending Approval` · the variance rows leave the pending list | System (auto) | Stock Adjustment |
| Open the slip · review the Before → After table for each row | Warehouse Manager | Stock Adjustment · Web |
| Reject — a reason is mandatory | Warehouse Manager | Stock Adjustment · Web |
| Slip = `Approved` · the stock adjustment runs at once, per the variance type of each row | System (auto) | Stock Adjustment |
| W/H Stock Checking (view-only lookup) | Warehouse Staff | W/H Stock Checking · Web |
| Pick a slip in `Approved` → Cancel · a reason is mandatory | Warehouse Manager | Stock Adjustment · Web |
| Slip = `Cancelled` · the stock adjustment is reversed | System (auto) | Stock Adjustment |

## Output

| # | Output | Produced when |
| --- | --- | --- |
| O-1 | Closing period Status = `Closed`; Snapshot Qty frozen for each Barcode/QR, with post-closing transactions already reversed out | The Warehouse Manager presses Close and confirms on the modal |
| O-2 | Count cycle `CNT-…` with the system stock lines per Bin | A count cycle is created on the Stock Evaluation (Web) screen |
| O-3 | Count `CNT-…` submitted, with System / Count / Variance | Submit Count is pressed on Mobile; every scanned pallet has a Count Qty |
| O-4 | File `StockEvaluation_[YYYYMMDD].xlsx` | Export is pressed on Stock Evaluation Checking — it writes exactly the filtered result set |
| O-5 | Row `Matched` — stock agrees, nothing further to handle | The Barcode/QR agrees on Warehouse, Location, Qty, Lot No and PO No |
| O-6 | Slip `ADJ-YYYY-NNN` = `Pending Approval` | The slip is created and submitted straight away, or a slip is submitted from `Draft` |
| O-7 | Slip = `Rejected` (terminal); the reason is stored in Remark | The Warehouse Manager rejects a slip in `Pending Approval` after entering a reason |
| O-8 | Slip = `Approved`; stock now matches the Count: Qty / Lot / Location / Warehouse. Duplicate Scan and Invalid Barcode rows are recorded only, with no stock change | The Warehouse Manager approves the slip — approving executes it at once, there is no waiting step |
| O-9 | *Exception:* Slip = `Cancelled` (terminal); stock goes back to its pre-adjustment value; the reason is stored in Remark with the prefix `[Cancel]` | The Warehouse Manager cancels a slip in `Approved` after entering a reason |
