====== 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 |

💡 Gut zu wissen

---- ===== 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.

⚠ Zwei verschiedene Druckernamen

---- ===== 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.