Skip to content

PRD: Table & floor allocation

ModuleCommercePRD IDPRD-FLR-001
StatusReady to devFEATFLR
EpicPlaneBANA-1532
Date2026-06-15Versionv1.0
Packages@nx/commerce · @nx/sale · @nx/coreURDFLR
SurfaceClient · Owner/MgrSale · POS
OwnerPhát Nguyễn

What table & floor allocation is

A dine-in merchant models its premises as a named floor layout (Layout), holding a tree of zones (Zone) nested at most two levels deep; each leaf zone owns tables (Unit) carrying their own capacity, canvas placement, and style. The owner or manager builds this tree on the Client page. When a server opens a dine-in order on the Sale POS, the system records an occupancy record (Usage) binding that order to one or more tables - this record drives the colour of every tile on the floor plan and is the source of truth for availability, transfer, split, and merge. Every order also keeps a snapshot of its table and guest details, so the assignment survives even if the live usage record later changes.

Why design is kept apart from occupancy

Two distinct jobs hide behind "tables". One is design - laying out the physical space, done on the Client page, an infrequent task run by the owner or manager. The other is occupancy - which table a live order is on, right now, run on the Sale POS, a high-frequency, real-time concern handled by servers or cashiers. Modelling them as one editable blob would make the floor plan churn on every seating; managing occupancy without a stable plan would leave orders pointing at nothing.

Without this map, a server cannot see at a glance which tables are open, the kitchen has no anchor for a dine-in order, and "move table 4 to the patio" is a verbal handoff with nothing recorded.

One shift, from design to freeing the table

An owner designs "Ground Floor" on the Client page as a layout with two rooms, each holding several tables, in one save. During service a server on the Sale POS opens a dine-in order on Table 7; the tile turns busy on every terminal. A walk-in of six arrives - the server filters for free tables seating six, seats them, then later transfers them from the main room to the patio in one action. When each party leaves, completing the order's usage frees the table back to green.

The easiest thing to get wrong

The floor plan and table occupancy are not the same thing

The two change at completely different rates. The plan is a rare edit on the Client page; occupancy churns every seating on the Sale POS. Keeping them apart means the live floor never rewrites the plan, and orders always point at a stable table.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.