The Kitchen Display System (KDS) replaces paper tickets with a real-time screen in the kitchen. Orders appear as ticket cards when sent from the POS, and kitchen staff bump items or full orders as they finish them. Bump state syncs back to POS terminals so servers see a “ready” badge on the floor plan.Documentation Index
Fetch the complete documentation index at: https://docs.laportenard.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- Hub sync enabled (
nu_hub_enabledonnu.pos.config) — KDS requires real-time order snapshots via WebSocket - At least two POS terminals configured under the same shared config: one for order-taking, one for the kitchen display
Setup
Configure the KDS terminal in Odoo
Go to Point of Sale > Configuration > Point of Sale and open the terminal you want to designate as a kitchen display.Under the Configuracion NU POS tab, find the Modo de Terminal radio group and select Pantalla de Cocina (KDS).
Open a POS session on the KDS terminal
Log in to the POS on the KDS terminal and open a session as usual. The app detects
nu_terminal_mode = "kds" from the bootstrap config and auto-redirects to /kds/.The KDS terminal must be under the same
nu.pos.config shared configuration as the order-taking terminals so they share the same hub and see the same orders.How it works
Ticket lifecycle
Orders appear on the KDS when their kitchen status issent or changed and they have not been bumped (kitchenBumpedAt is null). The flow:
- Order sent — POS terminal sends order to kitchen. Items are stamped with
kitchenItemStatus: "pending". Order appears as a ticket card on the KDS. - Item bump — Kitchen staff taps an individual item to mark it
done(green checkmark). The bump counter on the ticket updates. - Order bump — Kitchen staff taps the “BUMP” button at the bottom of the ticket. The order is stamped with
kitchenBumpedAtand moves to the recall strip. - Recall — Bumped orders appear in a bottom strip for 30 seconds. Tapping recalls them back to the grid (clears
kitchenBumpedAt). - Sync back — Bump state flows through the hub snapshot pipeline back to all POS terminals. A green checkmark badge appears on the table in the floor plan.
Ticket urgency
Tickets change color based on elapsed time since the order was sent:| Elapsed time | Urgency | Visual |
|---|---|---|
| < 5 minutes | Normal | Green timer, standard border |
| 5–10 minutes | Warning | Amber timer, amber border with glow |
| > 10 minutes | Critical | Red timer, red border with pulse animation |
Change detection
When a POS terminal modifies a sent order (adds/removes items, changes quantities), the order status flips tochanged and:
- The ticket gets a MOD badge and an amber ring highlight
kitchenBumpedAtis cleared, so bumped orders reappear on the grid- Added items show a green left border
- Changed quantities show the old and new values
Ready badge on floor plan
When an order is bumped on the KDS, POS terminals show a green checkmark badge on the corresponding table in the floor plan. The badge:- Appears when
kitchenBumpedAtis set on the order - Can be dismissed by tapping it (local state only, does not affect the order)
- Auto-resets when the order is modified (the badge reappears after the next bump)
Audio alerts
The KDS plays audio cues for two events:| Event | Sound | Behavior |
|---|---|---|
| New order arrives | new-order.mp3 | Plays once per new order (not on initial page load) |
| First order goes critical | overdue.mp3 | Plays once, resets when all orders drop below critical |
nu_pos_react/public/sounds/. Replace the placeholder files with actual notification sounds.
Data flow
KDS reuses the existing hub sync pipeline — no new protocol message types. Two fields carry bump state:| Field | Level | Type | Purpose |
|---|---|---|---|
kitchenItemStatus | Order item | "pending" | "done" | Individual item bump state |
kitchenBumpedAt | Order | number (timestamp) | When the full order was bumped |
- Sync protocol — Zod schemas in
nu_pos_sync_protocol(validated, not stripped) - Hub snapshots —
ORDER_SNAPSHOTandSYNC_INITmessages - Backend — Persisted as
nu_kitchen_item_status(Selection) andnu_kitchen_bumped_at(Datetime) on Odoo models - Direct API — Included in order create/update payloads for non-hub setups
Odoo configuration reference
| Field | Model | Type | Purpose |
|---|---|---|---|
nu_terminal_mode | pos.config | Selection | "standard" (default) or "kds" |
nu_kitchen_item_status | pos.order.line | Selection | "pending" or "done" |
nu_kitchen_bumped_at | pos.order | Datetime | Timestamp of last order bump |