Table Blocks
The Table Blocks page is used to prevent a table, or a time range inside a branch, from being used for reservations during a defined period.
Use Table Blocks when you need to reserve operational time for cases such as:
- maintenance
- deep cleaning
- private setup
- temporary floor restrictions
- staff-only service windows
- unavailable tables during events or layout changes
Table Blocks are an internal admin tool. They are used by staff to control reservation availability and table assignment behavior.
What a Table Block Does
A Table Block creates a blocked time window with a start date/time and end date/time.
Depending on how it is configured, the block can be used to:
- block a specific table
- document why the table is unavailable
- organize blocked tables by branch, floor, and zone
- keep the block searchable and visible in the admin list
The system stores each block with branch context, an optional table, a translated title, an optional reason, the block time range, and the user who created it.
Where to Find It
In the admin panel, open:
Reservations > Table Blocks
From there, staff can:
- view all existing table blocks
- search and filter blocks
- create a new block
- edit an existing block
- delete one or more blocks
- export the table block list
Page Overview
The Table Blocks module currently includes:
- Table Block List
- Create Table Block
- Edit Table Block
The create and edit form uses the same core fields.
Table Block List
The list page displays the current blocked records in a data table.
Main Columns
| Column | Purpose |
|---|---|
| Branch | Shows which branch owns the block. This may be hidden for users already assigned to a branch. |
| Table | Shows the blocked table, when a specific table is selected. |
| Title | Shows the block name in the active language. This is the main label staff use to identify the block. |
| Start At | Shows when the block begins. |
| End At | Shows when the block ends. |
| Created By | Shows the staff user who created the block. |
Search, Filter, and Sort
The list supports:
- search by Title
- search by Reason
- filter by Branch
- filter by date range
- sort by Branch
- sort by Table
- sort by Title
- sort by Start At
- sort by End At
- sort by Created By
Export
Table Blocks support export using the system export flow.
The export includes:
- branch
- table
- floor
- zone
- title
- start date and time
- end date and time
- created by
Create and Edit Form
The Table Block form is used for both creating and updating records.
When creating a record, branch selection appears if the current user is not already restricted to one branch.
When editing a record, the form keeps the existing branch context and updates the block details.
Field-by-Field Explanation
Branch
| Field | Purpose |
|---|---|
| Branch | Selects which branch the table block belongs to. This determines the available floors, zones, and tables that can be selected in the form. |
Why Branch Matters
Branch is the top-level context for the block.
It affects:
- which floors are loaded
- which zones are loaded
- which tables are available
- which reservation operations are impacted by the block
If the logged-in user is assigned to a branch, this value is taken from the user context and is not intended to be changed manually.
Title
| Field | Purpose |
|---|---|
| Title | The main internal name of the table block. It explains what the block is for, such as Maintenance, Private Event Setup, or Deep Cleaning. |
Title Translation Behavior
The Title field is translatable.
That means:
- the form supports multiple languages
- staff can enter the title for each supported locale
- the list page shows the title in the active language
- search and sorting use the translated title field
Use short, clear titles that help staff understand the reason for the block immediately.
Floor
| Field | Purpose |
|---|---|
| Floor | Narrows the table selection to a specific floor inside the selected branch. |
Why Floor Exists
The Floor field is used to reduce the table list and help staff find the correct table faster.
It is especially useful when:
- the branch has multiple floors
- the same naming pattern is reused across areas
- staff want to create a block in a specific service area
If no branch is selected, floor selection is disabled.
Zone
| Field | Purpose |
|---|---|
| Zone | Narrows the available tables further to a specific zone within the selected floor and branch. |
Why Zone Exists
Zone helps staff target a smaller operational area.
Examples:
- indoor
- outdoor
- smoking
- terrace
- VIP
- family section
If no floor is selected, zone selection is disabled.
Table
| Field | Purpose |
|---|---|
| Table | Selects the specific table that should be blocked during the chosen time range. |
Important Note About Table
The Table field is currently optional.
This means a block record can still be created even if no individual table is selected. In practice, the main operational use case is to block a specific table, so staff should normally choose the target table unless the branch intentionally wants to record a broader block entry for internal tracking.
Because floor and zone are selectors for table discovery, staff usually follow this order:
- Select Branch
- Select Floor if needed
- Select Zone if needed
- Select Table
Start At
| Field | Purpose |
|---|---|
| Start At | Defines the exact date and time when the table block begins. |
End At
| Field | Purpose |
|---|---|
| End At | Defines the exact date and time when the table block finishes. |
Time Range Rules
The block time range is one of the most important parts of the record.
The backend enforces:
- Start At is required
- End At is required
- End At must be after Start At
This prevents invalid block windows such as zero-length or reversed time ranges.
How the Time Range Is Used
The system uses this window to understand when the block is active.
Operationally, this helps reservation logic know that a table should not be considered available during that period.
Examples:
- block a table from
5:00 PMto7:00 PMfor maintenance - block a table for an entire evening during a private setup
- block a table for a short turnover window before a special service
Reason
| Field | Purpose |
|---|---|
| Reason | Stores a longer explanation for the block. This is useful when the title alone is not enough. |
When to Use Reason
Use the Reason field when staff need more context, such as:
- who requested the block
- what work is happening
- whether the block is temporary or recurring in practice
- what operations staff should do during that time
The Reason field is optional, but it is useful for audit clarity and team handoff.
Validation Rules
The form currently enforces these rules:
| Field | Rule |
|---|---|
| Branch | Required on create, based on branch context rules. |
| Table | Optional, but if provided it must reference an existing table. |
| Title | Required, translatable, minimum 2 characters, maximum 255 characters per locale. |
| Reason | Optional, maximum 1000 characters. |
| Start At | Required, valid date and time. |
| End At | Required, valid date and time, and must be after Start At. |
Form Behavior
The form loads data progressively:
- Load base branch metadata
- Load floors for the selected branch
- Load zones for the selected floor
- Load tables for the selected branch, floor, and zone
When the user changes:
- Branch: floor, zone, and table are reset
- Floor: zone and table are reset
- Zone: table is reset
This prevents a table from remaining selected after its parent context changes.
Relationship Between Branch, Floor, Zone, and Table
The selection path is hierarchical:
- Branch is the top-level owner
- Floor belongs to the branch
- Zone belongs to the selected branch/floor context
- Table is the final target being blocked
This structure makes the form easier to use in branches with many tables.
Created By
Each record stores the staff user who created it.
This helps with:
- accountability
- follow-up questions
- operational traceability
- admin review
The value appears in the list and export output.
Recommended Usage
Use Table Blocks with clear naming and consistent internal rules.
Recommended practice:
- Keep the Title short and operational.
- Use Reason for additional context.
- Always verify the Start At and End At window carefully.
- Use Floor and Zone to narrow the correct table before selecting it.
- Prefer blocking the specific table that is affected instead of creating vague entries.
Practical Examples
Example 1: Cleaning Block
- Branch:
Main Branch - Floor:
Ground Floor - Zone:
Indoor - Table:
T12 - Title:
Deep Cleaning - Reason:
Seat repair and full cleaning after closing prep - Start At:
2026-07-05 02:00 PM - End At:
2026-07-05 04:00 PM
This prevents staff from treating the table as available during that window.
Example 2: Private Event Preparation
- Branch:
Downtown Branch - Floor:
First Floor - Zone:
VIP - Table:
VIP-03 - Title:
Private Event Setup - Reason:
Reserved for event decoration and audio setup - Start At:
2026-07-10 03:00 PM - End At:
2026-07-10 06:00 PM
This gives the team a visible, time-bound operational block before service begins.
Create and Update Workflow
Create Table Block
- Open Reservations > Table Blocks
- Click Create Reservation Table Block
- Select the Branch if required
- Enter the translated Title
- Choose Floor, Zone, and Table as needed
- Enter Start At and End At
- Add Reason if useful
- Click Create
Update Table Block
- Open the existing block from the list
- Update the translated Title
- Adjust floor, zone, table, or time range if needed
- Update the Reason if the purpose changed
- Click Update
When to Use Table Blocks Instead of Reservation Settings
Use Reservation Settings when you want to define branch-wide reservation behavior.
Use Table Blocks when you want to stop availability for a specific operational time window.
In short:
- Reservation Settings = policy
- Table Blocks = operational blocking record
