Configuration¶
Prerequisites on the CCO Manager¶
The table areas the plans in tableplan.json refer to
(plans[].tableArea) must exist on the manager and be assigned to
the POS's org node (or to root).
Floors and areas are modeled with table areas: one area per floor, one plan per area. The floor switcher (the dropdown at the bottom left of the table overview) only appears once two areas are visible to the POS.
Permissions¶
The plugin brings no roles of its own; it uses existing CCO permissions:
| Permission | Effect in the table plan |
|---|---|
SETTINGS_SCREEN |
Shows the "Plan bearbeiten" (edit plan) button. Anyone allowed to open the POS settings may also rearrange the room; waitstaff do not see the button. |
TABLE_SEE_AMOUNT_OF_OTHER_TABLES |
Shows amounts on other waiters' tables too (orange). Without this permission only the waiter's name is shown there. |
Plugin settings¶
Under Konfiguration → Plugins → TablePlanPlugin (configuration → plugins) on the POS, or via environment variable, for example in a container:
| Setting | Environment variable | Meaning |
|---|---|---|
hubUrl |
TABLEPLAN_HUB_URL |
Address of the Table Plan Hub. Empty = no hub, the POS works with its local file only. |
hubToken |
TABLEPLAN_HUB_TOKEN |
Access token for the hub. |
hubTenant |
TABLEPLAN_HUB_TENANT |
Name of the business on the hub (default default). |
hubPollSeconds |
— | How often the POS asks the hub for changes in the background (default 20 seconds; the request is a few hundred bytes). |
The environment variable acts as the default; a value set in the plugin settings takes precedence.
The layout file¶
The plan lives as tableplan.json next to the plugin jar
(<POS data directory>/POSPlugins/AP/tableplan.json). Structure, fields
and examples: tableplan.json — layout format.
The file is read at runtime: when the table plan tab is opened, the UI
fetches the current state, so a change takes effect immediately, without a
POS restart. Every save writes atomically and creates backups
(tableplan.json.1 … tableplan.json.5).
The tab caption is controlled by the title field in the file (default
"Tischplan"; the POS renders tab captions in upper case).
Access via host name or reverse proxy¶
The POS accepts writing calls (for example saving the plan) only when the
address in the browser matches it: localhost, its own host name or one of
its IP addresses. If the POS UI is opened under a different name (DNS
alias, reverse proxy), that name must be listed in the CCO setting
internal.web.server.remoteAccessAllowedHosts
(customerCheckout.properties). Reading works without it; the table plan
still appears, but saving fails with HTTP 403.