Zum Inhalt springen

Dokumentation

Einrichtung

Pro Contao-Installation gibt es genau einen Shop. Der Datensatz wird beim ersten Aufruf angelegt, der Name kommt aus dem ersten Startpunkt.

Voraussetzungen

  • PHP ^8.3

  • Contao ^5.7 (Managed Edition)

  • terminal42/notification_center ^2.0

  • Funktionierender Contao-Cron (siehe Cron)

  • Richtige Zeitzone (siehe Fehlerbehebung): date.timezone in der php.ini oder in der config/config.yaml:

    contao:
        localconfig:
            timeZone: Europe/Berlin
    

1. Konfiguration

GratOrder-Konfiguration im Backend

Backend → GratOrder → Konfiguration

Bereich Felder
Shop Name, Logo (Terminal, Gast-Mails ##shop_logo_url##, Ersatz für das App-Symbol), Telefon (Hinweis bei Großbestellungen, ##shop_phone##), E-Mail-Adresse (Empfänger der Restaurant-Mails, ##shop_email##)
Bestellung Bestellarten, Mindestbestellwert für Lieferung, Mindestvorlauf (früheste Zeit ab jetzt), letzte Abhol-/Lieferzeit vor Schluss (Standard 15 Min.), Zeitraster (5–30 Min.), Vorbestellung in Tagen (0 = nur heute), Format der Bestellnummer
Überlastungsschutz Küchenlast je Zeitfenster (0 = kein Limit)
Bezahlung Zahlungsarten je Bestellart (nur bar, nur online, bar oder online), SumUp Merchant Code und API-Key (siehe Online-Zahlung)
Bestellterminal Bestellungen müssen angenommen werden, Zeitlimit für die Annahme, Zubereitungszeiten zur Auswahl (z. B. 10,15,20,30,45)
Öffnungszeiten Ein Eintrag je Zeitfenster, Tage ohne Eintrag sind geschlossen
Preise und Steuern Währung, ermäßigter und regulärer Steuersatz
E-Mails Benachrichtigung für eingegangen, angenommen, abgelehnt
Design Layout, Primärfarbe, Schrift auf Primärfarbe, Ecken, GratOrder-Badge (Hinweis mit Link auf gratorder.de: Desktop schwebend unten rechts, mobil am Seitenende)
Bondrucker Druckertyp, IP-Adresse/Host, Port, Papierbreite, Anzahl Bons (siehe Bondrucker)
Web-App installierbar ja/nein, App-Name, Startseite, App-Symbol (siehe Web-App)
Status Bestellungen pausieren; Demo-Modus (rund um die Uhr bestellbar, Öffnungszeiten und Terminal-Status werden ignoriert – nur für Demo- und Testshops)
Lizenz Lizenzschlüssel aus der Lizenzmail, Status der Lizenz, installierte und neueste Version (siehe Lizenz)

Format der Bestellnummer – Platzhalter: {Y} Jahr (2026), {y} Jahr (26), {m} Monat, {d} Tag, {n} laufende Nummer, {n:3} mit führenden Nullen. Die Nummer beginnt neu mit der kleinsten Datumseinheit im Format (täglich bei {d}, monatlich bei {m}, jährlich bei {Y}/{y}, sonst nie). {n} ist Pflicht; ein leeres Feld ergibt den Standard {m}{d}-{n:3}.

Format Beispiel
{m}{d}-{n:3} (Standard) 1020-004
LF-{n} LF-1234
{y}{m}-{n:4} 2610-0042

Mit Annahme über das Terminal: Ist während der Öffnungszeit seit zwei Minuten kein Terminal online, nimmt der Shop keine Bestellungen an.

2. Speisekarte

Produkte einer Kategorie im Backend

Unter GratOrder:

  1. Größen anlegen (z. B. Klein 26 cm, Groß 33 cm, 0,33 l), optional mit Vorauswahl
  2. Allergene prüfen, Zusatzstoffe ergänzen
  3. Optionsgruppen mit ihren Optionen anlegen (z. B. „Pizza-Beläge“ als Extras, max. 6, je Option max. 2×; „Dressing“ als Auswahl)
  4. Speisekarte: Kategorien mit Küchenlast anlegen, darin die Produkte; Preise je Größe, Optionsgruppen, abwählbare Zutaten, Allergene und Zusatzstoffe zuordnen

Für eine Pizza nach Wahl ein Produkt vom Typ „Selbst zusammenstellen“ anlegen und die Belag-Optionsgruppe zuweisen.

3. Seiten und Frontend-Module

Drei Frontend-Module (Kategorie GratOrder) anlegen und auf je einer Seite einbinden:

Modul Typ Einstellungen
Bestellshop gratorder_shop Weiterleitungsseite: Checkout-Seite
Checkout gratorder_checkout Weiterleitungsseite: Bestätigungsseite; Seite der Speisekarte (Link „Zurück zur Speisekarte“); Datenschutzseite (optional, dann Hinweis mit Link über dem Bestellbutton)
Bestellbestätigung gratorder_confirmation –
Web-App-Hinweis (optional) gratorder_webapp – (z. B. im Layout im Footer oder auf der Startseite einbinden)

Checkout- und Bestätigungsseite sollten nicht in der Navigation erscheinen.

4. Benutzer

  • Restaurant (Speisekarte pflegen, Bestellungen ansehen): Benutzer anlegen und der Gruppe „GratOrder“ zuweisen
  • Tablet: eigener Benutzer in der Gruppe „GratOrder-Terminal“. Benutzer ohne weitere Backend-Module landen nach dem Login direkt im Terminal.

Das Recht für das Terminal steht in Benutzer bzw. Benutzergruppe unter GratOrder-Rechte → Bestellterminal nutzen. Administratoren haben immer Zugriff.

5. Cron

Der Contao-Cron muss jede Minute laufen: beim Hoster einen Cronjob anlegen, der minütlich https://<domain>/_contao/cron aufruft (oder vendor/bin/contao-console contao:cron). Der Web-Cron allein läuft nur, wenn Besucher die Seite aufrufen. Wann der Cron zuletzt gelaufen ist, zeigt die GratOrder-Konfiguration unter Status; nach über 5 Minuten erscheint dort eine Warnung.

Status des Contao-Crons in der Konfiguration

Der Job ExpireOrdersCron läuft minütlich und

  • lehnt Bestellungen ab, deren Annahmefrist abgelaufen ist (Gast bekommt die Ablehnungs-Mail),
  • setzt angenommene und abholbereite Bestellungen der Vortage auf Erledigt (ohne Mail),
  • setzt Online-Zahlungen, die nach 30 Minuten nicht abgeschlossen sind, auf Nicht bezahlt.

Abgelaufene Bestellungen werden zusätzlich beim Abruf von Terminal, Bestätigungs- und Statusseite abgelehnt. Ohne Cron bleibt eine Bestellung, bei der keine dieser Seiten offen ist, auf „Wartet auf Annahme“, und der Gast erfährt nichts.