Skip to content

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.