Zur Startseite Live-Demo

Selbstbedienung und Online-Bestellung (Self-Order & Pickup)

Wozu dient das?#

Das Selbstbedienungsmodul ermöglicht es Gästen, Speisen und Getränke eigenständig zu bestellen. Dies erfolgt entweder direkt am Tisch durch Scannen eines QR-Codes mit dem eigenen Smartphone (Self-Order / QR-Ordering) oder vorab von zu Hause über die Online-Abholseite (Online Pickup Ordering). Eingehende Bestellungen fließen ohne Kellner-Zwischenschritt direkt in die Küche und werden auf Abhol-Monitoren angezeigt.

Rollen#

  • Gast: Scannt am Tisch den QR-Code oder ruft die Abholseite auf, wählt Produkte, Varianten und optional den Sitzplatz aus und sendet die Bestellung ab.
  • Servicepersonal / Kellner: Greift bei Fehleingaben des Gastes am POS-Terminal ein (z. B. Umbuchung, Stornierung, Nachbestellung) und kassiert die Rechnungsbeträge vor Ort ab.
  • Restaurant-Administrator: Generiert im Backoffice Tisch-QR-Codes, erstellt Online-Storefront-Tokens und definiert die zulässigen Bestell-Öffnungszeiten.

Voraussetzungen#

  • Für Tisch-QR-Ordering: Generierte und am Tisch angebrachte QR-Codes mit gültigem Tisch-Token (qr_token) aus dem Backoffice (→ Kapitel 21c).
  • Für Online-Abholung: Ein vom Administrator erstelltes Online-Storefront-Token (OnlineOrderToken) sowie eingerichtete Öffnungszeiten (OpeningHour).
  • Ein aktiver Kassenbetrieb und betriebsbereite Küchenmonitore (KDS) oder Bondrucker (→ Kapitel 15 & 22).

Bildschirm für Bildschirm#

Die Kasse liefert für dieses Kapitel keine eigene Bedienoberfläche: Es gibt in diesem Frontend weder eine Gast-Seite zum Bestellen am Tisch noch einen Kunden-Abholmonitor noch einen Online-Abholshop, und im Backoffice keine Masken für Storefront-Tokens oder Öffnungszeiten. Das Modul liegt als Schnittstelle der Plattform vor (→ Kapitel 37): Speisekarte (/public/menu), Bestellung, Kunden-Abholanzeige (/public/display-board) und Online-Bestellung. Eine Gast-Seite dafür bringt Ihr Betreuer oder der Anbieter einer Bestell-App mit.

Was die Kasse in diesem Zusammenhang selbst zeigt:

  • Tisch-QR-Codes erzeugen und drucken Sie im Backoffice unter QR-CODES (→ Kapitel 21c).
  • Die Bezahlseite für Gäste am Smartphone (Rechnung bezahlen mit Trinkgeld) beschreibt Kapitel 14d.
  • Eine Bestellung des Gastes erscheint am Terminal wie jede andere (→ Kapitel 13) und in der Küche (→ Kapitel 15). Die Bedienung am Terminal ist unverändert.

Schritt für Schritt#

Teil A: Tisch-Ordering per QR-Code (Gast-Ablauf)#

1. QR-Code am Tisch scannen und Sitzplatz wählen#

  1. Der Gast scannt den QR-Code am Tisch mit der Smartphone-Kamera.
  2. Die Selbstbedienungsseite öffnet sich im Browser. Das System erkennt automatisch Tisch und Standort.
  3. Bei Gruppen-Tischen kann der Gast optional seine Sitzplatznummer eingeben (z. B. Sitzplatz 2).

2. Speisen auswählen und Bestellung absenden#

  1. Der Gast wählt Gerichte, Varianten (z. B. groß) und Extras aus.
  2. Der Gast öffnet den Warenkorb, prüft die Zusammenstellung und sendet die Bestellung ab (in der Gast-Seite des Anbieters, nicht in der Kasse).
  3. Das System prüft die Gültigkeit des Tokens und legt die Bestellung mit der Quelle order_source = "self_order" an.
  4. Die Bestellung wechselt automatisch in den Status gesendet (SENT) und erscheint ohne Kellner-Freigabe direkt auf dem KDS in der Küche.

3. Status auf dem Kunden-Display verfolgen#

  1. Die Tages-Bestellnummer des Gastes (z. B. Nr. 08) erscheint auf dem Abholmonitor unter In Zubereitung.
  2. Sobald die Küche die Speisen fertigstellt, rückt die Nummer auf Abholbereit vor.
  3. Der Gast holt seine Bestellung an der Ausgabetheke ab oder bekommt sie vom Service an den Tisch serviert.

Teil B: Online-Abholbestellung (Home Pickup Ablauf)#

1. Speisekarte aufrufen und Öffnungszeiten prüfen#

  1. Der Kunde ruft den Online-Shop des Restaurants auf.
  2. Das System prüft das Storefront-Token und die hinterlegten Öffnungszeiten (OpeningHour).

2. Abholbestellung aufgeben#

  1. Der Kunde stellt seine Speisen zusammen und gibt Name sowie Telefonnummer ein.
  2. Das Backend führt eine Echtzeit-Bestandsprüfung mit Datenbank-Sperre durch (with_for_update) und zieht die Zutaten ab.
  3. Die Bestellung wird mit order_source = "online" erfasst und der Küche übermittelt.

Teil C: Personal-Intervention am POS-Terminal#

