Floor, kitchen, stockroom, cash office and the public site on one system. Sample records throughout.
Order taking and the kitchen display
Click a ticket to move it through the kitchen.
Table 7 — open order
- Section
- sample
- Capacity
- 4
- Status
- occupied
- Waiter
- Staff 03
- Sample dish A ×2no notes
- Sample dish B ×1allergy note
- Sample drink ×3bar
Discounts and voids need a manager PIN, and the reason is stored on a correction entry.
Pending 1
In kitchen 1
Ready to serve 1
Served 1
Click a card to move it along.
Order lifecycle
- 1draft
- 2pending
- 3in_kitchen
- 4preparing
- 5ready_to_serve
- 6served
- 7ready_for_billing
- 8billed
- 9completed
- 10cancelled
in_kitchen_at, ready_to_serve_at and served_at are stored separately, which is what makes ticket times measurable instead of anecdotal.
Floor plan & table state
Sample sections
Click a cell to change its state.
data model RestaurantTable
statusenumavailable · occupied · reserved · merged · cleaningcapacity / seat_count / sectionnumber · stringmerged_with / is_merged_parent / original_capacityref · boolean · numbertwo tables pushed together for a party of eight, and put back afterwardsBilling & receipts
Sample sale
- Official receipt
- sample
- Subtotal
- sample
- Senior citizen discount
- statutory
- PWD discount
- statutory
- Voucher
- applied
- Loyalty points earned
- sample
data model Sale
payment_methodenumcash · e-wallet · credit_card · debit_card · bank_transfer · splitpayment_statusenumcompleted · pending · refunded · voidedsenior_citizen_discount / pwd_discountnumberstatutory discounts computed, not typed inloyalty_points_earned / loyalty_reward_appliednumber · refofficial_receipt_numberstringIngredient-level inventory
The difference between stock control and guessing: a recipe knows its serving size, so a sale draws down grams.
| Item | On hand | Minimum | Unit | State |
|---|---|---|---|---|
| Sample item 01 | 4.2 | 6 | kg | low_stock |
| Sample item 02 | 18 | 12 | piece | available |
| Sample item 03 | 0.8 | 2 | L | critical |
data model InventoryItem · Ingredient
inventory_typeenumraw_goods_for_sale · raw_goods_internalunit_of_measure / pack_size_label / conversion_factorstring · numbera 5kg sack and a 100g serving are the same itemminimum_stock_typeenumquantity · percentagecritical_stock_statusenumavailable · low_stock · criticalretail_unit_typeenumper_kg · per_100g · per_pack · per_pieceserving_size_grams / cost_per_servingnumberwhich is where food cost actually comes fromSuppliers, purchase orders & receiving
Purchase order
- 1draft
- 2sent
- 3confirmed
- 4partially_received
- 5completed
- 6cancelled
data model StockReceiving
statusenumdraft · received · verified · postedinvoice_number / po_numberrefbatch_number / expiry_datestring · dateso a recall is a query, not a huntquantity_received / unit_cost / total_costnumberCash drawer, daily sales & expenses
data model CashDrawerShift
statusenumopen · closed · remittedopening_cash_breakdown / closing_cash_breakdownjsoncounted by denomination, not a single numberexpected_cash_totalnumbercomputed from sales, not typedover_short_amountnumberthe figure a manager actually looks atremitted_amount / cash_on_hand_for_next_shiftnumberSales by day part
Kitchen & bar printing
Unglamorous and the first thing to break on a busy night, so it is a tracked job queue rather than a fire-and-forget call.
| Job | Printer | Type | Trigger | Status | Attempts |
|---|---|---|---|---|---|
| PJ-4411 | Kitchen | kitchen_ticket | auto | completed | 1 |
| PJ-4412 | Bar | bar_ticket | auto | failed | 3 |
| PJ-4413 | Counter | receipt | manual_reprint | printing | 1 |
data model PrintJob
job_typeenumkitchen_ticket · receipt · bar_ticketstatusenumpending · printing · completed · failedtriggered_byenumauto · manual_reprintattempts / error_messagenumber · stringLoyalty, vouchers & sequences
Digital stamp card
- Stamps
- 6 of 10
- Reward
- free_item
- Validity
- sample days
- Sleeping after
- sample days
data model LoyaltyCard · QRVoucher
reward_typeenumpercentage_discount · fixed_discount · free_itemstamps_required / validity_days / sleeping_daysnumbera sleeping card is what triggers a win-backQR voucher redemptionrefsingle use, recorded against the sale- Table booking confirmedemail
- Catering package enquiryform
- Win-back sequenceautomated
Fires when a loyalty card goes quiet.
Website, menu & assistants
The public site, its menu and the guest chatbot are edited from the same admin, so the menu cannot be right in one place and wrong in another.
- Dine-in menupublished
- Catering menudraft
- Guest chatbotanswers from the live menu
- AI business analystowner-facing
Summarises the week against the figures in the system.