Getestet mit JTL-Wawi bis 1.11.*

Rechnung ins Drittland mit JTL-Wawi: TARIC, Ursprungsland und Gewicht automatisch auf die Rechnung drucken

Zollangaben nur bei Nicht-EU-Empfängern auf die Rechnung: Ausdruck für die List-&-Label-Vorlage plus EU/Drittland-Prüfung im JTL-Workflow.

Wer aus der JTL-Wawi in die Schweiz, nach Großbritannien oder in die USA liefert, braucht auf der Rechnung meist mehr als Bezeichnung, Menge und Preis. Zolltarifnummer, Ursprungsland und Gewicht werden dann oft von Hand nachgetragen oder auf einem Extrablatt mitgeschickt. Das ist fehleranfällig und kostet bei jeder Sendung Zeit.

Einfacher geht es direkt in der Rechnungsvorlage. Die Zollangaben werden nur bei Empfängern außerhalb der EU an die Artikelbezeichnung angehängt. Innerhalb der EU sieht die Rechnung aus wie bisher. Dazu zeigen wir die passende EU/Drittland-Prüfung für Workflows.

Dieser Artikel beschreibt die technische Umsetzung in der JTL-Wawi. Welche Angaben eine Rechnung für eine bestimmte Ausfuhr tatsächlich braucht, hängt vom Zielland, der Ware und dem Versandweg ab. Das ist keine Rechtsberatung. Klären Sie Zoll- und Steuerfragen mit Ihrem Steuerberater, Ihrem Spediteur oder dem Zoll.

Was Sie brauchen

  • Eine Kopie Ihrer Rechnungsvorlage (Druck-/E-Mail-/Exportvorlagen → Rechnung). Bearbeiten Sie nie direkt die Standardvorlage.
  • Gepflegte Stammdaten: TARIC-Code, Ursprungsland und Artikelgewicht am Artikel.
  • Optional ein eigenes Feld (freies Attribut) „Warenbezeichnung“, wenn Sie für den Zoll eine andere Bezeichnung als den Artikelnamen drucken möchten.

Was auf der Rechnung erscheint

Angabe Wird gedruckt, wenn …
TARIC-Code Empfänger außerhalb der EU und Feld gefüllt
Ursprungsland Empfänger außerhalb der EU und Feld gefüllt
Einzel- und Gesamtgewicht Empfänger außerhalb der EU und Gewicht größer als 0
Warenbezeichnung Empfänger außerhalb der EU und eigenes Feld gefüllt

Das Gesamtgewicht wird aus Einzelgewicht × Menge berechnet und auf zwei Nachkommastellen ausgegeben.

Schritt 1: Benutzervariable für das Gewicht anlegen

Das Einzelgewicht wird in dieser Vorlage über eine eigene Variable aus der Datenbank gelesen. Legen Sie im Rechnungslayout eine Benutzervariable @IndividualWeight an:

Fstr$(JTL_DirectQuery("SELECT fArtGewicht FROM dbo.tArtikel WHERE cArtNr = '"+InvoicePosition.SKU+"'"),"?&.##")

Die Abfrage liest das Feld fArtGewicht des Artikels mit der passenden Artikelnummer und formatiert es mit zwei Nachkommastellen.

Achtung: Die Artikelnummer wird in das SQL eingesetzt

