Skip to content

Back office

Inventory

Stores, batches, receiving, transfers, counts and waste.

4 min read

On this page

For storekeepers, store managers, chefs and bar managers. Inventory (/inventory) shows one location at a time: what is on hand, reserved for approved requisitions, available, the thresholds, the average cost and the value. Click an ingredient for its page: every location, every batch, the ledger and where did it go.

Locations

Nine kinds: Warehouse (business-wide, feeds the stores), Main store, Kitchen store, Bar store, Coffee store, Cold room, Freezer, Branch store and Custom. Each location decides how it issues stock:

Setting Meaning
FIFO the oldest receipt goes out first (dry goods)
FEFO the batch that expires first goes out first (cold room, freezer, dairy)
Track batches every receipt is a batch with its cost, lot and expiry (off for loose bins)
Allow negative stock issues may exceed what is on hand (otherwise refused with what is available)
Default store where the branch’s sales consume stock when no department store matches

Managers create locations, suppliers, units and conversions under Inventory → Setup (/inventory/setup).

Units

kg, g, litre, ml, bottle, crate, carton, pack, piece, portion, tray and your own. A conversion says how they relate for one item or for everything: 1 crate = 24 bottles (Nile Special), 1 tray = 30 each (Eggs), 1 bottle = 500 ml (Mineral water). Enter stock in whatever unit the delivery came in; the ledger keeps both the entered quantity and the stock unit.

Operations

Operation Does Needs
Receive from a supplier: quantity, unit, unit cost, supplier, batch no. (auto if blank), lot, expiry inventory.receive
Issue out of the store to a department / cost centre (batches FIFO / FEFO, or pick one) inventory.issue
Transfer to another location in one step; batches keep their cost, lot and expiry inventory.issue
Adjust + found / − lost, at average cost; reason required inventory.adjust
Waste · Damage · Expiry · Write-off stock lost; reason required inventory.adjust
Return (in) back into the store (from the kitchen, a cancelled issue) inventory.receive
Return to supplier out, to the supplier inventory.issue
Count see Counts below inventory.count to post

Above the business limit (default 500,000 in value) waste, damage, expiry, write-off and adjustments need a supervisor: anyone with approvals.decide posts directly, otherwise the screen asks a supervisor for employee number + PIN. The approver is written on the movement and in the audit trail.

An issue that would go below what is available is refused: “Only 3 kg of Sugar available at Kitchen Store”. Reserved stock (approved requisitions) is not available to anyone else.

Batches & expiry

The item page lists open batches with what is left, when they expire and what they cost. Expired batches are flagged (the nightly sweep marks them); Write off posts the remainder as expiry. A count that finds less than the book stock empties the oldest batches first.

Thresholds & alerts

Per location and ingredient: minimum (warning), reorder level and reorder quantity (a low-stock notification to everyone with inventory.view in the branch, once a day), maximum. Set them from the item page (inventory.manage).

The ledger

Every movement is a row you can read: when, kind, quantity, batch, cost, value, balance after, reason, who. Nothing is edited or deleted — a mistake is corrected by the opposite movement.

Counts (/inventory/counts)

Start a count at a location — full (every ingredient) or cycle (the ingredients you pick). The sheet shows the expected quantity at the moment the count started; enter what you find (Enter or Tab saves the line). Submit hands it to the person who posts; Post (inventory.count) compares each counted line with the stock right now and writes the difference as a count movement — shortfalls and surpluses appear on the ledger and in the variance report. One open count per location; posted counts are final.

Offline

Stock screens need the server: they show what they last loaded and refuse operations while offline (an issue that “succeeded” on a dead connection would not have locked anything). Sales keep working offline; their consumption is deducted when the sale reaches the server.