Module · Warehouse Management
Warehouse: real-time stock balances that always reconcile with movement history
Batches, bins, receiving and shipping, transfers, stocktaking. Every operation is recorded as a movement with warehouse journal rows; cost is calculated from FIFO valuation layers.
Warehouse journal
Every unit of movement leaves a row - history cannot be recalculated after the fact
The balance for an item, batch, and bin is not a number in a field - it is the sum of ledger rows. Rows are append-only: issues reference specific valuation layers, adjustments reference a justification.
| Row | Operation | Item · batch | Bin | Qty | Valuation layer |
|---|---|---|---|---|---|
| L-189201 | receiving | SKU-00412 · P-2026-081 | A-01-03 | +120 | created V-164203 |
| L-189202 | transfer | SKU-00412 · P-2026-081 | A-01-03 → B-02-07 | 40 | - |
| L-189203 | shipping | SKU-00287 · P-2026-064 | B-01-02 | −80 | V-164118, V-164141 |
| L-189204 | shipping | SKU-00287 · P-2026-064 | B-01-02 | −25 | V-164141 |
| L-189205 | stocktaking | SKU-01130 · P-2026-090 | C-03-01 | +2 | adjustment |
Warehouse journal screen mockup. A receipt creates a valuation layer, an issue draws down the earliest layers, and stocktaking results are posted as a separate row.
- Movement ledger. Every unit of movement - receiving, shipping, transfer, stocktaking result - leaves its own row. Rows are append-only; history cannot be recalculated after the fact.
- FIFO valuation layers. Every receipt creates a valuation layer with its own price and quantity. Issues draw down the earliest layers - first in, first out.
- Cost from specific layers. Shipping cost is the sum of draw-downs from actual receipts, not an averaged figure: you can see which batches and prices it is built from.
- Balances reconcile with history. Stock and movement reports are built from the same history: any figure in a report breaks down into specific ledger rows.
Load test bench figures
Hundreds of thousands of rows - no degradation on office hardware
Day-to-day operations
From receiving to stocktaking: the operation is posted - the balance is already updated
Receiving
Goods arrive in batches: each batch has its own code and its own history. Receiving creates a movement and a valuation layer; the balance is visible in real time.
Shipping
Issues draw from specific layers by FIFO: shipping cost is built from actual receipt prices, not an average.
Transfers
Bin-level storage: every item has a bin. A transfer between bins and warehouses is recorded as a movement: from where, to where, how much.
Stocktaking
Reconciling physical counts with records. A discrepancy does not "fix the balance" - it is posted as an adjustment: a separate ledger row with a justification.
Barcode scanner
Items and batches are found by scanning a code - during receiving and stocktaking, with no manual catalog lookup.
Reports
Stock and movement reports are built from the ledger: any figure breaks down into specific history rows and reconciles with them.
See the warehouse on a live test bench
Tell us about your item catalog, movement volumes, and processes - we will prepare a commercial proposal and show the ledger on load test bench data. The demo takes 40 minutes.