Der Ausdruck baut den SQL-Befehl als Text zusammen. Die Artikelnummer steht dabei direkt zwischen zwei Hochkommas. Das ist unkritisch, solange Ihre Artikelnummern sauber sind und nur aus Ihren eigenen Stammdaten kommen. Enthält eine Artikelnummer aber ein Hochkomma (zum Beispiel 12'5-ZOLL), ist der SQL-Befehl ungültig. Die Abfrage liefert dann kein Gewicht, und die Gewichtszeile fehlt auf der Rechnung.

Artikelnummern werden häufig per Import oder vom Marktplatz übernommen. Prüfen Sie vor dem Einsatz, ob Hochkommas vorkommen:

SELECT cArtNr FROM dbo.tArtikel WHERE cArtNr LIKE '%''%';

Robuster wird der Ausdruck, wenn Sie Hochkommas vor dem Einsetzen verdoppeln – so bleibt der SQL-Befehl auch bei solchen Artikelnummern gültig:

Fstr$(JTL_DirectQuery("SELECT fArtGewicht FROM dbo.tArtikel WHERE cArtNr = '"+StrSubst$(InvoicePosition.SKU,"'","''")+"'"),"?&.##")

Testen Sie den Ausdruck in der Vorschau mit einer echten Rechnung, bevor Sie die Vorlage produktiv schalten.

Schritt 2: Die Artikelbezeichnung erweitern

Ersetzen Sie in der Positionstabelle den Ausdruck für die Artikelbezeichnung durch diesen:

InvoicePosition.Name+
cond(not Contains(",DE,AT,BE,BG,HR,CY,CZ,DK,EE,FI,FR,EL,GR,HU,IE,IT,LV,LT,LU,MT,NL,PL,PT,RO,SK,SI,ES,SE,", ","+Report.InvoiceBillToAddress.CountryISO+","),
    cond(IsNullOrEmpty(InvoicePosition.TARIC),"","¶Taric: "+InvoicePosition.TARIC)+
    cond(IsNullOrEmpty(InvoicePosition.OriginCountry),"","¶Ursprungsland: "+InvoicePosition.OriginCountry)+
    cond(@IndividualWeight="0,00" or IsNullOrEmpty(@IndividualWeight),
        "",
        "¶Gewicht: " + @IndividualWeight + " kg" +
        "  / Gesamtgewicht: " + LocNumber$(Val(@IndividualWeight) * Val(InvoicePosition.Quantity), "%.2f") + " kg"
    )+
    cond(IsNullOrEmpty(JTL_GetProductCustomField("Warenbezeichnung", InvoicePosition.ProductInternalId)),
         "",
         "¶Warenbezeichnung: " + JTL_GetProductCustomField("Warenbezeichnung", InvoicePosition.ProductInternalId)),
    ""
)

So funktioniert der Ausdruck:

  • EU-Prüfung: Der ISO-Code des Landes wird mit Kommas umschlossen (,CH,) und in einer Liste aller 27 EU-Länder gesucht. Die Kommas verhindern Teiltreffer. Griechenland steht sowohl als EL als auch als GR in der Liste.
  • Leere Felder: Jede Zusatzzeile wird nur gedruckt, wenn das Feld gefüllt ist. Fehlende Daten erzeugen also keine halben Zeilen wie „Taric: “.
  • Umbruch: Das Zeichen (Alt+0182) erzeugt in List & Label einen Zeilenumbruch. Die Zollangaben stehen dadurch untereinander unter der Bezeichnung.

Der Ausdruck prüft die Rechnungsadresse (Report.InvoiceBillToAddress.CountryISO). Bei abweichender Lieferadresse – Rechnung an die deutsche Zentrale, Lieferung in die Schweiz – erscheinen die Zollangaben dann nicht. Wenn das bei Ihnen vorkommt, prüfen Sie im Variablenbaum Ihrer Vorlage, ob ein Ländercode der Lieferadresse zur Verfügung steht, und verwenden Sie diesen.

Schritt 3: Dieselbe Prüfung im Workflow

Oft soll nicht nur die Rechnung anders aussehen. Drittland-Aufträge sollen auch markiert, einem anderen Versandweg zugewiesen oder mit einem Hinweis an den Versand versehen werden. Dafür gibt es in den JTL-Workflows dieselbe Prüfung in Liquid:

{% assign euCountries = ",DE,AT,BE,BG,HR,CY,CZ,DK,EE,FI,FR,EL,GR,HU,IE,IT,LV,LT,LU,MT,NL,PL,PT,RO,SK,SI,ES,SE," %}\
{% capture countryKey %},{{ Vorgang.Lieferung.Lieferadresse.LandISO }},{% endcapture %}\
{% if euCountries contains countryKey %}\
EU-Lieferung\
{% else %}\
Nicht-EU-Lieferung (Drittland)\
{% endif %}\

Wichtig sind zwei Details:

  • Der Backslash am Zeilenende unterdrückt den Zeilenumbruch. Ohne ihn gibt der Workflow Leerzeilen aus, und ein Vergleich wie „ist gleich EU-Lieferung“ schlägt fehl.
  • Der Pfad zur Adresse hängt vom Workflow-Objekt ab. Vorgang.Lieferung.Lieferadresse.LandISO gilt für Workflows auf Ebene der Lieferung bzw. des Versands. Auf Auftragsebene verwenden Sie Vorgang.Lieferadresse.LandISO oder – wenn Sie bewusst wie die Rechnungsvorlage prüfen wollen – Vorgang.Rechnungsadresse.LandISO.

Im Workflow prüft das Snippet die Lieferadresse, die Rechnungsvorlage die Rechnungsadresse. Entscheiden Sie sich bewusst für eine Adresse und verwenden Sie sie in Vorlage und Workflow einheitlich. Sonst kann ein Auftrag im Workflow als Drittland gelten, während auf der Rechnung keine Zollangaben stehen.

Stolperfallen aus der Praxis

Symptom Ursache Lösung
Keine Zollangaben, obwohl Lieferung ins Drittland Rechnungsadresse liegt in der EU Ländercode der Lieferadresse verwenden (Hinweis in Schritt 2)
Gewichtszeile fehlt bei einzelnen Artikeln Hochkomma in der Artikelnummer bricht die SQL-Abfrage Hochkomma verdoppeln (Schritt 1)
Gewichtszeile fehlt bei allen Artikeln Artikelgewicht nicht gepflegt oder Variable @IndividualWeight nicht angelegt Stammdaten und Benutzervariable prüfen
Gesamtgewicht falsch oder 0 Dezimaltrennzeichen passt nicht zur Formatierung Ausgabe von @IndividualWeight in der Vorschau prüfen, Formatierung anpassen
Workflow-Bedingung greift nie Leerzeilen in der Liquid-Ausgabe Backslash am Ende jeder Zeile setzen
Leere Ausgabe im Workflow Falscher Adresspfad für das Workflow-Objekt Pfad passend zu Auftrag oder Lieferung wählen
Warenbezeichnung erscheint nie Eigenes Feld fehlt oder heißt anders Feld exakt „Warenbezeichnung“ anlegen und pflegen

Stammdaten sind der eigentliche Hebel

Die Vorlage druckt nur, was am Artikel gepflegt ist. Ein fehlender TARIC-Code fällt auf der Rechnung nicht als Fehler auf – die Zeile bleibt einfach leer. Prüfen Sie deshalb vor dem Start, welche Artikel, die Sie ins Drittland verkaufen, noch ohne Zolltarifnummer, Ursprungsland oder Gewicht sind. Das lässt sich gut über eine Artikelsuche in der Wawi oder einen Ameise-Export erledigen.

Druckvorlagen, Workflows und Datenbankabfragen greifen in der JTL-Wawi eng ineinander. Wenn Sie die Drittland-Rechnung an Ihre Abläufe anpassen oder die Stammdaten dafür prüfen lassen möchten, unterstützt PC-Mixx Sie als JTL-Servicepartner dabei.

Zu kompliziert?Lassen Sie uns das einrichten – angepasst an Ihre Vorlagen und Workflows.
Einrichten lassen

Häufige Fragen

Warum erscheinen TARIC und Ursprungsland bei EU-Kunden nicht?

Der Ausdruck prüft den Ländercode gegen eine Liste der EU-Länder. Nur wenn das Land nicht darin steht, werden die Zollangaben angehängt. Innerhalb der EU bleibt die Artikelbezeichnung unverändert.

Woher kommen TARIC-Code und Ursprungsland?

Aus den Artikelstammdaten der JTL-Wawi. In der Rechnungsvorlage stehen sie als InvoicePosition.TARIC und InvoicePosition.OriginCountry zur Verfügung. Ist ein Feld leer, wird die Zeile einfach weggelassen.

Ist die Abfrage per JTL_DirectQuery gefährlich?

Sie liest nur. Weil die Artikelnummer aber per Text in das SQL eingesetzt wird, bricht die Abfrage bei einem Hochkomma in der Artikelnummer. Besser ist es, über die interne Artikel-ID abzufragen oder das Hochkomma zu verdoppeln.

Ersetzt die Vorlage eine Zollberatung?

Nein. Die Vorlage druckt nur die Daten, die in Ihren Stammdaten stehen. Welche Angaben Ihre Sendungen tatsächlich brauchen, klären Sie mit Ihrem Steuerberater, Spediteur oder dem Zoll.

Lassen Sie uns sprechen.

Kurz anrufen oder schreiben – im kostenlosen Erstgespräch klären wir, wo und wie wir Sie am sinnvollsten unterstützen können.

FernwartungTeamViewer QuickSupport laden