Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
bon_routing_regeln [2024/06/15 15:33] bondroid |
bon_routing_regeln [2024/11/13 17:40] (aktuell) bondroid |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | round robin | + | Standardmäßig werden Produkte auf dem Drucker der jeweiligen Produktgruppe gedruckt. |
+ | Um dieses Verhalten zu überschreiben können Routing-Regeln verwendet werden. | ||
+ | Bei Routing-Regeln handelt es sich um Python-Code. Dieser Programm-Code wird für jede Position einer Bestellung ausgeführt. Werden im Code die Variablen printer_name und backup_printer_name gesetzt, wird der Drucker für dieses Produkt geändert. Der Wert der Variable printer_name muss einem logischen Druckernamen (Stammdaten->Druckerverwaltung->Drucker) entsprechen. | ||
- | if pos.product_group_id in [1, ]: | + | ==== verfügbare Variable ==== |
- | if pos.order.order_time.second % 2 == 0: | + | === OrderPos Objekt === |
- | printer_name = 'Schank 1' | + | pos.product_id Produkt ID (int) |
- | backup_printer_name = 'Schank 2' | + | pos.product_name Produkt Name (string) |
- | else: | + | pos.count Anzahl (int) |
- | printer_name = 'Schank 2' | + | pos.product_group_id Produktgruppen ID (int) |
- | backup_printer_name = 'Schank 1' | + | pos.product_group_name Produktgruppen Name (string) |
+ | |||
+ | === OrderPos Objekt === | ||
+ | pos.order.order_time Bestellzeit (datetime.datetime) | ||
+ | pos.order.user_id Benutzer ID des Bestellers (int) | ||
+ | pos.order.user_name Benutzer Name des Bestellers (string) | ||
+ | pos.order.site_id Bereichs ID (int) | ||
+ | pos.order.site_name Bereichs Name (string) | ||
+ | pos.order.table_id Tisch ID (int) | ||
+ | pos.order.table_name Tisch Name (string) | ||
+ | |||
+ | |||
+ | ==== Beispiele ==== | ||
+ | === Round Robin by order_time === | ||
+ | Hier werden Produkte der Produktgruppe Getränke (produt_group_id = 1) abhängig von der Bestellsekunde auf den Druckern "Schank 1" oder "Schank 2" gedruckt. | ||
+ | |||
+ | if pos.product_group_id in [1, ]: | ||
+ | if pos.order.order_time.second % 2 == 0: | ||
+ | printer_name = 'Schank 1' | ||
+ | backup_printer_name = 'Schank 2' | ||
+ | else: | ||
+ | printer_name = 'Schank 2' | ||
+ | backup_printer_name = 'Schank 1' | ||
+ | |||
+ | === Drucker pro Bereich === | ||
+ | Hier werden Produkte der Produktgruppe Getränke (produt_group_id = 1) abhängig vom Bereich auf den Druckern "Schank 1" oder "Schank 2" gedruckt. | ||
+ | |||
+ | if pos.product_group_id in [1, ]: | ||
+ | if pos.order.site_name == "Halle" or pos.order.site_name == "Zelt": | ||
+ | printer_name = 'Schank 1' | ||
+ | backup_printer_name = 'Schank 2' | ||
+ | else: | ||
+ | printer_name = 'Schank 2' | ||
+ | backup_printer_name = 'Schank 1' | ||
+ | |||
+ | === Drucker für ein bestimmtes Produkt ändern (id match) === | ||
+ | Wenn die Produkt-ID 22 oder 23 ist, sollen diese Produkte auf dem Drucker "Bier" gedruckt werden. | ||
+ | |||
+ | if pos.product_id in [22, 23]: | ||
+ | printer_name = 'Bier' | ||
+ | backup_printer_name = 'Schank 1' | ||
+ | |||
+ | === Drucker für ein bestimmtes Produkt ändern (string match) === | ||
+ | Wenn der Sting Waffel im Namen des Produkts enthalten ist, wird der Drucker auf Waffeln geändert. | ||
+ | |||
+ | if 'Waffel' in pos.product_name: | ||
+ | printer_name = 'Waffeln' | ||
+ | backup_printer_name = 'Kueche' |