Kassenbons mit TakePOS drucken
Die drei Wege, wie TakePOS in Dolibarr 24 einen Kassenbon druckt, getestet mit einem simulierten ESC/POS-Drucker: Einstellungen, Bonvorlage und Platzhalter, automatischer Druck, Kassenschublade und die Fehler, die den Bon leer oder abgeschnitten lassen.
TakePOS, die Kasse von Dolibarr, kann einen Bon auf drei Arten drucken. Welche verwendet wird, hängt nicht nur von dem ab, was Sie am Bildschirm einstellen: In Dolibarr 24 reicht es nicht, einen Bondrucker für die Kasse auszuwählen, damit er auch benutzt wird. Das erklärt viele Fragen der Art „mein Drucker druckt nichts“.
Diese Anleitung entstand am 14. Oktober 2026 mit Dolibarr 24.0.2, mit echten Verkäufen in TakePOS. Der Drucker war simuliert: ein kleines Programm, das wie ein Netzwerkdrucker empfängt, was Dolibarr an Port 9100 sendet, und es Byte für Byte aufzeichnet. Wir sehen also genau, was Dolibarr überträgt, aber nicht, wie ein bestimmtes Druckermodell es zu Papier bringt.
Die drei Druckwege
| Wer schickt den Bon an den Drucker | Was Sie brauchen | |
|---|---|---|
| Browser (Standard) | der Browser des Kassenrechners, über sein Druckfenster | einen am Kassenrechner installierten Drucker |
| Bondrucker (Modul Quittungsdrucker) | der Dolibarr-Server, als ESC/POS-Befehle | einen Drucker, den der Server erreicht |
| TakePOS Connector | der Browser, an eine Software auf dem Kassenrechner | eine externe Software und zwei versteckte Einstellungen |
Der entscheidende Unterschied: Mit dem Modul Quittungsdrucker verbindet sich der Server mit dem Drucker. Die Beschreibung dieser Methode in den Sprachdateien von Dolibarr sagt es selbst: Der Server darf nicht in der Cloud stehen, er muss die Drucker in Ihrem Netzwerk erreichen können. Ist Ihr Dolibarr online gehostet und der Drucker im Laden, sieht diese Methode ihn nicht (mit echtem Hosting nicht getestet: so steht es bei Dolibarr, und so arbeitet der Code).
Methode 1: der Browser
Das ist die Einstellung einer neuen Installation. Nach der Zahlung öffnet die Schaltfläche Kassenbon drucken den Bon in einem Fenster, und Dolibarr ruft die Druckfunktion des Browsers auf. Den Drucker wählen Sie im Druckfenster, wie bei jeder Webseite.
Die Optionen finden Sie unter Start › Einstellungen › Module/Anwendungen, Karte Kassensystem TakePOS, Zahnrad, Reiter Drucker / globale Druckeinstellungen:
- Mehrwertsteuer auf Tickets/Quittungen nach Steuersatz gruppieren: ohne diese Option zeigt der Bon nur eine Zeile mit der Steuer insgesamt, mit ihr eine Zeile je Satz (in unserem Test 5,5 % und 20 %);
- Freier Standardtext auf Rechnungen - Kopfzeile und - Fußzeile: freier Text oben und unten auf dem Bon (Platzhalter siehe unten);
- Belegname: ersetzt die Bezeichnung vor der Rechnungsnummer;
- Kunden auf Tickets | Quittungen drucken: fügt den Namen des Kunden hinzu (laut Code nicht beim generischen Kunden der Kasse);
- Zahlungsmethode auf Tickets | Quittungen drucken: fügt die Zahlung hinzu, bei Barzahlung den erhaltenen Betrag und das Rückgeld;
- Preisspalte ohne Steuern ausgeben (auf der Quittung);
- Tickets | Quittungen automatisch drucken: siehe unten.
Der Bon zeigt den Firmennamen, die Nummer, das Terminal, das Datum, das Druckdatum und dann die Positionen. Ein Positionsrabatt erscheint nicht als solcher: Der gedruckte Preis ist bereits rabattiert (eine Tasse zu 12,00 € mit 10 % Rabatt erscheint mit 10,80 €).
Platzhalter in Kopf- und Fußzeile
Ein kleines Hilfesymbol neben den beiden Feldern listet die verfügbare Variablen auf. Auf dem Bon werden nicht alle ersetzt. Was wir geprüft haben:
| Platzhalter | Auf dem Bon |
|---|---|
__MYCOMPANY_ADDRESS__, __MYCOMPANY_ZIP__, __MYCOMPANY_TOWN__ |
ersetzt (Firmenadresse) |
__MYCOMPANY_PROFID2__ (in Frankreich die SIRET), __MYCOMPANY_VATNUMBER__ |
ersetzt |
__USER_FIRSTNAME__, __USER_LOGIN__ |
ersetzt durch den an der Kasse angemeldeten Benutzer |
__THIRDPARTY_NAME__, __THIRDPARTY_FAX__, __REF__ |
unverändert gedruckt |
__TOTAL_TTC__ |
ersetzt durch … nichts |
Platzhalter für Kunde und Verkauf funktionieren also auf dem Bon nicht, obwohl sie in der Hilfe
stehen. Für den Kundennamen gibt es die Option Kunden auf Tickets | Quittungen drucken. Für
andere Kundendaten (eine Preisstufe, einen Kundentyp) gibt es keine Einstellung: Dafür braucht es ein
Modul, das einen eigenen Bon liefert (Dolibarr sieht dafür einen Hook vor, TakeposReceipt, in der
Bon-Datei).
Nachdruck: DUPLICATA
Dolibarr zählt die Drucke jedes bezahlten Bons. Beim zweiten Klick auf Kassenbon drucken für
denselben Verkauf trägt der Bon unter dem Druckdatum den Vermerk *** DUPLICATA *** (getestet auf
Französisch; laut deutscher Sprachdatei lautet er „Duplikate“).
Methode 2: ein ESC/POS-Bondrucker
ESC/POS ist die Sprache der meisten Thermo-Bondrucker. Hier erzeugt Dolibarr den Bon selbst als ESC/POS-Befehle und schickt ihn ohne Druckfenster an den Drucker.
1. Das Modul aktivieren
Start › Einstellungen › Module/Anwendungen, Karte Quittungsdrucker, aktivieren. Das Modul ergänzt die Einstellungen jedes TakePOS-Terminals um die Auswahl von Drucker und Bonvorlage.
2. Den Drucker anlegen
Zahnrad der Karte: Seite Konfiguration des Moduls RAW-/Textdrucker, Reiter Druckerliste. Name, Typ und Parameter ausfüllen, dann Hinzufügen.
| Typ | Parameter (Beispiele von Dolibarr) |
|---|---|
| Netzwerk-Drucker | IP-Adresse und Port: 192.168.1.50:9100 |
| lokaler Drucker | /dev/usb/lp0: ein USB-Anschluss des Servers |
| lokaler Windows Drucker | LPT1, COM1 oder eine Freigabe smb://… |
| CUPS-Drucker | der Name des Druckers in CUPS |
| Dummy-Drucker | druckt nichts |
Getestet haben wir nur den Typ Netzwerk-Drucker, mit Port 9100 (dem aus dem Beispiel von
Dolibarr, 10.x.x.x:9100).
Jeder Drucker hat zwei Testlinks: TXT schickt ein paar Zeilen („Hello World!“, „Most simple example“) und einen Papierschnitt, IMG zusätzlich ein Bild und einen Barcode. Die Meldung Sende Testseite zu Drucker Caisse erscheint … auch dann, wenn das Senden fehlgeschlagen ist: Lesen Sie die Meldungen darunter (siehe „Häufige Fehler“).
3. Drucker und Vorlage für die Kasse wählen
Einstellungen von TakePOS, Reiter des Terminals (ein Reiter je Terminal, mit dessen Namen):
- Quittungsdrucker (leer lassen, um das Druckersystem des Browsers zu verwenden.): Ihr Drucker;
- Zu verwendende Standard-Quittungsvorlage: die Bonvorlage (nächster Abschnitt). Wählen Sie eine aus, lassen Sie die Zeile nicht leer.
4. Die Falle: Im Laden reicht diese Einstellung nicht
Nach diesen drei Schritten haben wir verkauft: Kassenbon drucken öffnete den Bon im Browser, und der Drucker erhielt nichts.
Der Grund steht im Code von TakePOS: Der Bondrucker wird für den Kassenbon nur benutzt, wenn der
Modus Bar Restaurant aktiv ist oder eine versteckte Konstante den Wert receiptprinter hat.
Dieses Verhalten steht im Code von 23.0.4 und 24.0.2, nicht in 22.0.5. Für diese Konstante gibt es
kein Kontrollkästchen. Für einen Laden:
- Start › Einstellungen › Erweiterte Einstellungen;
- Name
TAKEPOS_PRINT_METHOD, Wertreceiptprinter, Hinzufügen (die Konstante existiert schon mit dem Wertbrowserund wird ersetzt).
Kasse neu öffnen: Kassenbon drucken schickt den Bon jetzt an den Drucker, und die Kasse zeigt kurz „An Drucker gesendet Caisse“.
Die andere Lösung ist der Modus Bar Restaurant (gleichnamiger Reiter): Geprüft, der Bon geht dann ebenfalls an den Drucker. Dieser Modus ist aber für Bars und Restaurants gedacht (Tische, Bestellungen an die Küche): Für einen Laden ist die Konstante einfacher.
Mit der Methode receiptprinter zeigt der Reiter Drucker / globale Druckeinstellungen Kopfzeile,
Fußzeile, Belegname sowie Kunden- und Zahlungsoptionen nicht mehr an: Der Inhalt des Bons kommt nur
noch aus der Vorlage.
Die Bonvorlage
Vorlagen stellen Sie in den Einstellungen des Moduls Quittungsdrucker ein, Reiter Vorlagen Setup. Die Seite listet alle verfügbaren Platzhalter mit Beschreibung. Eine Vorlage ist ein Text, in dem jede Zeile mit einem Platzhalter in geschweiften Klammern beginnt.
Die mitgelieferten Vorlagen nicht verwenden
Beim Aktivieren legt das Modul eine Vorlage namens Beispiel an (in einer französisch
installierten Instanz „Exemple“). In 24.0.2 ist sie falsch gespeichert: Die Zeilenumbrüche stehen
darin als die Zeichen \r\n, und diese Zeichen werden auf den Bon gedruckt („Épicerie Test
Dolix\r\n1 rue de Saint-Hippolyte\r\n67100Strasbourg\r\n“). Postleitzahl und Ort kleben zudem
zusammen.
Ist keine Vorlage gewählt, wird es schlimmer:
- Wählen Sie die leere Zeile in Zu verwendende Standard-Quittungsvorlage, wird der Wert
-1gespeichert und der Bon kommt leer heraus: Dolibarr schickt nur den Initialisierungsbefehl; - wurde die Einstellung nie gespeichert, nimmt Dolibarr eine im Code hinterlegte Vorlage. In 24.0.2
bricht diese nach der Adresse ab: Sie enthält einen Platzhalter, den es nicht gibt
(
{dol_value_mysoc_vatnumber}), und der Druck endet mit einem PHP-Fehler. Der Rest des Bons (Positionen, Summen, Schnitt) wird nie gesendet. Im Zweig 24.0 von Dolibarr ist das am 14.10.2026 nicht behoben.
Legen Sie also Ihre eigene Vorlage an und wählen Sie sie an jedem Terminal.
Eine Vorlage, die funktioniert
Hier unsere Testvorlage; nur die festen Wörter sind übersetzt (ohne Umlaute, siehe unten). In das Feld Template einfügen, einen Name vergeben, dann Hinzufügen; das Druckersymbol der Zeile schickt einen Testbon.
{dol_align_center}
{dol_bold}{dol_double_height}{dol_print_text}{dol_value_mysoc_name}
{dol_default_height_width}{dol_bold_disabled}
{dol_print_text}{dol_value_mysoc_address}
{dol_print_text}{dol_value_mysoc_zip} {dol_value_mysoc_town}
{dol_print_text}Firmen-ID {dol_value_mysoc_idprof2} - USt-IdNr. {dol_value_mysoc_tva_intra}
{dol_line_feed}
{dol_print_text}Beleg {dol_value_object_ref}
{dol_print_text}Gedruckt am {dol_value_currentdate}
{dol_print_text}Kasse: {dol_value_vendor_firstname}
{dol_line_feed}
{dol_align_left}
{dol_print_object_lines}
{dol_print_object_tax}
{dol_line_feed}
{dol_bold}
{dol_print_object_total}
{dol_bold_disabled}
{dol_print_payment}
{dol_line_feed}
{dol_align_center}
{dol_print_text}Vielen Dank und bis bald!
{dol_line_feed}
{dol_cut_paper_partial}
{dol_open_drawer}
Nach einem Verkauf von Kaffee, Tee (5,5 % MwSt.) und einer rabattierten Tasse (20 % MwSt.) erhielt der Drucker den Firmennamen fett und in doppelter Höhe, die Adresse, die Belegnummer, die Positionen, eine Steuerzeile je Satz, die Summen netto, Steuer und brutto, die Barzahlung und das Rückgeld, dann den Papierschnitt und das Öffnen der Schublade.
Die nützlichsten Platzhalter
| Platzhalter | Wirkung |
|---|---|
{dol_align_center}, {dol_align_left}, {dol_align_right} |
Ausrichtung der folgenden Zeilen |
{dol_bold} / {dol_bold_disabled} |
fett an / aus |
{dol_double_height}, {dol_double_width}, {dol_default_height_width} |
Schriftgröße |
{dol_print_text} |
druckt den folgenden Text der Zeile |
{dol_value_mysoc_name}, …_address, …_zip, …_town, …_idprof2, …_tva_intra |
Ihre Firma |
{dol_value_object_ref} |
Rechnungsnummer |
{dol_value_currentdate} |
Datum und Uhrzeit des Drucks |
{dol_value_vendor_firstname} |
Vorname des Kassenbenutzers |
{dol_print_object_lines} |
die verkauften Positionen |
{dol_print_object_tax} |
eine Zeile je Steuersatz |
{dol_print_object_total} |
Summen netto, Steuer, brutto |
{dol_print_payment} |
Zahlungen und Rückgeld |
{dol_line_feed} |
Leerzeile |
{dol_cut_paper_full} / {dol_cut_paper_partial} |
Papierschnitt |
{dol_open_drawer} |
Öffnungsimpuls für die Kassenschublade |
{dol_value_date_time} (Rechnungsdatum und -uhrzeit) druckt als Uhrzeit 00:00: Eine
TakePOS-Rechnung hat keine Uhrzeit. Für die Uhrzeit nehmen Sie {dol_value_currentdate}.
Drei Regeln, damit der Bon nicht abbricht
- Nur Platzhalter aus der Liste der Seite Vorlagen Setup verwenden. Ein unbekannter Platzhalter
allein in seiner Zeile druckt seinen Namen in Großbuchstaben (
DOL_VALUE_CUSTOMER_MOBILE) und zeigt einen FehlerUnknowTag. - Nie einen unbekannten Platzhalter direkt nach
{dol_print_text}setzen. In unserem Test hat{dol_print_text}{dol_value_customer_mobile}den Bon an dieser Stelle abgebrochen (PHP-FehlerPrinter::text(): Argument #1 ($str) must be of type string, null given). Genau das bricht die eingebaute Vorlage. - Ein leerer Wert ist kein Problem:
{dol_print_text}{dol_value_mysoc_url}ohne eingetragene Webseite druckt eine Leerzeile.
Was die Vorlage nicht regelt
Auf den empfangenen Bons festgestellt, ohne es über die Vorlage ändern zu können:
- Die Positionszeilen sind 51 bis 54 Zeichen lang, während Dolibarr mit 48 Zeichen pro Zeile rechnet: Auf einem Drucker mit 48 Spalten werden sie wahrscheinlich umbrechen (nicht auf einem echten Drucker geprüft);
- der gedruckte Stückpreis ist der Nettopreis mit bis zu fünf Nachkommastellen (
7,96209), die Zeilensumme dagegen brutto; der Rabatt erscheint nicht; - Steuersätze werden als
5.5000%gedruckt; - in
{dol_print_payment}heißt die Rückgeld-ZeileChange, auf Englisch.
Die Breite stellt die Konstante RECEIPT_PRINTER_NB_CHARACT_BY_LINE ein (Standard 48), unter
Start › Einstellungen › Erweiterte Einstellungen. Mit 32 (Drucker mit 58 mm) passen die Summen
in 32 Zeichen, die Positionszeilen haben noch 35 Zeichen.
Akzente kommen durch: Dolibarr hat „Épicerie“ in die Standard-Zeichentabelle der ESC/POS-Drucker (Codepage 437) umgewandelt. Deutsche Umlaute haben wir nicht getestet; deshalb enthält die Vorlage oben keine.
Automatisch nach der Zahlung drucken
Reiter Drucker / globale Druckeinstellungen, Option Tickets | Quittungen automatisch drucken. Sobald der Verkauf vollständig bezahlt ist, verhält sich TakePOS, als wäre Kassenbon drucken geklickt worden:
- Browser-Methode: Das Bonfenster öffnet sich und der Browser startet sein Druckfenster, das noch bestätigt werden muss (außer der Browser selbst ist anders eingestellt; hier nicht getestet);
- Bondrucker: Der Bon geht ohne jeden Klick direkt an den Drucker (geprüft).
Die Kassenschublade
Dolibarr öffnet die Schublade nicht selbst: Es schickt dem Drucker den ESC/POS-Impulsbefehl
(ESC p), und der Drucker, an den die Schublade angeschlossen ist, öffnet sie. Sie brauchen also
die Bondrucker-Methode (oder TakePOS Connector): Beim Druck über den Browser geht kein Befehl an
den Drucker.
Zwei Wege, beide getestet:
- Bei jedem Bon: der Platzhalter
{dol_open_drawer}in der Vorlage. Die Schublade öffnet sich bei jedem Druck des Bons; die Vorlage hängt nicht von der Zahlungsart ab, also auch bei Kartenzahlung oder Nachdruck (laut Code). - Mit einer Schaltfläche in der Kasse: Unter Start › Einstellungen › Erweiterte
Einstellungen die Konstante
TAKEPOS_ADD_BUTTON_OPEN_DRAWER1mit dem Wert1anlegen (die letzte Ziffer ist die Terminalnummer:…DRAWER2für Terminal 2). Die Schaltfläche Kassenschublade öffnen erscheint in der Kasse; sie schickt dem Drucker des Terminals nur den Öffnungsbefehl, ohne Papier.
Der gesendete Befehl ist immer derselbe: ESC p auf Ausgang 0 (Bytes 1B 70 30 3C 78). Den
anderen Schubladenausgang kann man nicht einstellen.
Mehrere Kassen, mehrere Drucker
Drucker und Vorlage werden je Terminal gewählt: ein Terminal-Reiter je Kasse (ihre Zahl steht im Reiter Parameter, Anzahl der Terminals). Jede Kasse kann also ihren eigenen Drucker haben. Getestet haben wir nur ein Terminal. Küchendrucker (Bestellungen ohne Zahlung senden) gibt es nur im Modus Bar Restaurant; nicht getestet.
TakePOS Connector
TakePOS Connector ist eine externe Software auf dem Kassenrechner: Der Browser der Kasse schickt ihr den Bon, wodurch auch ein online gehostetes Dolibarr drucken kann. Wir haben sie nicht installiert; hier steht nur, was Dolibarr 24.0.2 erwartet, laut Code und laut den Anfragen, die wir im Browser abgefangen haben. Der Code von TakePOS nennt diese Methode „deprecated“ (veraltet).
Kein Kontrollkästchen schaltet sie ein. Zwei Konstanten unter Start › Einstellungen ›
Erweiterte Einstellungen: TAKEPOS_PRINT_METHOD = takeposconnector und TAKEPOS_PRINT_SERVER
= die Adresse des Connectors. Achtung: Speichern des Reiters Drucker / globale
Druckeinstellungen löscht TAKEPOS_PRINT_SERVER (die Seite speichert diesen Wert, hat aber kein
Feld dafür). Prüfen Sie ihn nach jedem Besuch dieses Reiters.
Je nach Form von TAKEPOS_PRINT_SERVER:
| Wert | Kassenbon drucken | Kassenschublade öffnen |
|---|---|---|
eine URL (http://127.0.0.1:8111) |
POST an …/printer/index.php, Daten invoice= + der ESC/POS-Bon in Base64 (URL-Variante), mit der Vorlage des Terminals erzeugt |
POST an …/printer/drawer.php, Daten opendrawer |
eine IP-Adresse (192.168.1.20) |
POST an http://192.168.1.20:8111/print, Daten: der Browser-Bon als HTML |
POST an dieselbe Adresse, Daten opendrawer |
Im URL-Modus zeigt der Reiter zusätzlich Waage und Kundendisplay, die …/scale/index.php
und …/display/index.php aufrufen (im Code gelesen, nicht getestet).
Häufige Fehler
| Was Sie sehen | Geprüfte Ursache | Was tun |
|---|---|---|
| Am Terminal ist ein Drucker gewählt, aber das Druckfenster des Browsers öffnet sich | Laden-Modus: der Bondrucker wird nicht benutzt | Konstante TAKEPOS_PRINT_METHOD = receiptprinter |
| Die Kasse meldet „An Drucker gesendet…“, aber nichts kommt heraus | diese Meldung erscheint immer | eine Einstellungsseite öffnen: Dort steht der echte Fehler (Cannot initialise NetworkPrintConnector: Connection refused) |
| Gleiche Meldung, nirgends ein Fehler | an diesem Terminal ist kein Drucker gewählt | Terminal-Reiter, Quittungsdrucker |
Test: „Sende Testseite zu Drucker…“, danach initPrinter error: … Connection refused |
unter dieser Adresse lauscht nichts (falscher Port, Drucker aus) | IP und Port 9100 vom Server aus prüfen |
Gleicher Fehler mit Connection timed out, nach einer Minute |
die IP-Adresse antwortet gar nicht | falsche Adresse, anderes Netz oder Server außerhalb des Ladens |
| Der Bon kommt leer heraus | Zu verwendende Standard-Quittungsvorlage auf der leeren Zeile | eine Vorlage wählen |
| Der Bon bricht nach der Adresse ab | eingebaute Vorlage von Dolibarr oder unbekannter Platzhalter nach {dol_print_text} |
eigene Vorlage, nur Platzhalter aus der Liste |
\r\n auf dem Bon |
Vorlage Beispiel des Moduls | eigene Vorlage |
Ein Name in Großbuchstaben (DOL_…) auf dem Bon |
unbekannter Platzhalter | Platzhalter korrigieren |
__THIRDPARTY_NAME__ unverändert gedruckt (Browser) |
Platzhalter wird auf dem Bon nicht ersetzt | Option Kunden auf Tickets | Quittungen drucken |
Vermerk *** DUPLICATA *** (laut Sprachdatei auf Deutsch „Duplikate“) |
zweiter Druck desselben Bons (Browser) | normal |
Zwei Punkte im Code gelesen, nicht nachgestellt: Der ESC/POS-Druck braucht die PHP-Erweiterung
intl (Dolibarr 24.0.2 meldet sonst „The receipt printer requires the PHP intl extension“), und der
Test IMG lädt ein Bild, wofür die PHP-Erweiterung gd oder imagick nötig ist.
Kurz gesagt
- Standardmäßig druckt TakePOS über den Browser; die Bon-Optionen stehen im Reiter Drucker / globale Druckeinstellungen.
- Für einen ESC/POS-Drucker: Modul Quittungsdrucker, Netzwerk-Drucker
IP:9100, Drucker und Vorlage am Terminal wählen, dannTAKEPOS_PRINT_METHOD=receiptprinterunter Erweiterte Einstellungen, wenn Sie nicht im Modus Bar Restaurant arbeiten. - Eigene Vorlage schreiben: In 24.0.2 druckt das Beispiel
\r\n, die eingebaute Vorlage bricht ab, und eine leere Vorlage ergibt einen leeren Bon. - Schublade:
{dol_open_drawer}in der Vorlage oderTAKEPOS_ADD_BUTTON_OPEN_DRAWER1=1für eine Schaltfläche. - „An Drucker gesendet“ beweist nichts: Der Fehler erscheint auf der nächsten Seite.
Weiter
Verkaufen Sie an Mitglieder oder Stammkunden, die im Voraus zahlen, ergänzt das Modul TakePOS-Guthabenkonto den Zahlungsbildschirm der Kasse um die Zahlung aus einem Guthaben.
Bevor Sie die Einstellungen einer laufenden Kasse ändern, machen Sie eine Sicherung: Dolibarr sichern und wiederherstellen.
Druckt Ihr Bon immer noch nicht: Die Diagnose für 90 € ist eine Stunde gemeinsam an Ihrer Instanz und Ihrer Kasse, danach erhalten Sie schriftlich, was blockiert und was die Behebung kosten würde.