What leaves the freezer leaves in millilitres.
A recipe line here does not have to hang off the item. It can be scoped to the variant or to the modifier — so the double deducts twice, and a spoon of nuts deducts its own gram weight, without either of them being a separate product.
Stock is held in millilitres and grams. Litres and kilograms are accepted as recipe units against a fixed factor, and a packet or a box takes a conversion you type once — a five-litre tub as 5000 ml, and after that nobody converts anything again. Every recipe line also carries its own wastage percent, folded into the quantity that is deducted and costed, so the trim you never actually serve sits in the number rather than in somebody’s head.
The cost of a portion is rebuilt from the weighted average you paid for the stock, which means it follows cream and milk this month rather than last April. The same recipes answer how many servings a branch can still make and name the ingredient that runs out first, and a house-made base used across several desserts can itself be an ingredient of the desserts above it.
The melt.
Waste and expiry are separate movement types, not one bucket called shrinkage. Each is entered per item at one branch with a reason and a name against it, and valued at the weighted average cost of that item — so the tub that softened during Tuesday’s power cut and the tub that ran past the date printed on it are two lines with two different reasons. The waste report lists every one of them over a date range with the quantity in its base unit, the value, the reason and the staff member who entered it. For most parlours that report is the first time the melt has had a number at all.
On the way in, a receiving line carries an expiry date and a batch number, and a worker runs every six hours to page branch staff about items expiring within seven days as well as items at or under their reorder level. That is the dairy-shaped half of Procurement; the rest of the shelf sits in Inventory & Recipes.