Movements
The stock ledger: every change to every quantity, newest first, forever. Each row is a part, a location, a signed quantity, a type, when it happened, when it was recorded, who recorded it, and — where something caused it — a reference: the purchase order line the goods came from, the work order step that consumed or produced them.
Types: receipt, issue, transfer_in / transfer_out (paired), adjustment, stocktake, scrap, production_receipt, production_issue.
This table is append-only at the database level: the application cannot update or delete a row. History is the point.