Commit Graph
3 Commits
Author SHA1 Message Date
Kerim (portable/claudecode)andClaude Opus 5 8c5cdf16c4 Strichcode ohne Beschriftung und ohne Klarschrift drucken
Deploy auf den Timer-Server / deploy (push) Successful in 15s
Die Zeile "Artikel fuer die Kasse" und die Klarschrift, die der Drucker unter
den Code setzt, fallen weg. Beide zeigten einem Kunden einen internen
Artikelnamen, der ihn nichts angeht - der Code steht jetzt fuer sich.

Die Klarschrift bleibt nur dort, wo sie der einzige Informationstraeger ist:
passt der Name nicht auf die Papierbreite, wird gar kein Code gedruckt und der
Name allein bleibt uebrig.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 13:23:55 +02:00
Kerim (portable/claudecode)andClaude Opus 5 6ba0cdd07f Strichcode mit dem Kassenartikel auf den Bon drucken
Der Kassierer musste den Artikel bisher von Hand in der Kasse suchen. Jetzt
steht er als Strichcode unter dem Betrag und wird gescannt.

CODE128 in Zeichensatz B, nicht das sonst uebliche CODE39: dort sind nur
Grossbuchstaben erlaubt, ein Artikel namens "techniker" waere damit nicht
darstellbar. Die Modulbreite waehlt escpos.js so gross, wie die Papierbreite
zulaesst - breitere Balken liest ein Handscanner zuverlaessiger, gerade auf
Thermopapier, das einen Tag in einer Hosentasche hinter sich hat. Daraus
ergibt sich die Laengengrenze von 17 Zeichen bei 80 mm Papier.

Artikelname und An/Aus liegen in den Einstellungen, nicht im Code: der Name
haengt am Artikelstamm der Kasse und kann sich aendern, ohne dass jemand an
die App muss.

Zwei Faelle, die sonst still danebengingen, melden sich jetzt:
- Umlaute und Sonderzeichen weist das Speichern ab, statt sie zu verschlucken
  und einen Code zu drucken, der einen anderen Artikel bedeutet.
- Passt der Name nicht auf die Papierbreite, druckt receipt.js ihn nur in
  Klarschrift. Ein abgeschnittener Code wird von keinem Scanner gelesen.

Geprueft auf dem Epson TM-T88IV: Zwischenbeleg und Endbeleg, ausgeschalteter
Strichcode, Laengengrenze, geschweifte Klammer im Namen (wird verdoppelt,
sonst liest der Drucker sie als Umschaltbefehl).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 13:19:39 +02:00
Kerim (portable/claudecode)andClaude Opus 5 70756f3762 Bon fuer die Kasse auf einem USB-Bondrucker ausgeben
Der Kunde soll mit einem Zettel zur Kasse gehen koennen, auf dem steht, was
er zahlen muss. Drei Wege fuehren jetzt zu einem Bon: der Knopf "Bon" auf der
Timer-Karte druckt den Zwischenstand und laesst den Timer weiterlaufen,
"Beenden" druckt den Endbeleg, und in der Historie laesst sich jeder Beleg
nachdrucken.

Der Drucker haengt per USB an einem Raspberry Pi und ist damit vom
Timer-Server aus nicht direkt erreichbar. Auf dem Pi laeuft deshalb eine
kleine Bruecke (deploy/bondrucker/, nur Python-Standardbibliothek), die
fertige ESC/POS-Daten per HTTP annimmt. Das Bon-Layout bleibt bewusst hier
im Repo, damit Aenderungen daran nicht auf dem Pi angefasst werden muessen.

Beim Beenden wird erst gespeichert und dann gedruckt. Eine leere Papierrolle
ist damit ein Papierproblem und kein Datenproblem - der Vorgang steht in der
Historie, die Oberflaeche sagt ausdruecklich, dass der Bon nicht gedruckt
wurde, und nennt den Grund.

Ohne PRINTER_HOST in der .env ist die Druckfunktion aus und die App verhaelt
sich unveraendert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 20:37:12 +02:00