4. Taking on stock, and keeping it true
The ledger
Every change to every quantity is a movement: a part, a location, a signed quantity, a type, when, who. They are never edited and never deleted. A wrong movement is corrected by another, opposite one. The on-hand figures you see everywhere are a cached total of the ledger, and if the two ever disagree the ledger wins and the cache is rebuilt.
This is not bureaucracy. It is what lets you answer, a year from now, "where did those twelve bearings go" — and it is the record-accuracy discipline that MRP depends on, enforced by structure rather than by good intentions.
Opening stock
The clean way: for each part and location, a stocktake movement with what you counted. A stocktake sets the count; the movement it records is whatever gets from the book figure (zero, at the start) to your number. Do it location by location from the move form, or receive quantities in bulk if you are confident of them.
Day to day
| You did | Record |
|---|---|
| A delivery arrived against an order | Receive goods on the purchase order — not the move form. It receives into stock and closes the line |
| A delivery arrived with no order | Receive on the move form |
| Took parts for a job with no work order | Issue |
| Moved a box to another shelf | Transfer — two linked movements, out and in |
| Threw something away | Scrap |
| Counted a shelf | Stocktake |
| Found an error you can explain | Adjustment, with the reason in the notes |
A movement that would take a location below zero is refused. That is a feature: it means the count was already wrong, and the answer is a stocktake, not a negative.
Keeping it true
Count a little, often. Pick a few locations a week — the fast-moving ones more often — and record stocktakes. The movements list shows every correction with who made it, which is both an audit trail and a way to notice a shelf that is always wrong.
Once in a while, run the reconcile (mrp inventory reconcile) to prove the cached totals against the ledger. It should report zero drift; if it ever does not, that is a bug to report, not a number to fix.
Next: buying.