Skip to content

In-House Settings

Overview

In-House Settings configure dine-in operations including table management, service modes, and in-store ordering options.

Key Purpose: Configure dine-in and in-store ordering settings.

Purpose

This page lets you configure dine-in ordering operations including table sections, order capacity, tipping, checkout notes, and menu assignment per location.

Key Concepts

  • In-House Settings: Configuration stored per location as in_house_setting on the Location model, controlling dine-in ordering behavior for kiosk and QR ordering channels
  • Table Sections: Named groups of tables (e.g., "Main Floor," "Terrace") with either automatic or custom naming, used for QR code generation and table identification on KDS
  • Order Capacity: Time slot-based limits on orders and items per slot, with support for category-specific limits and time-specific override rules — shared configuration with online ordering
  • Tip Collection: Optional gratuity collection with three configurable percentage options (default 10/15/20%) and choice of calculating tips before or after taxes
  • Checkout Notes: Optional free-text field allowing customers to add special instructions to items, with a customizable placeholder message (max 150 chars)

Actions

Configure Order Capacity

Set time slot duration, limits per slot (orders and items), enable flexible limits, add category-specific limits, and define time-specific override rules with custom schedules.

Manage Table Sections

Create, edit, or delete table sections with automatic naming (prefix + sequential numbers) or custom naming (manually entered table names, max 20 chars each). Section names must be unique and max 25 characters.

Enable Tip Collection

Toggle collect_tips.enabled, configure three percentage options, and choose whether tips are calculated before or after taxes.

Enable Checkout Notes

Toggle allow_notes.enabled and set a placeholder message for the notes field (default: "E.g. 'For Oliver' or 'I'm allergic to mushrooms'").

Assign Menus

Set a default menu (must be eligible for kiosk/QR visibility) and optionally add extra menus with scheduled availability. Extra menus cannot duplicate the default or overlap schedules.

Location

  • Backoffice Route: /in-house/settings
  • Backend Controller: app/Http/Controllers/Api/InHouseController.php
  • Vue Component: src/views/in-house/settings/index.vue

Fields

In-House Ordering Enabled

PropertyValue
Field IDenabled
LabelEnable In-House Ordering
TypeToggle
Defaulttrue

Description: Master switch for in-house ordering features.


Service Mode

PropertyValue
Field IDservice_mode
LabelService Mode
TypeSelect
Optionscounter, table, both
Defaultboth

Description: How orders are handled in-store.

Options:

  • Counter: Orders placed and collected at counter
  • Table: Orders delivered to tables
  • Both: Customer chooses

Table Service

PropertyValue
Field IDtable_service
LabelTable Service
TypeToggle
Defaulttrue

Description: Enable table service (orders delivered to tables).


Counter Service

PropertyValue
Field IDcounter_service
LabelCounter Service
TypeToggle
Defaulttrue

Description: Enable counter service (customers collect orders).


Order Number Display

PropertyValue
Field IDshow_order_number
LabelShow Order Number
TypeToggle
Defaulttrue

Description: Display order number after ordering.


Order Number Format

PropertyValue
Field IDorder_number_format
LabelOrder Number Format
TypeSelect
Optionssequential, daily_reset, custom
Defaultdaily_reset

Description: How order numbers are generated.

Options:

  • Sequential: Continuous numbering (1, 2, 3...)
  • Daily Reset: Resets each day (starts at 1)
  • Custom: Custom format

Starting Number

PropertyValue
Field IDstarting_number
LabelStarting Number
TypeNumber
Default1

Description: First order number of the day/sequence.


Preparation Time

PropertyValue
Field IDprep_time
LabelPreparation Time
TypeNumber
UnitMinutes
Default15

Description: Estimated preparation time for in-house orders.


Table Management

A location's tables are organized into sections (e.g. "Dining Room", "Bar"). Each section has a Section Name (max 25 characters) and a Naming type.

Naming (per section)

PropertyValue
Field IDnaming_type
LabelNaming
TypeSelect
OptionsAutomatic Table Names, Custom Table Names

Description: How a section's tables are named.

Options:

  • Automatic Table Names: enter a Label (e.g. "Table") and a Number of Tables; the section generates a numbered set — Table 1, Table 2, …
  • Custom Table Names: manually enter each table's name (up to 20 characters each).

Order Acceptance & POS Forwarding

