Articles, Printers & Rules — Detailed Guide¶
This chapter describes the complete interplay of articles, article groups, printer control, price rules, article options and draught systems in DiKAS. It is aimed at experienced users, system administrators and integrators.
Table of Contents¶
- Article Groups and Hierarchy
- Articles in Detail
- Article Options and Option Templates
- Printer Control — The Core
- Price Rules and Time Control
- Draught System Integration
- System Articles
- Practical Example: Pizzeria "Da Mario"
- Practical Example: Beer Garden "Zum Löwen"
- Practical Example: Large Restaurant with 3 Kitchen Stations
- Frequently Asked Questions (FAQ)
1. Article Groups and Hierarchy¶
Group Structure¶
Article groups in DiKAS are hierarchically organized — up to three levels deep:
Hauptgruppe (Ebene 0)
├── Untergruppe (Ebene 1)
│ ├── Unter-Untergruppe (Ebene 2)
│ └── Unter-Untergruppe (Ebene 2)
└── Untergruppe (Ebene 1)
Practical Example:
100 Speisen
├── 10001 Vorspeisen
├── 10002 Pizza
│ ├── 100020001 Pizza Klassiker
│ └── 100020002 Pizza Spezial
├── 10003 Pasta
└── 10004 Salate
200 Getränke
├── 20001 Alkoholfrei
├── 20002 Bier
├── 20003 Wein
└── 20004 Cocktails
300 Desserts
Two ID Types for Groups¶
Each article group has two different IDs — this is important to understand:
| ID Type | Example | Usage |
|---|---|---|
Document ID (_id) |
artgrp_a1b2c3d4e5f6 |
Stable reference. Stored in Article.GroupId. Never changes. |
Group No. (GroupId) |
10002 |
Hierarchical number. Determines tree structure and sorting. Can be changed. |
Note: When an article belongs to the group "Pizza", it stores the document ID of the group (not the group number). This means: You can change the group number at any time without articles losing their assignment.
Group Settings¶
Each group offers these configuration options:
| Setting | Description |
|---|---|
| Name | Display name (e.g. "Pizza") |
| Group No. | Hierarchical sorting |
| Color / Icon | Display at the POS |
| Display Type | Sales (POS), Order (Kitchen), Cloakroom, Monthly Report |
| Print Options | Station ticket, consolidated order ticket — inherited by all articles and subgroups |
| Section-Dependent Print Options | Different printers per table group |
| Visibility Rules | Show group only on certain days/times/workstations |
| Group Options | Option groups that apply to all articles in the group |
| Price Rules | Rules that apply to all articles in the group |
| Cross-Sell Articles | Cross-sell articles (e.g. "Would you like a dessert?") |
Inheritance¶
Settings are inherited from top to bottom:
Speisen (ExtraBon 1 → Küchendrucker)
├── Pizza (erbt Küchendrucker)
│ ├── Pizza Margherita (erbt Küchendrucker)
│ └── Pizza Salami (erbt Küchendrucker)
└── Salate (ExtraBon 1 → Salatdrucker) ← überschreibt Vererbung
├── Caesar Salad (erbt Salatdrucker)
└── Griechischer Salat (erbt Salatdrucker)
The inheritance chain is traversed from bottom to top for each order:
- Does the article have its own print option? → Use it.
- No? Does the direct group have a print option? → Use it.
- No? Does the parent group have one? → Use it.
- No? → No ticket is printed.
2. Articles in Detail¶
All Fields of an Article¶
Basic Data¶
| Field | Required | Description | Example |
|---|---|---|---|
| Name | Yes | Display at the POS and on receipts | Pizza Margherita |
| Price | Yes | Selling price (gross) | 12.50 |
| Tax Class | Yes | 19%, 7% or 0% | 19% |
| Reduced Tax Class | No | Alternative VAT rate (historical) | — |
| Group | Yes | Assigned article group | Pizza |
| Article Number | No | For reports, DATEV, import | 101 |
| Barcode | No | EAN for scanner | 4001234567890 |
| Short Name | No | Compact name for POS buttons | Margh. |
| Receipt Text | No | Alternative name on the kitchen ticket | — |
| Receipt Extra | No | Extra text below the article name on the ticket | "mit Basilikum" |
| Unit | No | Unit of measure | Piece, Liter, kg |
| Active | — | Inactive articles do not appear at the POS | Yes |
| Favorite | — | Appears in the favorites view at the POS | No |
| Sort Order | — | Order within the group | 10 |
Tax Classes — Overview¶
| Tax Class | Rate | Typical Usage |
|---|---|---|
| Standard (19%) | 19% | Beverages |
| Reduced (7%) | 7% | Food (since 01.01.2026 uniformly 7%, regardless of dine-in or takeaway) |
| Tax-free (0%) | 0% | Value vouchers on sale, deposits |
Special Features¶
| Field | Description | Example |
|---|---|---|
| Manual Price | Price is entered by the waiter for each booking | Market price dish |
| Manual Price Mode | Allow only plus, only minus or both | Discount: only minus |
| Deposit | Automatic deposit surcharge per unit | 0.25 EUR (bottle deposit) |
| Points | Loyalty points per sale | +10 points |
| Course | Default course for this article | Course 1 (appetizer) |
| Allergens | EU-14 allergen labeling | Gluten, Lactose |
| Draught System PLU | PLU number for automatic tapping | 5 |
Article Types (ExtraOption)¶
Via the ExtraOption field, articles can have special functions:
| Type | Function |
|---|---|
| None (default) | Regular sales article |
| Customer Top-up | Loads customer credit (0% VAT on sale) |
| Voucher | Sells a voucher |
| Time Article | Price is calculated by time (e.g. billiard table per hour) |
| Deposit | Deposit article |
| Discount | Percentage discount on the entire order |
| Tip | Tip item on the receipt |
| Cloakroom | Cloakroom ticket |
3. Article Options and Option Templates¶
Three Levels of Options¶
DiKAS supports three different ways to define article options. They are merged in this priority order:
| Priority | Source | Description |
|---|---|---|
| 1 (highest) | Option Templates | Reusable templates shared by multiple articles |
| 2 | Inline Option Groups | Groups defined directly on the article |
| 3 (lowest) | Legacy Options | Flat list (compatibility with older data) |
All three sources are automatically merged when loading the article and presented as a unified list.
Option Groups in Detail¶
An option group bundles related choices:
| Field | Description | Example |
|---|---|---|
| Name | Title of the group (tab label in the POS) | Extra Topping |
| Required | Must the guest make a selection? | Yes/No |
| Minimum Selection | How many options at minimum? | 1 |
| Maximum Selection | How many options at maximum? | 3 |
| Free Count | The N cheapest options are free | 1 |
| Deduct on Deselect | Price deduction when a default option is deselected | Yes/No |
Individual Options¶
Each option within a group has:
| Field | Description | Example |
|---|---|---|
| Name | Option name | Ham |
| Surcharge | Additional price | 1.50 EUR |
| Default | Pre-selected? | No |
| Percentage | Surcharge as percentage of the article price? | No |
| Print on Station Ticket | Show option on the kitchen ticket? | Yes |
Free Count (FreeCount)¶
The free count ensures that the cheapest N options are automatically free:
Example: Burger with one sauce included
Burger (10,90 €)
└── Optionsgruppe: Soße (Gratis-Anzahl: 1)
├── Ketchup 0,00 € ← wird gratis (günstigste)
├── Mayo 0,50 € ← gewählt, wird gratis weil Gratis-Anzahl = 1
├── BBQ-Soße 0,80 € ← wenn zusätzlich gewählt: +0,80 €
└── Trüffel-Mayo 1,50 € ← wenn zusätzlich gewählt: +1,50 €
The cheapest selected option is automatically calculated as free.
Deduct on Deselect (DeductOnDeselect)¶
When an article comes with certain ingredients by default and the guest deselects one:
Example: Burger comes with cheese and salad
Burger mit Käse und Salat (11,90 €)
└── Optionsgruppe: Zutaten (Abzug bei Abwahl: Ja)
├── Käse 1,50 € Standard ✓ → Gast wählt ab: -1,50 € Abzug
├── Salat 0,80 € Standard ✓ → Gast wählt ab: -0,80 € Abzug
├── Tomate 0,50 € Standard ✓ → bleibt gewählt: kein Aufpreis
└── Jalapeño 0,50 € Standard ✗ → Gast wählt dazu: +0,50 € Aufpreis
Result when deselecting cheese: 11.90 EUR − 1.50 EUR = 10.40 EUR
Option Templates¶
Option templates are reusable option groups that you define once and assign to multiple articles:
Admin → Option Templates → "+ New Template"
- Create a template (e.g. "Pizza Extras")
- Add option groups to the template
- Open article → Tab "Templates" → Assign template
| Benefit | Description |
|---|---|
| Central Maintenance | Changes apply immediately to all assigned articles |
| Consistency | Same extras for all similar articles |
| Time Savings | No manual maintenance per article |
Per-article overridable defaults: Even if a template is assigned to an article, you can set for each article individually which options are selected by default. The template defines what is available, the article determines what is pre-selected.
4. Printer Control — The Core¶
Printer control is the core of order routing. It determines which printer receives which ticket when a waiter places an order.
Printer Types¶
| Type | Description | Connection |
|---|---|---|
| Network (IP) | ESC/POS thermal printer on WLAN/LAN | TCP, IP:Port (e.g. 192.168.1.51:9100) |
| Local | Connected to the server | USB |
| Client | On the waiter's device | Browser print |
| A4 (PDF/CUPS) | Regular printer for A4 printouts | CUPS/lpr |
Printer Configuration¶
| Field | Description | Default |
|---|---|---|
| Name | Display name | — |
| IP Address | IP:Port of the printer | — |
| Paper Width | 58 mm or 80 mm | 80 mm |
| Codepage | Character set | 858 (Western Europe + Euro) |
| Backup Printer | Used if this printer fails | — |
| Disabled | Temporarily disable the printer | No |
Virtual Printers¶
Two special printer IDs are built into DiKAS:
| Virtual Printer | Meaning |
|---|---|
Waiter Printer (__kellner__) |
The printer assigned to the waiter's device |
Default Printer (__standard__) |
The printer configured as "Default Printer" in settings |
You can use these virtual printers in print options. This enables flexible configurations like: "Invoice always on the waiter printer" or "Station ticket on the default printer".
Ticket Types¶
DiKAS distinguishes four different ticket types:
| Ticket Type | When Printed | Content |
|---|---|---|
| Invoice (TemplateType 0) | At payment | All items, VAT, payment method, TSE data |
| Consolidated Order Ticket (TemplateType 1) | When placing order | All articles of a station combined |
| Station Ticket (TemplateType 2) | When placing order | Individual articles or article groups |
| Void Ticket (TemplateType 3) | When voiding | Voided item with reason |
Additionally: End-of-Day Ticket (TemplateType 4), Voucher Ticket (TemplateType 5).
Station Ticket — Targeted Order Routing¶
Each article (or group) can have up to two station ticket printers:
| Setting | Description |
|---|---|
| Station Ticket 1 — Printer | Target printer (e.g. kitchen printer) |
| Station Ticket 1 — Name | Heading on the ticket (e.g. "KITCHEN") |
| Station Ticket 1 — Print Price | Show price on the kitchen ticket? |
| Station Ticket 1 — Print PLU | Show article number? |
| Station Ticket 1 — Print Options | Show selected extras? |
| Station Ticket 1 — Multi-Ticket | One ticket per unit (instead of one ticket for all) |
| Station Ticket 1 — Course Ticket | Also use this printer for course change tickets |
Station Ticket 2 has the same settings — for a second printer.
Example: A dish "Spaghetti Bolognese" goes as station ticket 1 to the kitchen printer and as station ticket 2 additionally to the bar printer (so the bar knows a meal is coming and can offer a beverage).
Consolidated Order Ticket — All Articles on One Ticket¶
The consolidated order ticket combines all articles of an order that have the same target printer:
══════════════════════════════
KÜCHE Tisch 5
──────────────────────────────
Gang 1:
2× Schnitzel
→ mit Pommes
→ ohne Salat
1× Lasagne
Gang 2:
1× Rinderfilet
→ medium
──────────────────────────────
Kellner: Maria 18:45
══════════════════════════════
| Setting | Description |
|---|---|
| Printer | Target printer for the consolidated order ticket |
| Print Type | 0 = always print, 1 = additionally print |
| Name | Heading (e.g. "KITCHEN") |
| Combine Articles | Combine identical articles on one line |
Multiple consolidated order ticket targets: An article can have multiple consolidated order ticket entries, so the same ticket appears on multiple printers.
Print Option Resolution — The Algorithm¶
When a waiter places an order, DiKAS runs through the following check chain for each individual article:
Schritt 1: Hat der ARTIKEL eine bereichsabhängige Druckoption,
die zur Tischgruppe passt?
→ JA: Diese verwenden. FERTIG.
→ NEIN: Weiter zu Schritt 2.
Schritt 2: Hat der ARTIKEL eine eigene Druckoption (Enabled = true)?
→ JA: Diese verwenden. FERTIG.
→ NEIN: Weiter zu Schritt 3.
Schritt 3: Hat die DIREKTE ARTIKELGRUPPE eine bereichsabhängige
Druckoption für diese Tischgruppe?
→ JA: Diese verwenden. FERTIG.
→ NEIN: Weiter zu Schritt 4.
Schritt 4: Hat die DIREKTE ARTIKELGRUPPE eine Druckoption?
→ JA: Diese verwenden. FERTIG.
→ NEIN: Weiter zu Schritt 5.
Schritt 5: Übergeordnete Gruppe prüfen (Schritte 3+4 wiederholen).
Gruppenbaum nach oben durchlaufen bis zur Hauptgruppe.
Schritt 6: Keine Druckoption gefunden → Kein Bon wird gedruckt.
Important: This resolution happens for every single order, not just during initial setup. This means: If you change a print option on a group, the change takes effect immediately on the next order.
Section-Dependent Print Options (ExtraPrintOptions)¶
The most powerful print control feature: Different printers depending on the service section (table group).
| Field | Description |
|---|---|
| Table Groups | Which table groups does this print option apply to? |
| Print Option | Own station ticket/consolidated order ticket/draught system configuration |
Use case: An article "Cola 0,3l" goes to the bar printer indoors, to the garden printer in the beer garden.
Cola 0,3l
├── Standard-Druckoption: ExtraBon 1 → Thekendrucker
├── Bereichsabhängig:
│ └── Tischgruppe „Biergarten" → ExtraBon 1 → Gartendrucker
When a waiter orders the cola at table 15 (beer garden), the garden printer is used. At table 25 (indoors) the bar printer.
Receipt Templates — Customize Layout¶
Each ticket type has a configurable template:
Admin → Settings → Receipt Designer
| Setting | Description |
|---|---|
| Header Lines | Text above the receipt (company name, address) |
| Footer Lines | Text below the receipt (thank-you message, opening hours) |
| Line Width | Characters per line (default: 42 for 80mm paper) |
| Separator | Character for divider lines (e.g. ─) |
| Show Logo | Company logo at the top of the receipt |
| Show QR Code | TSE QR code on the POS receipt |
| Show TSE Info | TSE signature information |
Consolidated order ticket specific: - Sort by course - Show price - Show options
Station ticket specific: - Print price - Print PLU - Print options
Print Failover¶
DiKAS has multiple protection mechanisms against printer failures:
| Mechanism | Description |
|---|---|
| Backup Printer | If the main printer fails, the backup printer is automatically used |
| Retry Logic | 5 retry attempts with 5-second pause |
| Print Errors Never Block | A failed ticket never prevents the booking or payment |
| Printer Redirect | Temporary redirect of all jobs from one printer to another |
| Printer Status | Real-time query of paper, cover, cutter via ESC/POS DLE commands |
5. Price Rules and Time Control¶
Rule Hierarchy¶
Price rules can be defined at two levels:
| Level | Priority | Description |
|---|---|---|
| Article | Higher | Rules directly on the article |
| Article Group | Lower | Rules on the group (apply to all articles in the group) |
Article rules override group rules.
Rule Conditions¶
Each rule can be restricted by combinations of these conditions:
| Condition | Description | Example |
|---|---|---|
| Weekdays | On which days does the rule apply? | Mon–Fri |
| Start Date / End Date | Validity period | 01.06.–31.08. (Summer menu) |
| Table Groups | Only for specific service sections | Beer garden |
| Customer Groups | Only for specific customers | Regular customers, staff |
| Workstations | Only at specific registers | Register 1 |
| Delivery Mode | Delivery, pickup or all | Pickup only |
| Gender | Only for men/women (disco mode) | Women |
Price Adjustments¶
When the conditions of a rule are met, the price is adjusted as follows:
| Adjustment | Description | Example |
|---|---|---|
| Percentage of Normal Price | e.g. 80 = 20% discount | Happy Hour: 80% |
| Fixed Price | Fixed price (only if cheaper than normal) | Lunch special: 8.90 EUR |
| Surcharge/Deduction | Fixed amount add/subtract | Beer garden surcharge: +0.50 EUR |
| Minimum Price | Price may not fall below this value | At least 1.00 EUR |
| Rounding | Round to 5 or 10 cents | To 10 cents |
Sub-Rules (Time Windows)¶
Within a rule, you can define time windows that set different prices at different times:
Example: Breakfast, Lunch, Happy Hour
Regel: „Tageszeiten-Preise" (Mo–Fr)
├── 07:00–11:00 → 80 % (Frühstücksrabatt)
├── 11:30–14:00 → Festpreis 8,90 € (Mittagsmenü)
├── 16:00–18:00 → 70 % (Happy Hour)
└── 22:00–02:00 → 120 % (Nachtzuschlag)
Visibility Rules on Groups¶
Article groups can additionally have visibility rules that determine when the group is displayed at the POS:
Example: - Group "Breakfast" only shown from 07:00–11:00 - Group "Lunch Menu" only Mon–Fri from 11:30–14:00 - Group "Cocktails" only from 17:00 onwards
6. Draught System Integration¶
DiKAS controls automatic beverage draught systems. When a waiter orders a beverage, the system taps automatically — no manual tapping needed.
Supported Protocols¶
| Protocol | Manufacturer | Connection | Description |
|---|---|---|---|
| Gruber | Gruber | Serial, TCP, UDP | STX/ETX framing with XOR checksum, ENQ handshake |
| Addimat | Addimat | Serial, TCP, UDP | STX/ETX framing with XOR-CRC checksum, ENQ handshake |
| Hogatron | Hogatron/WMF | Serial, TCP, UDP | Configurable field lengths, no STX/ETX |
| Simulator | DiKAS | Internal | For testing without real hardware |
Connection Types¶
| Connection | Description | Typical Usage |
|---|---|---|
| TCP | Network (standard) | Modern systems with Ethernet |
| UDP | Network (connectionless) | Older network systems |
| Serial | COM port (RS-232) | Older systems with serial interface |
Setting Up a Draught System¶
Admin → Settings → Draught Systems → "+ New System"
| Field | Description | Example |
|---|---|---|
| Name | Display name | Bar Tap |
| Protocol | Gruber, Addimat, Hogatron or Simulator | Gruber |
| Connection Type | TCP, UDP or Serial | TCP |
| IP Address | Network address of the system | 192.168.1.70 |
| Port | Network port | 3010 |
| Enabled | Enable/disable system | Yes |
| Reset at End-of-Day | Reset system at end-of-day | Yes |
Advanced settings (protocol-specific):
| Field | Description | Default |
|---|---|---|
| PLU Length | Number of digits of the PLU number in the protocol frame | 4 |
| Waiter Length | Number of digits of the waiter number | 3 |
| Table Length | Number of digits of the table number | 3 |
| Quantity Length | Number of digits of the quantity | 4 |
| Use Checksum | Append XOR checksum | No |
| Send Timeout | Timeout in milliseconds | 1000 |
| Poll Interval | Polling interval for incoming bookings | 1000 |
Connecting Articles with a Draught System¶
For an article to be automatically tapped, two things must be configured:
- Draught system PLU on the article: The PLU number that identifies the tap
- Draught system enabled in print options: In the print options section of the article
| Setting | Where | Description |
|---|---|---|
| Draught System PLU | Article → General | PLU number of the tap (e.g. 5) |
| Draught System Enabled | Article → Print Options → Draught System | Must be set to "Yes" |
| Target System | Article → Print Options → Draught System → Target | Which system (or Default = first active) |
| Manual | Article → Print Options → Draught System → Manual | Manual operation instead of automatic |
Draught System per Service Section¶
Via section-dependent print options you can assign different draught systems to different service sections:
Artikel: Helles 0,5l (PLU: 5)
├── Standard → Schankanlage: Zapfanlage Innen
└── Tischgruppe „Biergarten" → Schankanlage: Zapfanlage Garten
Table Draught Number¶
Each table can have its own draught system table number. This number is transmitted in the protocol frame to the system so it can track consumption per table.
Admin → Tables → Edit Table → "Draught Table No."
Automatic Tapping Process¶
1. Kellner bestellt „Helles 0,5l" an Tisch 5
2. DiKAS erstellt die Bestellung (OpenBon)
3. DiKAS prüft: BeveragePlu vorhanden? Schankanlage aktiviert?
4. DiKAS sendet Buchung an die Schankanlage:
- PLU: 5 (Zapfhahn für Helles)
- Kellnernummer: 12 (Kellner-ID)
- Tischnummer: 5 (Schank-Tischnr. des Tischs)
- Menge: 1
5. Schankanlage empfängt, zapft Bier, sendet ACK zurück
6. Bestellung ist abgeschlossen — Kellner sieht Bestätigung
Error Behavior: If the draught system is not reachable or reports an error, the order is saved regardless. A print error never blocks the booking. The failed tap is logged and can be reviewed in the debug log.
Void and Return¶
Voided orders are sent as negative quantities to the draught system. The system reverses the consumption.
Debug and Diagnostics¶
Admin → Settings → Draught Systems → [System] → "Debug"
The debug window shows all sent and received data packets in hex and ASCII:
18:45:12.345 TX: 02 62 30 31 32 30 30 30 35 2B 30 30 30 30 31 30 30 03 .b012000 5+000010 0.
18:45:12.456 RX: 06 .
| Direction | Meaning |
|---|---|
| TX | Sent from DiKAS to the system |
| RX | Received from the system |
| ERR | Error (timeout, connection lost) |
7. System Articles¶
DiKAS has 12 predefined system articles needed for internal functions:
| Article | ID | Function |
|---|---|---|
| Bonus Discount | art_custbonusrabatt |
Automatic discount when bonus credit is used |
| Payout | art_payout |
Customer credit payout |
| Credit Top-up | art_guthabenaufladen |
Customer credit loading |
| Voucher Top-up | art_gutscheinaufladen |
Voucher sale |
| Manual Article | art_manuell |
Free price entry at the POS |
| Working Time | art_arbeitszeit |
Time tracking / workshop |
| Voucher Redemption | art_gutscheineinloesung |
Voucher redemption (negative item) |
| Deposit | art_pfand |
Automatic deposit surcharge |
| Delivery Fee | art_liefergebuehr |
Delivery charges |
| Minimum Order | art_mindestbestellwert |
Surcharge when minimum is not met |
| Disco Entry | art_discoeintritt |
Entry fee (disco module) |
| Disco Minimum Spend | art_discomindestverzehr |
Minimum spend surcharge (disco module) |
Protection: System articles cannot be deleted. When editing, only the group change is allowed — all other fields are protected.
8. Practical Example: Pizzeria "Da Mario"¶
Business Description¶
- Pizzeria with 40 indoor seats and 20 on the terrace
- Kitchen with pizza oven and separate salad station
- Beverage counter with coffee machine
- 3 waiters in evening service
Hardware¶
| Device | Location | IP |
|---|---|---|
| POS Printer | Register (entrance) | 192.168.1.50 |
| Kitchen Printer | Next to the pizza oven | 192.168.1.51 |
| Salad Printer | Salad station | 192.168.1.52 |
| Bar Printer | Beverage counter | 192.168.1.53 |
| 3× Tablets | Waiters | WLAN |
Group Structure¶
100 Speisen
├── 10001 Pizza
├── 10002 Pasta
├── 10003 Salate
├── 10004 Vorspeisen
└── 10005 Desserts
200 Getränke
├── 20001 Alkoholfrei
├── 20002 Bier
├── 20003 Wein
└── 20004 Cocktails
300 Kaffee & Kuchen
Printer Configuration¶
| Group | Station Ticket 1 | Consolidated Order Ticket |
|---|---|---|
| Food (100) | Kitchen Printer | Kitchen Printer |
| Salads (10003) | Salad Printer | Salad Printer |
| Beverages (200) | Bar Printer | Bar Printer |
| Coffee & Cake (300) | Bar Printer | Bar Printer |
Note: "Salads" overrides the inheritance from "Food" — salad orders go to the salad station, not to the kitchen.
Table Groups¶
| Table Group | Tables | Special Feature |
|---|---|---|
| Indoor | 1–20 | Default print options |
| Terrace | 21–30 | +0.50 EUR terrace surcharge on beverages |
Price Rules¶
Rule: Terrace surcharge on beverages
| Setting | Value |
|---|---|
| Table Group | Terrace |
| Surcharge | +0.50 EUR |
| Applies to | Group "Beverages" |
Rule: Lunch menu (Mon–Fri, 11:30–14:00)
| Setting | Value |
|---|---|
| Days | Mon–Fri |
| Time Period | 11:30–14:00 |
| Fixed Price | 8.90 EUR |
| Applies to | Article "Daily Menu" |
Option Templates¶
Template: "Pizza Extras"
Optionsgruppe: Extra-Belag
Gratis: 0
Maximal: 5
Schinken +1,50 €
Pilze +1,00 €
Oliven +1,00 €
Peperoni +1,00 €
Sardellen +1,50 €
Extra Käse +2,00 €
Rucola +1,00 €
Artischocken +1,50 €
This template is assigned to all 15 pizzas. If Mario changes the price for extra cheese, the new price immediately applies to all pizzas.
Order Flow¶
Gast an Tisch 25 (Terrasse) bestellt:
1× Pizza Salami 12,50 € + Extra Käse (+2,00 €)
1× Caesar Salad 9,50 €
2× Cola 0,3l 3,50 € + 0,50 € Terrasse = 4,00 € × 2
DiKAS erzeugt 3 Bons:
→ Küchendrucker: „1× Pizza Salami + Extra Käse"
→ Salatdrucker: „1× Caesar Salad"
→ Thekendrucker: „2× Cola 0,3l"
Kassenbon-Summe: 12,50 + 2,00 + 9,50 + 8,00 = 32,00 €
9. Practical Example: Beer Garden "Zum Löwen"¶
Business Description¶
- Inn with indoor dining room (60 seats) and beer garden (100 seats)
- Both areas have their own draught system (Gruber protocol)
- The kitchen serves both areas
- The beer garden has a separate grill station
- 5 waiters, 2 cooks, 1 grill master
Hardware¶
| Device | Location | IP | Type |
|---|---|---|---|
| POS Printer | Register | 192.168.1.50 | ESC/POS |
| Kitchen Printer | Kitchen | 192.168.1.51 | ESC/POS |
| Grill Printer | Beer Garden Grill | 192.168.1.52 | ESC/POS |
| Draught System Indoor | Indoor (bar) | 192.168.1.70 | Gruber TCP |
| Draught System Garden | Beer Garden (tap) | 192.168.1.71 | Gruber TCP |
Table Groups¶
| Table Group | Tables | Description |
|---|---|---|
| Indoor | 1–15 | Indoor dining, Draught System Indoor |
| Beer Garden | 101–130 | Outdoor area, Draught System Garden |
Draught System Configuration¶
System 1: Indoor Tap
| Setting | Value |
|---|---|
| Name | Indoor Tap |
| Protocol | Gruber |
| Connection | TCP |
| IP | 192.168.1.70 |
| Port | 3010 |
| PLU Length | 4 |
| Reset at End-of-Day | Yes |
System 2: Garden Tap
| Setting | Value |
|---|---|
| Name | Garden Tap |
| Protocol | Gruber |
| Connection | TCP |
| IP | 192.168.1.71 |
| Port | 3010 |
| PLU Length | 4 |
| Reset at End-of-Day | Yes |
Beer Articles with Section-Dependent Draught System¶
Article: Helles 0,5l
| Field | Value |
|---|---|
| Name | Helles 0,5l |
| Price | 4.20 EUR |
| Tax Class | 19% |
| Group | Beer |
| Draught System PLU | 1 |
Print Options:
| Setting | Value |
|---|---|
| Default Draught System | Indoor Tap |
| Section-Dependent: Beer Garden | Garden Tap |
Article: Weißbier 0,5l
| Field | Value |
|---|---|
| Draught System PLU | 2 |
| All other settings | Same as Helles, only PLU differs |
Article: Radler 0,5l
| Field | Value |
|---|---|
| Draught System PLU | 3 |
Tables with Draught System Table Numbers¶
| DiKAS Table | Draught Table No. | System |
|---|---|---|
| Table 1 (Indoor) | 1 | Indoor Tap |
| Table 2 (Indoor) | 2 | Indoor Tap |
| ... | ... | ... |
| Table 101 (Garden) | 1 | Garden Tap |
| Table 102 (Garden) | 2 | Garden Tap |
Note: Draught system table numbers are independent per system. Table 1 indoors and table 101 in the garden can both have draught table no. 1 — they belong to different systems.
Printer Configuration for the Kitchen¶
| Group | Default Printer | Beer Garden Printer |
|---|---|---|
| Food | Kitchen Printer | Kitchen Printer |
| Grilled Dishes | Kitchen Printer | Grill Printer |
| Beer | — (draught system only) | — (draught system only) |
| Non-Alcoholic | — (no ticket needed) | — (no ticket needed) |
Special case grilled dishes: Indoors, the order goes to the kitchen printer (kitchen prepares). In the beer garden, it goes to the grill printer (grill master prepares directly).
Artikelgruppe: Grillgerichte
├── Standard-Druckoption: ExtraBon 1 → Küchendrucker
└── Bereichsabhängig: Biergarten → ExtraBon 1 → Grilldrucker
Price Rules¶
Rule: Beer Garden Maß
For Helles, only the Maß (1.0l) is available in the beer garden, indoors the Halbe (0.5l):
| Article | Indoor | Beer Garden |
|---|---|---|
| Helles 0,5l | 4.20 EUR | Hidden |
| Helles Maß 1,0l | Hidden | 8.90 EUR |
This is controlled via visibility rules on the article group:
- Group "Bier Halbe" → Only show in table group "Indoor"
- Group "Bier Maß" → Only show in table group "Beer Garden"
Complete Order Flow¶
Kellner Maria bestellt an Tisch 105 (Biergarten):
2× Helles Maß 1,0l (PLU 1)
1× Schweinshaxe
1× Obatzda
DiKAS verarbeitet:
1. Helles Maß → Schankanlage:
→ Tisch 105 = Biergarten → Garten-Zapfhahn
→ PLU 1, Kellner 3 (Maria), Tisch 5 (Schank-Tischnr.), Menge 2
→ Garten-Zapfhahn zapft automatisch 2× Helles
2. Schweinshaxe → Druckoption:
→ Tisch 105 = Biergarten, Gruppe „Grillgerichte"
→ Bereichsabhängig → Grilldrucker
→ ExtraBon geht an Grilldrucker
3. Obatzda → Druckoption:
→ Tisch 105 = Biergarten, Gruppe „Vorspeisen"
→ Kein bereichsabhängiger Override → Standard: Küchendrucker
→ Sammelbon geht an Küchendrucker
Ergebnis: 3 automatische Aktionen — kein manuelles Eingreifen nötig.
10. Practical Example: Large Restaurant with 3 Kitchen Stations¶
Business Description¶
- Upscale restaurant with 80 seats
- 3 kitchen stations: Hot kitchen, cold kitchen (salads/carpaccio), pastry
- Course control: 3–5-course menus with sequential preparation
- Bar with its own printer
- Kitchen display (KDS) complementing the printers
Hardware¶
| Device | Location | IP |
|---|---|---|
| POS Printer | Register | 192.168.1.50 |
| Hot Kitchen Printer | Station 1 | 192.168.1.51 |
| Cold Kitchen Printer | Station 2 | 192.168.1.52 |
| Pastry Printer | Station 3 | 192.168.1.53 |
| Bar Printer | Bar | 192.168.1.54 |
| Kitchen Display | Kitchen TV | Browser Client |
Group Structure and Printer Assignment¶
100 Speisen
├── 10001 Vorspeisen warm (→ Drucker Warme Küche)
├── 10002 Vorspeisen kalt (→ Drucker Kalte Küche)
├── 10003 Suppen (→ Drucker Warme Küche)
├── 10004 Hauptgerichte (→ Drucker Warme Küche)
│ └── 100040001 Fisch (→ Drucker Warme Küche + ExtraBon 2 → Kalte Küche)
├── 10005 Salate (→ Drucker Kalte Küche)
└── 10006 Desserts (→ Drucker Patisserie)
200 Getränke (→ Drucker Bar)
300 Cocktails (→ Drucker Bar)
Special case fish dishes: For certain fish dishes, the side (salad) comes from the cold kitchen. Therefore, the subgroup "Fish" has two station ticket printers: Station Ticket 1 → Hot Kitchen (fish), Station Ticket 2 → Cold Kitchen (side).
Course Control in Detail¶
Flow of a 4-course menu:
Gang 1: Gast bestellt
→ Amuse-Bouche (Küche bereitet sofort zu)
→ Drucker Warme Küche druckt Gang 1
Gang 2: Kellner drückt „Nächster Gang"
→ Vorspeise: Carpaccio → Kalte Küche
→ Vorspeise: Bouillon → Warme Küche
→ Beide Stationen erhalten Gang-Bon mit „GANG 2"
Gang 3: Kellner drückt „Nächster Gang"
→ Hauptgericht: Rinderfilet → Warme Küche
→ Gang-Bon auf Drucker Warme Küche: „GANG 3"
Gang 4: Kellner drückt „Nächster Gang"
→ Dessert: Crème Brûlée → Patisserie
→ Gang-Bon auf Drucker Patisserie: „GANG 4"
Configuration for course tickets:
On the station ticket printer, the field "Course Ticket" must be enabled. Then this printer automatically receives a course ticket when the waiter changes the course.
| Group | Station Ticket 1 Printer | Course Ticket |
|---|---|---|
| Hot Appetizers | Hot Kitchen Printer | Yes |
| Cold Appetizers | Cold Kitchen Printer | Yes |
| Main Courses | Hot Kitchen Printer | Yes |
| Desserts | Pastry Printer | Yes |
| Beverages | Bar Printer | No |
Beverages without course ticket: The bar printer does not get a course ticket because beverages are served independently of the course sequence.
Consolidated Order Ticket for the Expeditor¶
The head chef (expeditor) coordinates the stations. They receive a consolidated order ticket with all orders:
══════════════════════════════
SAMMELBON Tisch 5
──────────────────────────────
Gang 1:
2× Bouillon WARME KÜCHE
2× Carpaccio KALTE KÜCHE
Gang 2:
1× Rinderfilet WARME KÜCHE
1× Dorade WARME KÜCHE
Gang 3:
2× Crème Brûlée PATISSERIE
──────────────────────────────
Kellner: Thomas 19:30
══════════════════════════════
Configuration: In addition to the station ticket at each station, the default printer (register/expeditor) receives a consolidated order ticket with all items.
11. Frequently Asked Questions (FAQ)¶
Articles and Groups¶
Can an article be in multiple groups at the same time? No, an article always belongs to exactly one group. However, you can offer the same article in other groups via cross-sell articles.
What happens when I delete an article group? Groups can only be deleted when no articles are assigned. Move all articles to another group first.
Can I change article prices retroactively? Yes, but the change only applies to new orders. Already booked receipts keep the old price. Price changes are documented in the article change log (the last 100 changes).
Printer Control¶
What happens when a printer fails? DiKAS tries 5 times with a 5-second pause to print the ticket. If a backup printer is configured, it is used automatically. The order is saved in any case — a print error never blocks the booking.
Can I change printer settings spontaneously? Yes, changes take effect immediately on the next order. You can also set up a temporary printer redirect when a printer is being serviced.
How do I test a new printer? Via Admin → Settings → Printers → "Test Print" you can send a test ticket to any configured printer.
Price Rules¶
What happens with overlapping rules? Article rules take precedence over group rules. Within the same level, the first matching rule is applied.
Can I change prices for specific customers? Yes, via customer groups in the price rules. Create a customer group "Regular Customers" and define a rule with 10% discount for this group.
Draught Systems¶
Is the beer also tapped when the system is offline? No, the system must be reachable. But the order is saved regardless — the waiter then has to tap manually.
Can I see what was sent to the system? Yes, via the debug view of the draught system (Admin → Settings → Draught Systems → Debug). There you can see all sent and received data packets.
Why does my beer article have both a printer and a draught system? The printer prints a ticket as order confirmation (e.g. for the bar staff). The draught system physically taps the beer. Both can run in parallel. When the system taps automatically, you often no longer need a separate bar printer.
Next Step¶
→ Articles, Printers & Rules — Quick Start — The compact version for quick onboarding
→ Kitchen Printer & Kitchen Display — Course control and kitchen display
→ Settings — All configuration options in the admin area