Ingredients & Units
Every stock number in the system hangs off an ingredient record. Set these up carefully once and everything downstream — purchasing, recipes, counting, costing — inherits the care.
The ingredient record
An ingredient carries its name, category, units (below), applicable tax, and its stock-control levels: alert quantity (feeds the low stock report), re-order quantity, and maximum. Flags distinguish food items, manufacturing/prepared items, and items not for selling (packaging, cleaning supplies — stocked and consumed, never sold). Retired ingredients are deactivated, not deleted — their history stays.
There is no price field to maintain here by hand: cost comes from purchases (and from production for prepared items), tracked per branch by the costing engine.
Bulk import exists for onboarding a long ingredient list from a spreadsheet.
Ingredient categories
Categories do more than group the list:
- each category names its inventory ledger account — so flour and cleaning supplies can sit in different asset heads;
- each category lists its allowed kitchen departments — this is how the system knows the grill orders meat and the bar orders lemons. Department-scoped screens (issuance, department adjustments, counts) offer only the ingredients whose category allows that department.
Units and conversions
Units live in a proper units master with base units and sub-units — a sub-unit points at its base with a multiplier (1 kg = 1000 g, 1 carton = 24 pcs). Per ingredient you choose:
- the base unit — what stock is counted and recipes are written in;
- the allowed sub-units — the other units screens may use;
- the default purchase unit — buy in cartons, stock in pieces, and every purchase line converts automatically.
Get the base unit right first — it's the unit of every count, recipe line and report. (The adjustment reasons even include unit conversion error for the cleanups this prevents.)
Stock levels, per branch and department
Alert/re-order/max levels set on the ingredient are the global defaults; the "Inv" button on the ingredient list opens per-branch (and per-department) overrides — the flagship's flour alert level shouldn't be the kiosk's. The low-stock report respects whichever level applies. The same screen shows current stock per location — note the ingredient list's stock column shows the branch store's holding, with department holdings visible in the department screens.
Expiry
Where the business enables product expiry, purchase lines carry expiry dates and the stock expiry report lists what's approaching or past date; production's expiry labels cover prepared batches. Expiry is tracked at the purchase-line level — there is no per-batch stock tracking beyond it.
Recipes, briefly
Recipes are where ingredients meet the menu, and they're documented with Menu & Kitchen. The facts that matter from the inventory side: menu recipes are per variant (the large pizza's recipe, not "pizza's"), add-ons carry their own recipes, deals consume through their component items, and prepared ingredients have their own internal sub-recipes (nested — a sauce made from a paste made from tomatoes resolves all the way down).