Manage Table Combinations
Define which tables in a Harbor Soho floor plan can be joined, set the capacity range for that joined setup, and save it as part of the full layout.
In this article
Table combinations are managed inside the layout editor, not from reservations, TPV, or a separate combination endpoint. The operator selects tables in the same zone, reviews the joined capacity range, and saves the full floor plan.
Use this workflow when Harbor Soho needs flexible seating for larger parties while keeping reservations, optimisation, and TPV aligned to the same physical layout.
Before you start
- You are signed in to Harbor Demo Group with Harbor Soho as the active location.
- An editable layout is open at `/:orgId/:locationId/location/layouts?layout_id=:layoutId`, or a new/copied layout is open in the same editor.
- The layout has at least two tables, and the tables selected for one combination belong to the same zone.
- The user has `layout:view` to open the editor and `layout:manage` to create, edit, delete, and save combinations.
Instructions
- 1.
Open the layout editor
Open the Harbor Soho layouts area and choose the floor plan to manage. The editor loads the canvas, zones, tables, and any existing combinations; historical read-only views can be inspected but not changed.
- 2.
Select tables
Activate `Seleccionar mesas para combinación` in the editor toolbar, then select two or more same-zone tables on the canvas. For the GB demo runtime, use `B1` and `B2` only after capture verification confirms they share a zone.
- 3.
Set capacity
Review the selected tables in the side panel. The editor proposes minimum and maximum capacity from the selected tables, but the operator can adjust the joined setup to its real service range.
- 4.
Create or update
Choose `Crear combinación`. If the same table set already exists, the editor opens that combination instead of creating a duplicate. Existing combinations can be reviewed from `Agrupaciones` before editing.
- 5.
Delete if needed
Open the combinations list, select the grouping, choose `Eliminar`, and confirm the `Eliminar agrupación` modal. The removal is staged in the editor until the layout is saved.
- 6.
Save the layout
Press `Guardar`. The app sends the full layout with table types, zones, tables, and combinations, then makes the updated joined seating options available to reservations, optimisation, and TPV table views.
Validations and limits
- The table-selection tool is disabled when the layout has fewer than two tables, and `Crear combinación` is disabled until at least two tables are selected.
- Selected tables must belong to the same `layout_zone_id`.
- Combination minimum and maximum capacity must be positive whole numbers, and minimum capacity cannot be greater than maximum capacity.
- The capacity controls accept whole numbers from 1 to 1000.
- Before saving, the UI removes combinations with fewer than two tables and deduplicates and orders `table_ids`.
- The backend requires a zone, table IDs, valid capacity, and table IDs that exist in the payload and belong to the declared zone.
- Saving an existing layout with `PUT /layouts/{layoutId}` replaces the complete combinations set; any omitted combination is removed.
- The full layout must still pass its general checks: name, at least one zone, at least one table, unique names, and valid table type references.
Expected result
The saved layout owns the updated set of table combinations, and downstream reservations, optimisation, and TPV surfaces use the same joined seating configuration.