Table booking
The same booking model regardless of channel — online · phone · email · drop-in · walk-in all land in the same truth with overlap protection. The court/table + core booking is inherited from the venue domain; party and pre-ordered food/drink are added here.
14
Bookings today
82%
Table occupancy tonight
46%
With pre-order
2
Walk-ins in queue
Today's bookings & pre-orders — all channels
All channels ▾ All tables/courts ▾
| Table / court | Time | Party | Pers. | Channel | Status | Payment | |
|---|---|---|---|---|---|---|---|
| Court 1 · Centre Lunch menu ×2, beer ×2, non-alcoholic ×2 | 12:00–13:30 | Nordvik family | 4 | online | Served | Paid | ✎ · +order · ✕ |
| Court 1 · Centre Prawn sandwich ×2, coffee ×2 | 13:30–15:00 | Ida Sjöström | 2 | phone | Table ready | Not paid | ✎ · +order · ✕ |
| Court 2 Sharing platter ×2, wine ×1 btl, beer ×3 | 12:30–14:00 | Team Sjöstad (afterwork) | 6 | In the kitchen | Invoice | ✎ · +order · ✕ | |
| Court 3 Fries ×1, soft drink ×3 | 13:00–14:00 | Walk-in · Kjell | 3 | walk-in | Awaiting food | Not paid | ✎ · +order · ✕ |
| Bar table 1 — (no pre-order) | 14:00–15:30 | Drop-in · Astrid | 2 | drop-in | Booked | Not required | ✎ · +order · ✕ |
Overlap protection: a phone or manual booking that clashes with an existing booking is rejected immediately (optimistic lock, ETag) — double booking is impossible regardless of channel. The waitlist promotes automatically on cancellation.
New table booking — all fields
1 Table / court & time the core booking is inherited from the venue domain (overlap protection)
2 Party & contact
3 Pre-order — food & drink tied to the booking · generates a kitchen ticket · rolls into the total Open the menu →
| Product | Quantity | Unit price | Station | Allergens | |
|---|---|---|---|---|---|
| Lunch menu (today's) | 145 kr | Kitchen | Gluten | ✕ | |
| Prawn sandwich | 135 kr | Kitchen | Shellfish, gluten | ✕ | |
| Beer 40 cl (draught) | 79 kr | Bar | Alcohol | ✕ | |
| Non-alcoholic | 39 kr | Bar | — | ✕ |
Pre-order: 740 kr
4 Policy, payment & total
Court rental (13:30–15:00 · member)180 kr Pre-order (food & drink)740 kr Total to pay920 kr
Payment recipient is resolved via payment-config → the payment is created centrally (subject_type='brasserie_booking'). The revenue is emitted as a RevenueEvent to bookkeeping — no direct write.