Zum Hauptinhalt springen

cXML – Versand & Steuer

Die Header-Blöcke <Shipping> und <Tax> der PunchOutOrderMessage sind seit 3.7.500 / 3.6.300 frei konfigurierbar. Jeder der beiden Blöcke hat im cXML-System einen eigenen Tab: Versand und Steuer.

Beide Blöcke werden genau einmal pro Übertragung in den PunchOutOrderMessageHeader geschrieben — direkt nach <Total>, nicht pro Warenkorbposition.

Voraussetzung​

Ein Block wird nur erzeugt, wenn der zugehörige Schalter im Tab Allgemein aktiv ist:

SchalterErzeugt
Versand anhängen<Shipping>
Steuer anhängen<Tax>

Siehe System anlegen & Allgemein.

Aufbau eines Feldbaums​

Anders als die Positionsfelder sind Versand und Steuer als Baum aufgebaut: ein fester Wurzelknoten mit beliebig vielen Kindknoten.

Shipping ← Wurzelknoten, nicht änderbar
|-- Money ← Kindknoten, frei konfigurierbar
+-- Description

Der Wurzelknoten (Shipping bzw. Tax) ist fest vorgegeben und lässt sich nicht umbenennen oder löschen. Alle Kindknoten sind frei konfigurierbar — mit denselben Eigenschaften wie die Positionsfelder (Datenfeld, Fallback 1–3, Standardwert, Position, Filter) und zusätzlich einem optionalen Attribut:

EigenschaftBeschreibung
AttributName des XML-Attributs, z.B. currency oder xml:lang
AttributtypNamespace für Attribute wie xml:lang, sonst Standard
AttributzugriffDatenfeld, aus dem der Attributwert gelesen wird
AttributwertStatischer Wert, falls der Attributzugriff leer bleibt

Auslieferungszustand​

Beide Bäume werden bei der Installation angelegt und bilden exakt die früher fest verdrahtete Ausgabe ab.

Versand​

KnotenDatenfeldAttributFilter
MoneyshippingCostsTotalPricecurrency → currencyIsoCode (Standard)Nachkommastellen des Systems
DescriptionshippingNamexml:lang → languageShortCode (Namespace)–

Steuer​

KnotenDatenfeldAttributFilter
MoneycartTaxAmountcurrency → currencyIsoCode (Standard)Nachkommastellen des Systems
Description–xml:lang → languageShortCode (Namespace)–

Die Description des Steuer-Blocks ist im Auslieferungszustand leer — das entspricht dem bisherigen Verhalten. Soll dort ein Text stehen, kann dem Knoten ein Datenfeld oder ein Standardwert zugewiesen werden.

Beispielausgabe​

<PunchOutOrderMessageHeader operationAllowed="create" quoteStatus="final">
<Total>
<Money currency="EUR">119.00</Money>
</Total>
<Shipping>
<Money currency="EUR">4.90</Money>
<Description xml:lang="de">Standardversand</Description>
</Shipping>
<Tax>
<Money currency="EUR">19.00</Money>
<Description xml:lang="de"/>
</Tax>
</PunchOutOrderMessageHeader>
Bestehende Systeme

Eine Migration legt beide Bäume für jedes bereits vorhandene cXML-System an. Die erzeugte Ausgabe bleibt dadurch zunächst unverändert — sie ändert sich erst, wenn die Bäume im Admin bearbeitet werden.

Brutto oder netto?

<Shipping><Money> liefert über shippingCostsTotalPrice den Bruttobetrag. Erwartet das Beschaffungssystem einen Nettowert, muss das Datenfeld des Money-Knotens auf shippingCostsNetPrice umgestellt werden.

Versandbezeichnung​

shippingName liefert den Namen aus der Versandart-Erweiterung; ist dort nichts gepflegt, wird der Name der Versandart verwendet.

Soll ausschließlich der übersetzte Shopware-Name verwendet werden, steht dafür das Datenfeld shippingMethodTranslatedName zur Verfügung. Es ignoriert die Versandart-Erweiterung bewusst, sodass sich beide Felder als Primärfeld und Fallback kombinieren lassen.

Weiterführend​