1. Kellner-Eingriff bei Gast-Fehlbestellungen#

  1. Vertippt sich ein Gast beim QR-Ordering (z. B. falsches Gericht bestellt) oder möchte den Tisch wechseln, öffnet die Servicekraft den Tisch am POS-Terminal.
  2. Self-Order-Bons sind am POS als solche gekennzeichnet. Die Servicekraft kann Positionen stornieren (Bestellung stornieren), Artikel umbuchen oder zusätzliche Artikel manuell ergänzen (→ Kapitel 13).

2. Abrechnung und Bezahlung#

  1. Haben die Gäste nicht online vorab bezahlt, schließt das Servicepersonal die Bestellung am Tisch oder an der Kasse mit der gewünschten Zahlungsart (Bar, Karte, Gutschein) ab (→ Kapitel 14).

TODO: unverified — Eine direkte Online-Kreditkartenzahlung im Smartphone-Browser des Gastes während des QR-Ordering-Vorgangs erfordert die Integration eines externen Zahlungsdienstleisters (Payment Gateway), die im Grundsystem vorbereitet, aber projektspezifisch zu konfigurieren ist.

Was passiert im Hintergrund#

Bei Selbstbedienungs-Bestellungen authentifiziert das System Anfragen über kryptografische Tisch-Tokens (Table.qr_token) oder Storefront-Tokens (OnlineOrderToken). QR-Bestellungen überspringen den Entwurfsmodus (draft) und schalten direkt auf SENT. Zur Vermeidung von Missbrauch gilt ein automatisches Schutz-Limit (Rate Limiting): Pro Tisch bzw. Client-IP sind maximal 3 gleichzeitig aktive, unbezahlte Bestellungen erlaubt (429 Too Many Requests). Die Anzeige auf dem Kundendisplay verwendet tagesbezogene fortlaufende Nummern (display_number), die jede Nacht um 00:00 Uhr zurückgesetzt werden und rechtlich strikt von den gap-freien TSE-Abschlussnummern getrennt sind.

Häufige Probleme#

1. Table not found / Token not found#

  • Ursache: Der gescannte QR-Code enthält ein ungültiges oder abgelaufenes Tisch-Token, zum Beispiel nach einer Neu-Generierung im Backoffice.
  • Lösung: Drucken Sie im Backoffice unter QR-CODES die aktuellen QR-Code-Blätter neu aus und ersetzen Sie den Aufkleber am Tisch (→ Kapitel 21c).

2. Too many active orders for this table / Too many active orders#

  • Ursache: Es liegen bereits 3 offene, unbezahlte Bestellungen für diesen Tisch oder diese IP-Adresse vor. Das System blockiert weitere Bestellungen zum Schutz vor Missbrauch.
  • Lösung: Kassieren oder schließen Sie die offenen Alt-Bestellungen des Tisches am POS-Terminal ab (→ Kapitel 14).

3. Seat {seat} is not valid for this table (1-{table.capacity})#

  • Ursache: Der Gast hat beim QR-Ordering eine Sitzplatznummer eingegeben, die höher ist als die im Backoffice eingetragene Kapazität des Tisches.
  • Lösung: Korrigieren Sie im Backoffice unter RAUMPLAN-EDITOR die Sitzplatz-Kapazität des Tisches (→ Kapitel 21b).

4. No open order found for this table / No open bill found for this table#

  • Ursache: Der Service hat versucht, eine Zuzahlung oder Stornierung für einen Tisch aufzurufen, auf dem aktuell keine aktive Bestellung existiert.
  • Lösung: Prüfen Sie am POS-Terminal, ob der Tisch korrekt ausgewählt wurde.

5. Cart is empty / Cannot send an empty order#

  • Ursache: Der Gast hat die Bestellung abgesendet, ohne dass sich Artikel im digitalen Warenkorb befanden.
  • Lösung: Wählen Sie mindestens einen Artikel aus der digitalen Speisekarte aus.

6. Restaurant is closed#

  • Ursache: Eine Online-Abholbestellung wird außerhalb der im Backoffice hinterlegten Öffnungszeiten (OpeningHour) aufgerufen.
  • Lösung: Die Öffnungszeiten für Online-Bestellungen haben keine Maske in der Kasse; sie lassen sich über die Schnittstelle prüfen (→ Kapitel 37).

7. Product {product.name} is currently unavailable / Product not found in your catalog#

  • Ursache: Ein im digitalen Menü angezeigter Artikel wurde im Backoffice als ausverkauft markiert oder aus dem Sortiment gelöscht.
  • Lösung: Aktualisieren Sie die Produktverfügbarkeit im Backoffice unter MENÜ-EDITOR (→ Kapitel 21).

8. Forged tip_cents does not match requested preset percentage / amount_cents must cover tip_cents#

  • Ursache: Bei einer Online-Zahlung stimmte der übermittelte Trinkgeldbetrag rechnerisch nicht mit der gewählten Prozentstufe überein oder war negativ.
  • Lösung: Wiederholen Sie den Bezahlvorgang mit einer Standard-Trinkgeldstufe.

Grenzen#

  • Selbstbedienungs-Bestellungen durchlaufen keine Kellner-Freigabe, sondern gehen direkt in die Küche. Stornierungen von Gast-Fehlbestellungen müssen vom Personal am POS durchgeführt werden.
  • Die Eingabe von Sitzplatznummern (seat_number) dient der Zuordnung auf dem Bon, begründet aber noch keine automatische Rechnungsaufteilung pro Gast beim Bezahlen.
  • Ein öffentliches Kundendisplay zeigt aus Datenschutzgründen ausschließlich Bestellnummern und niemals Gastnamen oder Bestellinhalte an.

Dieses Kapitel gehört zum Merkuron-Handbuch für Inhaber und Servicepersonal.