← 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

VariableBedeutung
{{ 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

VariableBedeutung
{{ 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 (meist pallet.number bzw. carton.number oder label)
  • type → z.B. C128A, C128B, EAN13, EAN8, UPCA, UPCE, C93, S25, I25, MSI
  • size → Breiten-Multiplikator (Standard: 1, z.B. 1.4 fü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 mPDF
  • size → Box-Skalierung (Standard: 1, z.B. 1.5 oder 2 für größer)
  • error → Fehlerkorrektur-Level L (7 %), M (15 %, Standard), Q (25 %), H (30 %)
  • disableborder="1" → blendet den mPDF-Standardrahmen um den QR-Code aus (mit style="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) oder carton (nur ein Karton)
  • scope.palletId → gesetzt wenn die Packliste auf eine einzelne Palette begrenzt ist
  • scope.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 Datum
  • order.externalId → externe Auftragsnummer
  • order.market → Marktplatz-Code
  • order.customerName → Firma oder Vor-/Nachname
  • order.customerAddress|raw → fertiger HTML-Adressblock

Kennzahlen:

  • totals.palletCount → Anzahl Paletten
  • totals.cartonCount → Anzahl Kartons gesamt
  • totals.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.