====== Beleg-Routing-Regeln ====== Normalerweise druckt BonDroid **alle Belege** (Rechnungen) auf dem **Belegdrucker** aus der Konfiguration. Mit **Beleg-Routing-Regeln** legst du fest, dass bestimmte Belege woanders gedruckt werden. Typische Einsätze: * **Kartenzahlungen** an der Kassa drucken, wo auch das Kartenterminal steht. * **Je Bereich** einen eigenen Belegdrucker — z. B. Belege aus dem Garten an Schank 2. * **Nachdrucke** aus der Verwaltung immer im Büro drucken. ^ Schritt ^ Was? ^ | **[[#so_entscheidet_bondroid|1. Verstehen]]** | wie BonDroid den Drucker für einen Beleg auswählt | | **[[#regel_anlegen|2. Anlegen]]** | Menü **Stammdaten → Drucker-Administration → Beleg-Routingregeln** | | **[[#beispiele|3. Vorlage wählen]]** | passendes Beispiel kopieren und Namen anpassen | | **[[#testen_und_fehlersuche|4. Testen]]** | einen Testbeleg erstellen und prüfen, wo er herauskommt |
---- ===== So entscheidet BonDroid ===== {{:routing_beleg_ablauf.png?direct&800|}} Für **jeden Beleg** — beim Bezahlen, bei Storno, Nullbeleg und Nachdruck — geht BonDroid so vor: - **Standard aus der Konfiguration** (Stammdaten → Einstellungen → Konfigurationen): * ''bill_printer'' — der Belegdrucker * ''bill_backup_printer'' — der Beleg-Ersatzdrucker - **Drucker-Benutzer-Zuordnung** (Stammdaten → Drucker-Administration → Drucker-Benutzer-Zuordnungen): Hat der Kellner, der kassiert hat, einen eigenen Drucker, kommt sein Beleg dort heraus. Ersatzdrucker ist dann der normale Belegdrucker. - **Beleg-Routingregeln:** Alle Regeln mit Häkchen **Aktiv** werden **von oben nach unten** geprüft. Die **erste** Regel, die einen gültigen Drucker setzt, gewinnt — die Regeln darunter werden nicht mehr geprüft. - **Keine Regel passt:** Es bleibt beim Drucker aus Schritt 1 bzw. 2. Ist der gewählte Drucker nicht erreichbar (z. B. ausgeschaltet oder kein Netzwerk), wechselt BonDroid nach ca. **11 Sekunden** auf den Ersatzdrucker. Fehlt nur das Papier, gibt es **keinen** Wechsel — der Drucker sammelt die Belege und druckt sie, sobald wieder Papier drinnen ist. ---- ===== Regel anlegen ===== - In der BonDroid Verwaltung **Stammdaten → Drucker-Administration → Beleg-Routingregeln** öffnen. - Rechts oben **Beleg-Routingregel hinzufügen** anklicken. - Formular ausfüllen und **Sichern**. \\ {{:routing_admin_beleg_neu.png?direct&800|}} ^ Nr. ^ Feld ^ Bedeutung ^ | **1** | Name | Frei wählbar, damit du die Regel wiederfindest (max. 25 Zeichen, jeder Name nur einmal). | | **2** | Aktiv | Nur aktive Regeln werden ausgeführt. Häkchen entfernen = Regel vorübergehend ausschalten. | | **3** | Rule | Der Regel-Code (siehe [[#verfuegbare_angaben|Verfügbare Angaben]] und [[#beispiele|Beispiele]]). | | **4** | Sichern | Speichert die Regel. Sie gilt ab dem nächsten Beleg. | Die **Reihenfolge** änderst du in der Liste der Beleg-Routingregeln mit den Pfeilen in der Spalte **Anordnen** — die oberste Regel wird zuerst geprüft. Die Liste funktioniert genauso wie bei den [[bon_routing_regeln#reihenfolge_und_uebersicht|Bon-Routing-Regeln]]. ==== Aufbau einer Regel ====
if BEDINGUNG:
printer_name = 'Druckername'
backup_printer_name = 'Ersatzdruckername'
* **printer_name** — auf welchem Drucker der Beleg gedruckt wird (Name aus der Druckerliste).
* **backup_printer_name** — welcher Drucker einspringt, wenn dieser nicht druckt. Optional.
* Die Zeilen unter dem ''if'' sind **eingerückt** (4 Leerzeichen), das ''if'' endet mit einem **Doppelpunkt**.
* Texte mit **ä, ö, ü, ß** brauchen ein ''u'' davor: ''%%u'Überweisung'%%''.
Mehr zu Schreibweisen (''=='', ''in'', ''and'' …) findest du unter [[bon_routing_regeln#kleine_bedingungs-kunde|Kleine Bedingungs-Kunde]].
----
===== Verfügbare Angaben =====
==== Der Beleg: bill ====
^ Angabe ^ Bedeutung ^ Beispielwert ^
| ''bill.total'' | Summe brutto in Euro | ''42.50'' |
| ''bill.total_nv'' | Summe netto in Euro | ''36.80'' |
| ''bill.total_vat'' | darin enthaltene Umsatzsteuer in Euro | ''5.70'' |
| ''bill.tip_amount'' | Trinkgeld in Euro | ''2.50'' |
| ''bill.payment_method'' | Zahlungsart, siehe unten | ''%%'Bankomat'%%'' |
| ''bill.bill_time'' | Zeitpunkt des Belegs — ''.hour'' = Stunde | ''bill.bill_time.hour'' → ''21'' |
| ''bill.bill_user_id'' | ID des Kellners, der kassiert hat (Zahl) | ''21'' |
| ''bill.bill_user_name'' | Benutzername des Kellners, der kassiert hat | ''%%'Anna'%%'' |
| ''bill.site_name'' | Name des Bereichs | ''%%'Garten'%%'' |
| ''bill.table_name'' | Name bzw. Nummer des Tisches | ''%%'05'%%'' |
| ''bill.is_storno'' | ''True'' bei einem Storno-Beleg | ''False'' |
**Zahlungsarten** (''bill.payment_method''), wie die App sie sendet: ''%%'Bar'%%'', ''%%'Bankomat'%%'', ''%%'Kreditkarte'%%'', ''%%u'Überweisung'%%'', ''%%'Gutschein'%%'', ''%%'GP tom'%%'' (siehe [[GP tom einrichten]]).
==== Der Druckauftrag: bill_queue_entry ====
^ Angabe ^ Bedeutung ^ Beispielwert ^
| ''bill_queue_entry.from_gui'' | ''True'', wenn der Beleg in der **Verwaltung** über die Belegliste nachgedruckt wurde; ''False'' bei allen anderen Belegen (auch Nachdrucken aus der App) | ''False'' |
| ''bill_queue_entry.request_user_name'' | Benutzername dessen, der den Druck ausgelöst hat | ''%%'Anna'%%'' |
| ''bill_queue_entry.request_user_id'' | ID dessen, der den Druck ausgelöst hat (Zahl) | ''21'' |
| ''bill_queue_entry.queue_time'' | Zeitpunkt des Druckauftrags | |
==== Der Standarddrucker: main_printer ====
^ Angabe ^ Bedeutung ^ Beispielwert ^
| ''main_printer'' | **CUPS-Druckername** des Druckers aus Schritt 1 bzw. 2 — also wo ohne Regel gedruckt würde | ''%%'schank1'%%'' |
----
===== Beispiele =====
Alle Druckernamen in den Beispielen (''Kassa'', ''Schank 1'' …) musst du durch die Namen **deiner** Drucker ersetzen.
==== Kartenzahlungen an der Kassa drucken ====
Belege, die mit Bankomat-, Kredit- oder GP-tom-Karte bezahlt wurden, kommen an der Kassa heraus.
if bill.payment_method in ['Bankomat', 'Kreditkarte', 'GP tom']:
printer_name = 'Kassa'
backup_printer_name = 'Schank 1'
==== Belegdrucker je Bereich ====
Belege von Tischen im Garten werden an Schank 2 gedruckt, alle anderen bleiben beim Standard.
if bill.site_name == 'Garten':
printer_name = 'Schank 2'
backup_printer_name = 'Schank 1'
==== Nachdrucke aus der Verwaltung ins Büro ====
Wer in der Verwaltung einen Beleg nachdruckt, sitzt meist im Büro — der Nachdruck soll dort herauskommen und nicht an der Schank.
if bill_queue_entry.from_gui:
printer_name = 'Buero'
==== Kleine Belege nicht drucken ====
Belege bis 30 Euro werden auf den virtuellen Drucker „Nirvana“ umgeleitet (Drucker mit Häkchen **Virtuell**, siehe [[bon_routing_regeln#druckernamen|Druckernamen]]) und damit nicht ausgedruckt. Ein Nachdruck aus der Verwaltung wird trotzdem gedruckt.
if bill.total <= 30 and not bill_queue_entry.from_gui:
printer_name = 'Nirvana'
Den zuletzt „gedruckten“ Beleg siehst du in der Verwaltung unter **Drucker → Virtuelle Drucker**. Prüfe vorher, ob das zu deiner Belegerteilungspflicht passt.
----
===== Testen und Fehlersuche =====
Es gibt **keinen Testknopf** und **keine Fehlermeldung** beim Speichern. Eine Regel mit Tippfehler wird einfach **übersprungen** — der Beleg kommt dann aus dem Standarddrucker. Erstelle deshalb nach jeder Änderung einen **Testbeleg**, der die Regel treffen sollte, und prüfe, wo er herauskommt.
^ Problem ^ Mögliche Ursache ^
| Keine Regel wirkt | In der Konfiguration steht ''bill_printer'' = ''virtual'' — dann laufen keine Beleg-Routingregeln |
| Eine Regel wirkt nicht | Häkchen **Aktiv** fehlt · Druckername falsch (in Regeln den **Namen**, nicht den CUPS-Namen) · Einrückung oder Doppelpunkt fehlt · Umlaut ohne ''u'' davor |
| Regel wirkt nur manchmal | Eine **weiter oben** stehende Regel greift zuerst — Reihenfolge prüfen |
| Kellner-Belege kommen woanders heraus als erwartet | Eine **Drucker-Benutzer-Zuordnung** ist aktiv — Regeln werden erst danach geprüft und haben das letzte Wort |
| Beleg kommt aus dem Ersatzdrucker | Der Drucker ist nicht erreichbar (Strom, Netzwerk) — BonDroid ist nach ca. 11 Sekunden ausgewichen |
Kommst du nicht weiter, schick uns den Regel-Code — wir schauen ihn uns gerne an.