Surface 5 of 9

The counter sells

Ringing an order, naming what something actually went for, and settling a table of four into four receipts that add up. Speed is a correctness property here. A flow that is thorough but slow gets worked around, and a worked-around flow enforces nothing.

A sheet opens over the floor, and the rail stays

The floor dims. What needs you does not.

Needs you
6

Cafe

5 tables
T-1
86EGP
T-2
Free
T-3
42EGP
T-4
Free
T-5
128EGP
Step 1 of 2 · ringing onto Table 3
What are they having?
ICE-LTOut
Iced latte
48EGP

Iced latte is out because the milk is. It stays on the grid, hatched and unpressable, rather than disappearing.

Needs you6 · live
T-1 ordered, we have them at PC-03
PC-07 · broken controller
Table 5 · 3 items
Waiting3
Hossam2 · any12 min
Rana3 · billiard6 min

The rail is the part that must never be occluded. The reason a counter works around a flow is that the flow costs them their view of the room. The floor is the host; the sheet is a guest on it.

Cancel becomes a gate once it costs something. On an empty sheet, Cancel closes. With two items rung, it states that two lines will be discarded. This is the only place in the product where backing out earns friction.

Sold for

The counter types what it actually went for. The system works out whether that was a discount or an extra.

Nobody at a counter thinks "that was 220 off". They think "it went for 350". Asking for the delta makes them subtract with a queue behind them, and subtractions done under a queue go wrong. So the box takes the real number and the arithmetic is ours.

ItemMarkedSold forLine
Shisha · double applemarked 570.00 570.00 350 350.00
→ recorded as a 220.00 discount. The marked price is untouched.
Private room · 2 hmarked 570.00 570.00 600 600.00
→ recorded as a 30.00 extra, on this line. The marked price is untouched.
Pepsi 330ml × 2marked 38.00 38.00 38.00
→ blank means as marked. It never means free.
Exactly one of two

Below the marked price it is a discount; above it, an extra. Never both, and the item's own price is never edited — which is what keeps the catalogue honest.

An extra lives on a line

A discount can sit on the whole bill. An extra cannot, because the customer's copy never prints the word "extra" — so a markup with no item to sit on cannot be shown, and an unassigned one blocks the sale.

To the piaster

A bill-level extra spread across three lines sums to the target exactly, by largest remainder in minor units. Plain rounding leaves a receipt a piaster short and somebody eventually notices.

Charged for

The same box, driven by a named reason instead of a number.

Picking a reason fills the box and writes the reason onto the line. The counter chooses why, and the number follows — instead of typing a number and leaving the reason to somebody's memory.

A reason above the owner's threshold does not apply itself. It becomes a request, it says so at the control, and — since everything blocks overnight — it says how long the wait will be rather than spinning.

Settling a table of four

One visit, three seats, two phones, four people. One bill that breaks into four.

Step 1 of 3 · visit V-2418
Hossam's table owes 298.00
Table 3 · 1 h 48 mcafe table · billed by order0.00
PC-03 · 1 h 12 m40.00 / h · stamped at 19:4648.00
BIL-1 · 52 m35.00 / h · stamped at 20:1230.00
Bar · 9 items4 rung at the counter, 5 from two phones242.00
Regular · 10% offapplied by Kareem · reason on every line−22.00
Owed now298EGP

Receivable. Nothing has touched cash yet — that happens on step 3, and only then does the cash ledger get a row.

Step 2 of 3 · who had what
Four people, four receipts
HFHossam Fathybooked it · 3 time lines, 2 items5146.00
RARana Adhamjoined by code · ordered from her phone368.00
TMTarek Mansourjoined by code252.00
+1Guestno account · rung at the counter132.00
Adds up to298EGP

Exact, to the piaster. If the four ever failed to sum to the whole, no total would be shown at all.

Step 3 of 3 · Hossam Fathy
Take 140.72
His share146.00
Cashback earned on this visitserver-checked before it was offered−5.28
To take140.72EGP
How he is paying
EGP
EGP

Two tenders on one receipt, and both are kept. The breakdown is what lets the drawer be reconciled by method at close — a bill recorded only as "mixed" cannot be.

Recorded · 140.72 into the drawer · PC-03 and BIL-1 are free

The toast names what was recorded and reads like the button that produced it. Never "success". And it only claims the seats are free because the server actually freed them — a screen may only state a consequence the server produces.

What this surface fixes on the way in

Three of these are defects measured in a sibling product, logged against the programme.

#RuleWhy it is written down
C1Blank in a sold-for box means as marked, never free.An empty box must never zero a line.
C2The item's own price is never edited from the counter.A price typed at a till is how a catalogue stops being true.
C3A bill-level extra is impossible; an unassigned one blocks the sale.The customer's copy cannot print a markup with no item under it.
C4A split must sum to the whole exactly, or no total is shown.Largest remainder in minor units. Plain rounding loses a piaster and somebody notices.
C5Every tender is kept, per method.A sibling product computes the breakdown, sends it, and drops it — so its day journal shows a permanently zero transfer total.
C6One validated payment-method list, checked at the boundary.The same sibling writes two values nothing else recognises, because nothing validates them.
C7Cashback is validated by the server before it is offered.An offer the server then refuses is an argument at the desk.
C8Cancel is a gate only when it discards something.Friction that fires on an empty sheet trains people to click through it.