Receiving: the moment stock becomes real
Until goods physically arrive, a purchase order is a promise. Receiving converts the promise into stock: a quantity lands at a specific location, at a specific cost, on a specific date, from a specific vendor. Every one of those five facts matters later.
The cost is the fact most often thrown away. If you record only 'twenty bundles arrived' and not what the twenty bundles cost on that delivery, you have to price the material later using a guess — usually last year's list price, which is always wrong in the same direction.
Why cost belongs to the batch, not the item
Prices move. The pallet you bought in March and the pallet you bought in August were not the same price, and once they sit on the same shelf, the shelf holds two costs. Recording each receipt as its own cost layer keeps that truth intact.
When a job consumes material, the system draws from those layers in a defined order — oldest first, newest first, or averaged — and reports what the draw actually cost. Without layers, every consumption is priced at a single blended guess and margin analysis inherits the error.
Partial and over-receipts
- Receive what arrived, not what was ordered — the difference is information.
- A short shipment leaves the line open, which is exactly the signal purchasing needs.
- An over-receipt is worth flagging; it is often a picking error at the supplier.
- Damaged goods should be received then adjusted out with a reason, not silently omitted.
Adjustments: correcting reality without inventing it
An adjustment is an admission that the record and the shelf disagree. It changes quantity and records why: damage, shrinkage, a count correction, a miscount at receipt, or material used without being issued to a job.
What an adjustment must not do is create a cost layer out of thin air. Stock that appears through an adjustment has no acquisition event and therefore no honest price. Letting adjustments carry cost is how phantom value accumulates on the books until a reconciliation exposes it.
The reason code is the whole point
An adjustment without a reason is just a number changing. An adjustment with a reason is a data point, and a hundred of them are a pattern: one item that shrinks constantly, one location that always counts short, one week of the year when everything drifts.
Keep the reason list short enough that people pick the true one rather than the first one. Five reasons used honestly beat twenty used at random.