← Alle Themen · Versand
Versand → Paletten-Etiketten & Packlisten-Vorlage
Zurück zum Versand | Zurück zur Übersicht
Die Vorlagen für Paletten-Versand werden an zwei Stellen im Menü verwaltet:
- Versand -> Einstellungen -> Paletten-Etiketten → Paletten- und Karton-Etiketten (Zebra-taugliche Vorlagen, werden per QZ-Tray gedruckt).
- Versand -> Einstellungen -> Packlisten-Vorlage → A4-Packliste als Twig-Vorlage.
Der laufende Prozess (Artikel scannen, Palette anlegen, Karton zuordnen, CSV exportieren, Packliste drucken) ist unter Paletten beschrieben.
Paletten-Etiketten (Palette und Karton)
Die Seite hat zwei Tabs:
- Paletten-Etiketten → eine Vorlage pro Papierformat / Layout, die beim Anlegen einer Palette gedruckt wird.
- Karton-Etiketten → eine Vorlage pro Papierformat / Layout, die beim Anlegen eines Kartons gedruckt wird.
Jede Vorlage besteht aus:
- Name → freier Name zur Auswahl
- Breite / Höhe → Papierformat in Millimetern
- DPI → Druckerauflösung
- Ausrichtung → Hoch- oder Querformat
- HTML-Template → das eigentliche Etiketten-Layout mit Platzhaltern
Die Etiketten-Vorlagen sind Twig-Templates. Neben den unten aufgeführten Variablen stehen zwei Funktionen zur Verfügung, um Barcode und QR-Code frei konfigurierbar einzubinden.
Variablen Paletten-Etikett
| Variable | Bedeutung | |
|---|---|---|
{{ pallet.number }} | Paletten-Nummer (z.B. AMZ12345_0001) | |
{{ pallet.externalId }} | Externe Auftragsnummer | |
{{ pallet.customerName }} | Firmenname oder Vor-/Nachname | |
| `{{ pallet.customerAddress\ | raw }}` | Adresse als HTML-Block (mehrzeilig, <br>-getrennt) |
{{ pallet.cartonCount }} | Anzahl Kartons auf der Palette | |
{{ pallet.itemCount }} | Anzahl unterschiedlicher Positionen | |
{{ pallet.qtyTotal }} | Gesamte Stückzahl | |
{{ pallet.weight }} | Gewicht (falls gepflegt) | |
{{ pallet.createdAt }} | Datum und Uhrzeit der Anlage |
Variablen Karton-Etikett
| Variable | Bedeutung | |
|---|---|---|
{{ carton.number }} | Karton-Nummer (z.B. AMZ12345-K0001) | |
{{ carton.palletNumber }} | Paletten-Nummer → leer, wenn der Karton keiner Palette zugeordnet ist | |
{{ carton.externalId }} | Externe Auftragsnummer | |
{{ carton.customerName }} | Firmenname oder Vor-/Nachname | |
| `{{ carton.customerAddress\ | raw }}` | Adresse als HTML-Block |
{{ carton.itemCount }} | Anzahl unterschiedlicher Positionen im Karton | |
{{ carton.qtyTotal }} | Gesamte Stückzahl im Karton | |
{{ carton.weight }} | Gewicht (falls gepflegt) | |
{{ carton.createdAt }} | Datum und Uhrzeit der Anlage |
Positions-Iteration im Karton-Etikett:
{% for item in carton.items %}
<div>{{ item.sku }} × {{ item.quantity }}</div>
{% endfor %}
Barcode und QR-Code
Beide Typen (Palette und Karton) haben zusätzlich {{ label }} als abkürzenden Verweis auf die passende Nummer (pallet.number bzw. carton.number), damit man Barcode/QR-Code ohne Kontext-Umschalten in einer gemeinsamen Vorlage nutzen kann.
Barcode und QR-Code werden direkt als native mPDF-<barcode>-Tags in die Vorlage geschrieben. Damit sind alle mPDF-Attribute frei setzbar, und das umliegende HTML (padding, margin, border, text-align) kann beliebig zum Layouten genutzt werden.
1D-Barcode (Code 128 A/B, EAN 13, EAN 8, UPC-A/E, ...):
<barcode code="{{ pallet.number }}" type="C128A" size="1" height="1" />
code→ der zu codierende Text (meistpallet.numberbzw.carton.numberoderlabel)type→ z.B.C128A,C128B,EAN13,EAN8,UPCA,UPCE,C93,S25,I25,MSIsize→ Breiten-Multiplikator (Standard:1, z.B.1.4für dickere Balken)height→ Höhen-Multiplikator (Standard:1)class,style→ CSS-Attribute, z.B.style="margin:2mm; padding:1mm;"
QR-Code:
<barcode code="{{ carton.number }}" type="QR" size="1.5" error="M" disableborder="1" />
type="QR"→ QR-Code-Modus in mPDFsize→ Box-Skalierung (Standard:1, z.B.1.5oder2für größer)error→ Fehlerkorrektur-LevelL(7 %),M(15 %, Standard),Q(25 %),H(30 %)disableborder="1"→ blendet den mPDF-Standardrahmen um den QR-Code aus (mitstyle="border:0;"bleibt er sichtbar, das mPDF-Barcode-Rendering ignoriert CSS-Border-Angaben)class,style→ weitere CSS-Attribute für Rand, Abstand etc.
Beispiele mit Umgebungs-Layout:
<div style="padding:3mm; text-align:center;">
<barcode code="{{ pallet.number }}" type="QR" size="1.8" error="H" />
</div>
<div style="border:1px solid #000; padding:2mm; margin:2mm 0;">
<barcode code="{{ label }}" type="C128A" size="1.4" height="1.2" />
</div>
Alle üblichen Twig-Kontrollstrukturen (if, for, set) und Filter (upper, lower, number_format, date, default, raw, join, length, slice) sind erlaubt.
Beim Speichern wird die Vorlage sofort für neue Paletten bzw. Kartons dieses Typs genutzt. Bereits erzeugte Etiketten bleiben unverändert → über den Drucker-Button an der Palette bzw. am Karton kann man das Etikett jederzeit neu erzeugen.
Direkt zum Ausdruck kommt die Vorlage in der Paletten-Seite beim Scan-Workflow und beim manuellen Klick auf den Drucker-Button an einer Palette oder einem Karton.
Packlisten-Vorlage (A4)
Die Packliste rendert ein A4-PDF mit Auftragsdaten, Paletten-Übersicht und pro Palette die Kartons mit Positionen. Der Aufbau ist über eine Twig-Vorlage frei definierbar → analog zur Belegvorlagen-Logik, nur mit einem eigenen Variablen-Kontext.
Auf der Seite können Sie beliebig viele Vorlagen anlegen. Genau eine Vorlage ist Standard und wird für den Packlisten-Button in der Paletten-Seite verwendet, wenn keine explizite Auswahl getroffen wird.
Verfügbare Twig-Variablen
Scope (Umfang der Packliste):
scope.type→order(gesamter Auftrag),pallet(nur eine Palette) odercarton(nur ein Karton)scope.palletId→ gesetzt wenn die Packliste auf eine einzelne Palette begrenzt istscope.cartonId→ gesetzt wenn nur ein Karton gedruckt wird
Beispiel für einen dynamischen Titel:
{% if scope.type == 'carton' %}
<h1>Karton-Packliste</h1>
{% elseif scope.type == 'pallet' %}
<h1>Paletten-Packliste</h1>
{% else %}
<h1>Packliste</h1>
{% endif %}
Auftrags-Header:
document.date→ aktuelles Datumorder.externalId→ externe Auftragsnummerorder.market→ Marktplatz-Codeorder.customerName→ Firma oder Vor-/Nachnameorder.customerAddress|raw→ fertiger HTML-Adressblock
Kennzahlen:
totals.palletCount→ Anzahl Palettentotals.cartonCount→ Anzahl Kartons gesamttotals.qtyTotal→ Anzahl Stück gesamt
Iteration:
{% for pallet in pallets %}
Palette {{ pallet.number }} ({{ pallet.cartonCount }} Kartons, {{ pallet.qtyTotal }} Stück)
{% for carton in pallet.cartons %}
Karton {{ carton.number }} ({{ carton.qtyTotal }} Stück)
{% for item in carton.items %}
{{ item.sku }} -- {{ item.name }} -- EAN {{ item.ean }} -- {{ item.qty }}
{% endfor %}
{% endfor %}
{% endfor %}
Zusätzlich gibt es cartonsWithoutPallet → eine Liste von Kartons, die keiner Palette zugeordnet sind, mit derselben Struktur wie pallet.cartons.
Die Twig-Sandbox erlaubt die üblichen Filter (upper, lower, number_format, date, default, raw, join, length, slice, ...) und Kontrollstrukturen (if, for, set, include).
Wenn Sie eine Vorlage speichern und Standard ankreuzen, werden alle anderen Vorlagen automatisch von diesem Flag gelöst → es ist immer genau eine Vorlage Standard.