Drucker & Workstations
Das WMS verwendet ein Print-Broker-System: Drucker werden nicht direkt aus dem Browser angesteuert, sondern über einen lokalen Print Agent, der auf dem Packplatz-PC läuft. Der Agent verbindet sich mit dem WMS, empfängt Druckaufträge und sendet sie an die angeschlossenen Drucker — lautlos, ohne Browser-Dialoge.
Architektur-Ăśberblick
So funktioniert es:
- Ein Nutzer löst im WMS einen Versand aus (oder klickt “Nachdrucken”)
- Das WMS erstellt einen Druckauftrag in der Datenbank mit Status
queued - Der Print Agent auf dem Packplatz-PC wird per Realtime benachrichtigt (oder fragt alle 500ms ab)
- Der Agent beansprucht den Auftrag (Status wird
printing), lädt das Label herunter und druckt es - Der Agent meldet den Erfolg oder Fehler zurück (Status wird
successoderfailed) - Das WMS zeigt den aktuellen Status in der Druckhistorie an
Komponenten
Das Drucksystem besteht aus vier Hauptbestandteilen:
| Komponente | Beschreibung | Wo? |
|---|---|---|
| WMS (Print Broker) | Erstellt Druckaufträge, verwaltet Workstations und Drucker-Zuweisungen | Browser (app.flowkom.de) |
| Print Agent | Windows-Programm, das Druckaufträge empfängt und an lokale Drucker sendet | Packplatz-PC (Windows) |
| Workstation | Virtuelle Repräsentation eines physischen Packplatzes im WMS | WMS-Einstellungen |
| Drucker | Physische Drucker, die am Packplatz-PC angeschlossen sind | Lokal am PC |
Druckauftrag-Lebenszyklus
| Status | Bedeutung | Nächster Schritt |
|---|---|---|
| Wartend (queued) | Auftrag erstellt, wartet auf den Agent | Agent holt den Auftrag ab |
| Wird gedruckt (printing) | Agent hat den Auftrag beansprucht | Agent druckt und meldet Ergebnis |
| Erfolgreich (success) | Druck wurde ausgefĂĽhrt | Fertig |
| Fehlgeschlagen (failed) | Druck ist fehlgeschlagen | Fehler prĂĽfen, ggf. Retry |
Print Agent einrichten
Der Print Agent ist ein Windows-Programm (.exe), das auf jedem Packplatz-PC installiert werden muss.
Systemanforderungen
- Betriebssystem: Windows 10 oder neuer
- Runtime: .NET 8 (wird bei der Installation mitgeliefert)
- Netzwerk: Internetzugang zum WMS (HTTPS)
Installation (Schritt fĂĽr Schritt)
- Öffne im WMS Einstellungen → Drucker
- Lade im Bereich Print Agent herunterladen die EXE-Datei herunter
- FĂĽhre die Installation auf dem Packplatz-PC durch
- Der Agent startet automatisch und legt sich in die Taskleiste (System Tray)
- Der Agent startet kĂĽnftig automatisch mit Windows
Pairing (Agent mit Workstation verbinden)
Nach der Installation muss der Agent einmalig mit einer Workstation im WMS gekoppelt werden:
- Erstelle im WMS eine Workstation (siehe nächster Abschnitt) oder verwende eine bestehende
- Klicke im WMS auf das Aktionsmenü der Workstation → Pairing-Code erstellen
- Ein 6-stelliger Zahlencode wird angezeigt (gĂĽltig fĂĽr 10 Minuten)
- Ă–ffne den Print Agent auf dem Packplatz-PC
- Gib dort die WMS-URL ein (z.B.
https://app.flowkom.de) - Gib den 6-stelligen Pairing-Code ein und bestätige
- Die Verbindung ist hergestellt — der Agent zeigt den Status “Verbunden” an
Nach erfolgreichem Pairing:
- Die Workstation zeigt im WMS den Status Online (grĂĽner Punkt)
- Die Agent-Version wird angezeigt
- Alle am PC angeschlossenen Drucker werden automatisch gemeldet und im WMS sichtbar
Sicherheit: Der Agent authentifiziert sich mit einem kryptografisch sicheren Device Token, nicht mit Benutzername/Passwort. Der Token ist an genau eine Workstation gebunden. Im WMS wird nur der Hash des Tokens gespeichert.
Workstations verwalten
Eine Workstation repräsentiert einen physischen Packplatz. Jede Workstation hat genau einen Print Agent und beliebig viele Drucker.
Workstation erstellen
- Öffne Einstellungen → Drucker
- Klicke auf Workstation hinzufĂĽgen
- Vergib einen Namen (z.B. “Packplatz 1”, “Versand Erdgeschoss”)
- Optional: FĂĽge einen Kommentar hinzu (z.B. Standort, Besonderheiten)
- Klicke auf Speichern
Workstation-Ăśbersicht
Die Workstation-Tabelle zeigt alle konfigurierten Packplätze:
| Spalte | Bedeutung |
|---|---|
| Name | Name der Workstation (+ Kommentar falls vorhanden) |
| Verbindung | Online (grĂĽn), Offline (grau) oder Nicht gepairt |
| Agent-Version | Version des installierten Print Agent |
| Letzter Kontakt | Zeitpunkt des letzten Heartbeat vom Agent |
| Status | Aktiv oder Inaktiv |
Online/Offline-Status
Der Agent sendet regelmäßig einen Heartbeat an das WMS. Anhand des letzten Heartbeat wird der Status bestimmt:
- Online (grĂĽner Punkt): Letzter Heartbeat innerhalb der letzten 30 Sekunden
- Offline (grauer Punkt): Kein Heartbeat seit mehr als 30 Sekunden
- Nicht gepairt: Noch kein Agent verbunden — Pairing steht aus
Workstation aktivieren/deaktivieren
Ăśber das AktionsmenĂĽ (drei Punkte) kannst du eine Workstation deaktivieren. Deaktivierte Workstations:
- Erhalten keine neuen Druckaufträge
- Bleiben mit allen Einstellungen erhalten
- Können jederzeit wieder aktiviert werden
Warnung: Wenn keine Workstation aktiv ist, kann kein automatischer Labeldruck ausgefĂĽhrt werden. Das WMS zeigt dann eine Warnmeldung an.
Workstation entkoppeln
Wenn der Print Agent durch eine Neuinstallation ersetzt werden muss:
- Klicke auf das AktionsmenĂĽ der Workstation
- Wähle Entkoppeln
- Der bestehende Device Token wird invalidiert
- Erstelle einen neuen Pairing-Code und verbinde den neuen Agent
Workstation löschen
- Klicke auf das Aktionsmenü → Löschen
- Bestätige den Dialog
Bedingung: Eine Workstation kann nur gelöscht werden, wenn keine aktiven Druckaufträge (Status “Wartend” oder “Wird gedruckt”) vorhanden sind. Warte, bis alle Aufträge abgeschlossen sind, bevor du die Workstation löschst.
Drucker-Typen und Formate
Nach dem Pairing meldet der Agent alle am PC verfĂĽgbaren Drucker automatisch an das WMS. Die Drucker erscheinen im Tab Drucker der Workstation-Details.
Drucker-Typen
| Typ | Bezeichnung im WMS | Beschreibung | Beispiel |
|---|---|---|---|
thermal | Thermodrucker | ZPL-fähige Etikettendrucker für Versandlabels | Zebra GK420, Zebra ZD421 |
a4 | A4-Drucker | Standard-Laserdrucker fĂĽr Dokumente (Lieferscheine, Zolldokumente) | HP LaserJet, Brother HL |
label | Adressetikettendrucker | Kleine Etikettendrucker (kein ZPL, nur PDF) | Brother QL-820NWB, DYMO LabelWriter |
bond | Bondrucker | Bondrucker fĂĽr Belege | Epson TM |
unknown | Unbekannt | Typ noch nicht zugewiesen | Neuer Drucker |
Brother QL und DYMO werden vom Agent automatisch anhand des Druckernamens als Adressetikettendrucker erkannt. Falls ein Drucker nicht erkannt wird (z.B. weil er umbenannt wurde), kann der Typ manuell geändert werden.
Label-Formate
| Format | Beschreibung | Verwendet fĂĽr |
|---|---|---|
| Universelles Druckformat, von allen Druckern unterstĂĽtzt | A4-Drucker, Adressetikettendrucker, Thermodrucker | |
| ZPL | Zebra Programming Language — Spezialformat für Thermodrucker | Nur Thermodrucker (Zebra, etc.) |
Wichtig: Adressetikettendrucker (Brother QL, DYMO) unterstĂĽtzen kein ZPL. FĂĽr diese Drucker muss das Format auf PDF eingestellt sein. Der Agent setzt dies beim Erkennen automatisch, aber das WMS zeigt eine Warnung an, falls ein Adressetikettendrucker auf ZPL eingestellt ist.
Drucker konfigurieren
In den Workstation-Details (Klick auf den Workstation-Namen) im Tab Drucker:
- Format ändern: Über das Dropdown in der Format-Spalte zwischen PDF und ZPL wechseln
- Typ ändern: Über das Aktionsmenü → “Drucker-Typ ändern” den Typ manuell setzen
- Deaktivieren/Aktivieren: Ăśber das AktionsmenĂĽ den Drucker ein-/ausschalten. Deaktivierte Drucker stehen nicht fĂĽr Zuweisungen zur VerfĂĽgung.
- Testdruck: Über das Aktionsmenü → “Testdruck” einen Testdruck auslösen. Ein Test-Job wird in die Queue eingestellt und vom Agent verarbeitet.
Drucker-Zuweisungen (Versandart → Drucker)
Damit das WMS beim Versand automatisch den richtigen Drucker wählt, musst du Zuweisungen einrichten: Welcher Drucker soll für welche Versandart drucken?
Zuweisungen einrichten
- Klicke auf eine Workstation, um die Details zu öffnen
- Wechsle zum Tab Zuweisungen
- FĂĽr jede Versandart siehst du zwei Dropdowns:
- Primärdrucker — Der bevorzugte Drucker für diese Versandart
- Fallback-Drucker — Wird verwendet, wenn der Primärdrucker inaktiv ist
- Wähle die gewünschten Drucker aus
- Klicke auf Speichern
| Spalte | Beschreibung |
|---|---|
| Versandart | Name der Versandart (z.B. “DHL Paket”, “Deutsche Post Brief”) |
| Primärdrucker | Standardmäßig verwendeter Drucker |
| Fallback-Drucker | Ersatzdrucker, falls Primär inaktiv |
Warnung: Versandarten ohne Drucker-Zuweisung werden mit einem gelben Warndreieck markiert. Ohne Zuweisung wird beim Versand kein automatischer Labeldruck ausgelöst — das Label kann aber weiterhin manuell heruntergeladen werden.
Exportdokument-Drucker (Zolldokumente)
FĂĽr internationale Sendungen mit Zolldokumenten (CN23) kann ein separater A4-Drucker konfiguriert werden:
- Im Tab Zuweisungen findest du unter der Zuweisungstabelle den Bereich A4-Drucker fĂĽr Exportdokumente
- Wähle einen A4-Drucker aus der Liste
- Zolldokumente werden automatisch an diesen Drucker gesendet
Nur aktive Drucker vom Typ “A4-Drucker” stehen in dieser Auswahl zur Verfügung.
Zuweisungen von anderer Workstation kopieren
Wenn du mehrere Packplätze mit gleicher Konfiguration einrichten möchtest:
- Ă–ffne die Zuweisungen der Ziel-Workstation
- Klicke auf Von anderer Workstation kopieren
- Wähle die Quell-Workstation aus
- Die Zuweisungen werden ĂĽbernommen (nur Drucker, die auch auf der Ziel-Workstation existieren)
- Klicke auf Speichern, um die kopierten Zuweisungen zu sichern
Druckablauf im Versandprozess
Automatischer Labeldruck beim Versand
Der häufigste Druckvorgang: Ein Mitarbeiter versendet eine Bestellung, das Label wird automatisch gedruckt.
Ablauf im Detail:
- Der Packer wählt im Versand-Dialog seine Workstation aus (wird im Browser gespeichert)
- Nach Klick auf “Versenden” erstellt das WMS ein Label bei DHL/Deutsche Post
- Das Label wird im Storage abgelegt
- Das WMS sucht den passenden Drucker: Primärdrucker der Versandart → Fallback → kein Druck
- Ein Druckauftrag wird in die Queue eingestellt
- Der Print Agent empfängt den Auftrag, lädt das Label über eine signierte URL herunter und druckt es
- Die signierte URL ist 24 Stunden gĂĽltig
Wichtig: Der Druckvorgang blockiert nie den Versandprozess. Falls kein Drucker zugewiesen ist oder der Agent offline ist, wird der Versand trotzdem abgeschlossen. Das Label kann dann manuell heruntergeladen werden.
Nachdruck (Reprint)
Falls ein Label erneut gedruckt werden muss (z.B. unleserlich, Papierstau):
- Ă–ffne die Bestelldetails der versendeten Bestellung
- Klicke auf Nachdrucken beim gewĂĽnschten Label
- Ein neuer Druckauftrag wird in die Queue eingestellt
- Der Agent druckt das Label erneut
Der Nachdruck funktioniert fĂĽr:
- Versandlabels — DHL, Deutsche Post
- Exportdokumente — CN23 Zolldokumente
- Retourenlabels — Falls automatisch erstellt
Was passiert, wenn kein Drucker konfiguriert ist?
Wenn beim Versand kein passender Drucker gefunden wird:
- Der Versand wird nicht blockiert — die Bestellung wird trotzdem als versendet markiert
- Das WMS zeigt eine Warnung: “Kein Drucker für Versandart X auf Workstation Y konfiguriert”
- Das Label kann ĂĽber den Download-Link manuell heruntergeladen und gedruckt werden
- Die Lösung: Unter Einstellungen → Drucker den fehlenden Drucker zuweisen
Exportdokumente bei internationalen Sendungen
Bei internationalen DHL-Sendungen, die Zolldokumente (CN23) erfordern:
- Das WMS erstellt neben dem Versandlabel auch ein Exportdokument
- Falls ein Exportdokument-Drucker (A4) konfiguriert ist, wird ein separater Druckauftrag erstellt
- Das Exportdokument wird automatisch auf dem A4-Drucker gedruckt
- Falls kein Exportdrucker konfiguriert ist, kann das Dokument manuell heruntergeladen werden
Workstation im Versandprozess auswählen
Im Versand-Dialog (Pack & Ship) gibt es ein Workstation-Dropdown, um den aktiven Packplatz auszuwählen:
- Das Dropdown zeigt alle aktiven, gepaarten Workstations
- Neben dem Namen wird der Online-Status angezeigt (grĂĽn = online, grau = offline)
- Die Auswahl wird im Browser gespeichert und beim nächsten Öffnen automatisch vorbelegt
- Ohne Workstation-Auswahl ist der Versand weiterhin möglich — es wird nur kein automatischer Druck ausgelöst
Druckhistorie
In den Workstation-Details im Tab Druckhistorie siehst du alle Druckaufträge der Workstation:
- Auftrag — Bestellnummer (oder “Testdruck”)
- Drucker — Name des verwendeten Druckers
- Typ — Versandlabel, Exportdokument oder Testdruck
- Format — PDF oder ZPL
- Status — Wartend, Wird gedruckt, Erfolgreich, Fehlgeschlagen
- Zeitpunkt — Wann der Auftrag erstellt bzw. gedruckt wurde
- Benutzer — Wer den Druck ausgelöst hat
Bei fehlgeschlagenen Aufträgen kannst du über das Aktionsmenü einen Retry auslösen — ein neuer Druckauftrag mit Status “Wartend” wird erstellt.
Druckaufträge werden nach 60 Tagen automatisch bereinigt. Die zugehörigen Label-Dateien im Storage werden ebenfalls gelöscht.
Testdruck
Um zu prĂĽfen, ob der Print Agent korrekt mit einem Drucker verbunden ist:
- Ă–ffne die Workstation-Details (Klick auf den Workstation-Namen)
- Im Tab Drucker → Aktionsmenü des gewünschten Druckers → Testdruck
- Ein Test-PDF wird als Druckauftrag in die Queue eingestellt
- Der Agent verarbeitet den Auftrag und meldet das Ergebnis
- In der Druckhistorie siehst du, ob der Testdruck erfolgreich war
Fehlerbehebung
Agent zeigt “Offline” im WMS
- Prüfe, ob der Print Agent auf dem Packplatz-PC läuft (Icon in der Taskleiste?)
- PrĂĽfe die Internetverbindung des PCs
- Starte den Agent neu (Rechtsklick auf Tray-Icon → Beenden, dann Agent erneut öffnen)
- Falls der Agent seit der letzten Neuinstallation nicht mehr verbunden war: Entkoppeln und neu pairen
”Kein Drucker für Versandart X konfiguriert”
- Öffne Einstellungen → Drucker
- Klicke auf die betroffene Workstation
- Wechsle zum Tab Zuweisungen
- Weise der genannten Versandart einen Primärdrucker zu
- Klicke auf Speichern
Druckauftrag bleibt auf “Wartend” hängen
- PrĂĽfe, ob die Workstation online ist (grĂĽner Punkt)
- Prüfe, ob der Agent auf dem PC läuft
- Falls der Agent läuft aber keine Jobs abholt: Agent neu starten
- Falls das Problem bestehen bleibt: Workstation entkoppeln und neu pairen
Druckauftrag zeigt “Fehlgeschlagen”
- Ă–ffne die Druckhistorie der Workstation
- PrĂĽfe die Fehlermeldung des fehlgeschlagenen Auftrags
- Häufige Ursachen:
- Drucker nicht gefunden — Der Drucker wurde vom PC entfernt oder ist ausgeschaltet
- Papier/Etiketten leer — Nachfüllen und Retry auslösen
- Format-Mismatch — ZPL an einen Nicht-ZPL-Drucker gesendet → Format in den Drucker-Einstellungen auf PDF umstellen
- Nach Behebung der Ursache: Retry ĂĽber das AktionsmenĂĽ des Auftrags
Label wird in falscher Größe gedruckt
Das WMS sendet Labels im Originalformat (z.B. DHL: 100 x 210 mm). Die Skalierung auf die tatsächliche Etikettengröße ist Aufgabe des Windows-Druckertreibers:
- Ă–ffne auf dem Packplatz-PC die Druckereigenschaften
- Stelle die Papiergröße/Etikettengröße auf das eingelegte Medium ein
- PrĂĽfe die Skalierungseinstellungen im Treiber
Häufige Fragen
Kann ich mehrere Drucker an einer Workstation betreiben?
Ja. Der Print Agent erkennt alle am PC angeschlossenen Drucker und meldet sie dem WMS. Ăśber die Versandart-Zuweisungen steuerst du, welcher Drucker fĂĽr welche Versandart verwendet wird. Du kannst z.B. einen Thermodrucker fĂĽr DHL-Labels und einen A4-Drucker fĂĽr Zolldokumente an derselben Workstation betreiben.
Was passiert, wenn der Print Agent offline ist?
Druckaufträge bleiben in der Queue mit Status “Wartend”. Sobald der Agent wieder verbunden ist, werden die wartenden Aufträge automatisch abgearbeitet. Zeitkritische Labels sollten deshalb immer mit einer aktiven Workstation generiert werden.
Können mehrere Packplätze gleichzeitig drucken?
Ja. Jede Workstation hat eine eigene Druckwarteschlange. Mehrere Packplätze arbeiten vollständig unabhängig voneinander. Es gibt kein Limit für die Anzahl gleichzeitig aktiver Workstations.
Wie wird verhindert, dass ein Label doppelt gedruckt wird?
Jeder Druckauftrag hat einen Idempotenz-Schlüssel (job_key). Beim Versand wird dieser aus Bestell-ID und Versandauftrags-ID zusammengesetzt. Ein zweiter Klick auf “Versenden” erzeugt keinen doppelten Druckauftrag — der bestehende wird erkannt und übersprungen.
UnterstĂĽtzt das System ZPL und PDF gleichzeitig?
Ja. Das DHL-Label-Format wird beim Versand automatisch anhand der Drucker-Konfiguration gewählt. Ein Thermodrucker kann ZPL empfangen, während ein Adressetikettendrucker an derselben Workstation PDF bekommt. Das Format wird pro Drucker eingestellt, nicht pro Workstation.
Brauche ich den Print Agent fĂĽr jeden PC?
Ja, der Print Agent muss auf jedem Packplatz-PC installiert werden, der automatisch drucken soll. Jeder Agent ist genau einer Workstation zugeordnet. Wenn du nur einen Packplatz hast, brauchst du nur einen Agent.
Technische Details (fĂĽr Administratoren)
Datenbank-Tabellen
Das Drucksystem verwendet folgende Tabellen:
| Tabelle | Beschreibung |
|---|---|
workstations | Packplätze mit Name, Status, Device Token (gehasht), Agent-Version, letzter Heartbeat |
workstation_pairing_codes | Einmal-Codes (6-stellig, 10 Min. TTL) fĂĽr das Agent-Pairing |
workstation_printers | Vom Agent gemeldete Drucker mit Typ, Format, Status |
shipping_method_printer_assignments | Versandart-zu-Drucker-Zuweisungen pro Workstation (Primary + Fallback) |
print_jobs | Druckauftrags-Queue und Audit Trail |
Enum-Typen
printer_type: thermal | a4 | bond | label | unknown
label_format: zpl | pdf
label_type: shipping_label | picklist | test | export_document
print_job_status: queued | printing | success | failedIdempotenz und Signed URLs
- Job Key: Jeder Druckauftrag hat einen eindeutigen SchlĂĽssel (z.B.
ship-{order_id}-{task_id}). Ein UNIQUE-Index verhindert doppelte Einträge. - Signed URLs: Der Agent lädt Labels nicht direkt aus der Datenbank, sondern über signierte URLs aus dem Supabase Storage. Die URLs sind 24 Stunden gültig.
- Atomischer Claim: Wenn der Agent einen Job abholt, wird der Status in einer atomischen Transaktion von
queuedaufprintinggesetzt. Das verhindert, dass zwei Agents denselben Job verarbeiten.
Broker-Architektur (Edge Functions)
Die Kommunikation zwischen Agent und WMS läuft über Supabase Edge Functions:
| Endpoint | Zweck |
|---|---|
POST /print-pair | Pairing-Code einlösen → Device Token erhalten |
POST /print-heartbeat | Heartbeat senden (Version, Status, last_seen_at) |
GET /print-next-job | Nächsten wartenden Job atomar beanspruchen |
POST /print-job-result | Druckergebnis melden (success/failed + Fehlermeldung) |
POST /print-printers-report | Drucker-Inventar an das WMS melden (Upsert) |
Alle Endpoints validieren den Device Token und beschränken Aktionen auf genau eine Workstation.
Realtime-Benachrichtigung
Im optimierten Modus (PROJ-41) nutzt der Agent Supabase Realtime, um sofort über neue Druckaufträge benachrichtigt zu werden. Als Fallback fragt der Agent alle 500ms per Polling nach neuen Jobs. Der kritische Pfad (DHL-Label generieren → Agent druckt) dauert typischerweise 2–4 Sekunden.
RLS-Policies (Row Level Security)
Alle Tabellen sind mit RLS gesichert:
- Workstations, Printers, Assignments: Lesen fĂĽr alle Workspace-Mitglieder, Schreiben nur fĂĽr Admins
- Print Jobs: Lesen und Erstellen für alle Workspace-Mitglieder, Löschen nur für Admins
- Pairing Codes: Nur fĂĽr Admins sichtbar und verwaltbar
Label Storage
Labels werden im Supabase Storage Bucket labels/ abgelegt:
- Pfadformat:
labels/{workspace_id}/{order_id}/{filename}.pdf(oder.zpl) - Bereinigung: Der tägliche Cleanup-Cron-Job löscht Labels älter als 60 Tage
- Zugriff: Nur über signierte URLs (kein direkter öffentlicher Zugriff)
Verwandte Seiten
- Versandarten — Versandarten anlegen, die den Druckern zugewiesen werden
- Cron-Jobs — Täglicher Cleanup bereinigt alte Druckaufträge und Labels