In-house orders placed via Kiosk, Table QR, or staff are processed automatically. There is no toggle to hold orders for manual acceptance, and no setting to stop forwarding orders to a connected POS — when a POS integration (MplusKassa, Hendrickx/Vanhoutte) is connected, paid orders are pushed to it automatically as part of order processing.

To manage incoming order volume instead, use:

  • the Accept online orders switch (Online Ordering) to open or close the channel,
  • the order cut-off time (accept_orders_until, e.g. until closing time) in Online Ordering / Table QR settings, and
  • Order Capacity limits (Online Settings) to cap orders/items per time slot.

These order-flow toggles are not real settings. The in-house setting does not store auto_accept, service_mode, send_to_kds, print_kitchen_ticket, or print_receipt — it manages table sections, tip collection, order notes, and the default/extra menus (see the FAQs below).


Business Logic

In-House Order Flow

In-house orders (Kiosk, Table QR, or staff-entered) are placed and paid, then processed automatically: when a POS integration is connected the order is pushed to the POS, kitchen-bound items appear on the KDS (where used), and the order moves through preparation to ready. There is no manual-acceptance gate in this flow.


Relations

Depends On

  • Locations: Settings per location
  • KDS: For kitchen display
  • Printers: For tickets

Affects

  • Kiosk: In-house ordering
  • QR Ordering: Table ordering
  • KDS: Order display
  • Transactions: In-house orders

Business Rules

  • At least one table section is required — the frontend enforces this before allowing save
  • Extra menus cannot be the same as the default menu or each other, and their schedules must not overlap
  • Kassanet-originated sections (names prefixed with "Hendrickx " or "Vanhoutte ") cannot be deleted or modified through the UI
  • Sections used in QR Ordering cannot be deleted until removed from QR Ordering first
  • Saving triggers a ReloadMenu event that syncs settings to all kiosk devices via Cloudflare D1, plus GenerateQrCodesForSection jobs if table names changed

FAQs

  • "What fields does the in-house setting actually store?" order_capacity, collect_tips, allow_notes, default_menu_id, and extra_menu_ids — NOT service_mode, auto_accept, or print_kitchen_ticket.
  • "How do table sections work?" Each section has a name (max 25 chars, unique), a naming type (Automatic with label + count, or Custom with manually entered names up to 20 chars each), and automatically generates QR codes for QR Ordering.
  • "How does tip collection work?" When enabled, three percentage options are offered (default 10/15/20%), and tips can be calculated on the subtotal before or after taxes. The default is After Taxes.
  • "What happens when I delete a section?" The system checks if the section is used by QR Ordering (blocks deletion if so) and whether it's a Kassanet section (blocks deletion if so). Otherwise it deletes the section and regenerates QR codes.
  • "Do changes apply immediately?" Changes trigger a ReloadMenu event, syncing to all connected devices. However, QR code regeneration happens asynchronously via background jobs.

Troubleshooting

  • Table section not saving → Verify the section name is unique and does not exceed 25 characters. For custom naming, each table name must be 20 characters or fewer.
  • Cannot delete a table section → The section may be in use by QR Ordering (remove it from QR Ordering first) or it may be a Kassanet-originated section (prefixed with "Hendrickx " or "Vanhoutte "), which cannot be deleted through the UI.
  • Menu not appearing in default menu dropdown → The menu must be eligible for kiosk/QR visibility. Verify the menu is published and configured for the correct channel.
  • Changes not reflected on kiosk → Saving triggers a ReloadMenu event. Verify the kiosk device is connected and receiving sync updates via Cloudflare D1.

Examples

Counter Service Only

json
{
  "enabled": true,
  "service_mode": "counter",
  "table_service": false,
  "counter_service": true,
  "show_order_number": true,
  "order_number_format": "daily_reset",
  "starting_number": 1,
  "prep_time": 10,
  "auto_accept": true,
  "send_to_kds": true,
  "print_kitchen_ticket": true,
  "print_receipt": true
}

Full Table Service

json
{
  "enabled": true,
  "service_mode": "table",
  "table_service": true,
  "counter_service": false,
  "table_count": 20,
  "table_naming": "numbers",
  "prep_time": 20,
  "auto_accept": true,
  "send_to_kds": true
}

Mixed Service

json
{
  "enabled": true,
  "service_mode": "both",
  "table_service": true,
  "counter_service": true,
  "table_count": 15,
  "show_order_number": true,
  "prep_time": 15,
  "auto_accept": true
}