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:
| Schalter | Erzeugt |
|---|---|
| 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:
| Eigenschaft | Beschreibung |
|---|---|
| Attribut | Name des XML-Attributs, z.B. currency oder xml:lang |
| Attributtyp | Namespace für Attribute wie xml:lang, sonst Standard |
| Attributzugriff | Datenfeld, aus dem der Attributwert gelesen wird |
| Attributwert | Statischer 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
| Knoten | Datenfeld | Attribut | Filter |
|---|---|---|---|
Money | shippingCostsTotalPrice | currency → currencyIsoCode (Standard) | Nachkommastellen des Systems |
Description | shippingName | xml:lang → languageShortCode (Namespace) | – |
Steuer
| Knoten | Datenfeld | Attribut | Filter |
|---|---|---|---|
Money | cartTaxAmount | currency → 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>
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.
<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
- Felder konfigurieren — inklusive der verfügbaren Filter
- Alle Datenfelder
- Versandarten