XML-Beschreibung

image_pdfimage_print

wemalo-xml ist eine Schnittstelle zum Austausch von Stammdaten über einen XML-Austausch.

Produktstammdaten

Für den Abgleich von Produktstammdaten steht eine XML-Schnittstelle zur Verfügung.

Alle Formate haben die Bedingung, dass die SKU der Produkte eindeutig sein muss. Ferner wird empfohlen, auch die EAN-Nummern eindeutig zu pflegen, damit diese beim Scannen eindeutig ermittelt werden kann.

Datenabgleich für Fashion(Multivarianten)-Produkte

Wemalo bietet eine XML-Schnittstelle für den Austausch von Produktstammdaten an. Diese Schnittstelle kann für Fashion- als auch für Fulfillment-Mandanten eingesetzt werden. In letzterem Fall kann der Teil ab <Colours> freigelassen werden.

Für Fashion-Mandanten ermöglicht diese XML-Struktur eine Separierung zwischen verschiedenen Modellen, Farben und Größen erlaubt. Die SKU wird hierbei jeweils automatisch generiert.

Der folgende Ausschnitt zeigt eine Fashion-XML:

 

<?xml version="1.0" encoding="UTF-8"?>
 <productsType>
<Client ID=”10”> <!-- Beinhaltet die ID des Mandanten aus Wemalo (int) -->
    <Run>986</Run> <!-- Optional, für Fashion relevant (String) -->
            <Season>8</Season> <!-- Optional, für Fashion relevant (String) -->
    <Models>
<!-- ExtId ist leer, wenn es mehrere Farben/Größen gibt -->
       <Model Description=”ABCz 821” ExtId=””>
       <Name>Strickkleid</Name>
<ProductImageUrl>http://img.todownload.com</ProductImageUrl>
      <Design>12345</Design><!-- Optional, für Fashion relevant (String) -->
<SKU></SKU> <!-- bei mehreren Farben ist das Feld leer (String) -->
<EAN></EAN> <!-- bei mehreren Farben ist das Feld leer (String) -->
<EAN2></EAN2> <!-- bei mehreren Farben ist das Feld leer (String) -->
<EAN3></EAN3> <!-- bei mehreren Farben ist das Feld leer(String) -->
<GrossWeight></GrossWeight> <!-- Bruttogewicht in Gramm (double) -->
<NetWeight></NetWeight> <!-- Nettogewicht in Gramm (double) -->
<Depth></Depth> <!-- Tiefe in cm (double) -->
<Width></Width> <!-- Breite in cm (double) -->
<Height></Height> <!-- Höhe in cm (double) -->
<Volume></Volume> <!-- Volumen in cm (double) -->
      <Colours> <!-- der folgende Teil ist optional -->
        <Colour Description=”Blau”>
        <ColourID>12345</ColourID> <-- (String) -->
        <Item>
          <ExtId>4440169</ExtId> <-- (String) -->
          <Size>34</Size> <-- (String) -->
          <EAN>1234567891</EAN> <-- (String) -->
          <EAN2>7447744242</EAN2> <-- (String) -->
<ProductImageUrl>http://img.todownload.com</ProductImageUrl>
        </Item>
        <Item>
          <ExtId>4440170</ExtId>
          <Size>36</Size> <-- (String) -->
          <EAN>1234567892</EAN> <-- (String) -->
          <EAN2>7788995566</EAN2> <-- (String) -->
          <EAN3>7788995555</EAN3> <-- (String) -->
        </Item>
        <Item SKU=”ABCz 82112345 38 - manuelle SKU”>
          <ExtId>4440171</ExtId> <-- (String) -->
          <Size>38</Size> <-- (String) -->
          <EAN>1234567893</EAN> <-- (String) -->
        </Item>
</Colour>
</Colours>
</Model>
     </Models>
    </Client>
</productsType>

 

Das Produkt mit der EAN 1234567891 besteht aus der Modellbezeichnung „ABCz 821“, der Farbe Blau mit der ID 12345 und der Größe 34. Die zusammengesetzte SKU würde für dieses Produkt „ABCz 82112345 34“ lauten.

Alternativ kann die SKU auch auf Höhe eines Teils angegeben werden, siehe Beispiel in Größe 38.

Bei Produkten, die nicht über Farben und Größen verfügen, kann der obige Aufbau ebenfalls verwendet werden. SKU, EAN und ExtId sollten dann auf Modellebene gesetzt sein und Farben/Teile kann leer bleiben.

Der Dateiname muss products enthalten und auf xml enden, z.B. products_160517.xml.

Abgleich Wareneingang

Wareneingangsaufträge (bzw. die Avise) kann mittels XML importiert werden. Nach Vereinnahmung der Ware kann eine Rückmeldung stattfinden, wie viel der Ware tatsächlich vereinnahmt wurde. Zusätzlich können eingegangene Retouren zurück gemeldet werden.

Import Avise

Für den Import von Avise bietet sich XML als Importformat an. Im Folgenden wird der Aufbau der XML-Datei dargestellt:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IncomingStock>
  <Delivery DeliveryType="DISPATCHNOTICE" OrderNr="12345">
      <Haulier>Spedition 123</Haulier>
     <ETA>2015-08-06T14:20:52</ETA>
      <Storage>123</Storage> <!-- ID des Lagers in Wemalo -->
      <Client>10</Client> <!-- ID des Mandanten in Wemalo -->
      <Season>7</Season> <!-- optional, für Fashion relevant (String) -->
      <Products>
        <Item ExtId="4440170"><TargetQuantity>3</TargetQuantity></Item>
        <Item ExtId="4440171"><TargetQuantity>71</TargetQuantity></Item>
      </Products>
   </Delivery>
</IncomingStock>

Die Werte für die Felder Lager (Storage) und Mandant (Client) entstammen aus dem Wemalo-System und müssen für den Import durch das externe System eingetragen werden.

Rückmeldung Wareneingang

Wurde eine Warenanlieferung vereinnahmt, kann Wemalo automatisch eine Rückmeldedatei erstellen und an ein externes System übergeben.
Der folgende Ausschnitt zeigt eine Beispielvereinnahmung anhand von XML-Daten:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IncomingStock>
  <Delivery DeliveryType="STOCKORDER" OrderId="470" OrderNr="12345">
    <DeliveryDate>2015-08-06T14:20:52</DeliveryDate>
    <Storage>123</Storage> <!-- (int) -->
    <Client>10</Client> <!-- (int) -->
    <Season>7</Season> <!-- (string) -->
    <Products>
      <Item ExtId="4440170">
        <TargetQuantity>3</TargetQuantity> <!-- (int) -->
        <ActualQuantity>3</ActualQuantity> <!-- (int) -->
        <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
      </Item>
      <Item ExtId="4440171">
        <TargetQuantity>71</TargetQuantity>
        <ActualQuantity>68</ActualQuantity>
        <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
      </Item>
      <Item ExtId="4440171">
        <TargetQuantity>0</TargetQuantity>
        <ActualQuantity>3</ActualQuantity>
        <Attribute ID=”456” ExtCode=”87445”>B-Ware</Attribute>
      </Item>
    </Products>
  </Delivery>
</IncomingStock>

Im Wesentlichen basiert die Rückmeldung auf der Avise, doch werden die Ist-Mengen und das Lieferdatum ergänzt und mit übermittelt. Im Feld OrderId wird die interne ID des Wareneingangsauftrages aus dem Wemalo-System übertragen. Das Feld Merkmal (Attribute) gibt an mit welchem Merkmal (z.B. 1. Wahl) die Ware eingebucht wurde. Dabei wird davon ausgegangen, dass die angegebenen Soll-Werte sich jeweils auf 1. Wahl-Artikel (bzw. das für den Mandanten hinterlegte Standard-Merkmal) beziehen. Um die Zuordnung zu Merkmalen in vorgelagerte Systemen zu ermöglichen, wird neben der Wemalo-ID auch noch ein Code mit übergeben, der in Wemalo hinterlegt werden kann. Dies kann z.B. die ID des Merkmals im vorgelagerten System oder ein anderes Kennzeichen zur Identifizierung des Merkmals sein.

Rückmeldung Retoure

Für Wemalo stellt sich eine Retoure als eine besondere Art von Wareneingang dar. Wird eine Retoure übermittelt, so wird in das Feld Lieferungsart (DeliveryType) RETOURNSHIPMENT eingetragen, andernfalls STOCKORDER bzw. DISPATCHNOTICE für Avise. Die Felder Soll- und Ist-Menge sind bei Retouren immer gleich befüllt, auch wenn verschiedene Merkmale zurückgemeldet werden.

Abgleich Warenausgang

Zunächst können Lieferscheine bzw. Warenausgangsaufträge an Wemalo übergeben werden. Im Laufe des Workflows generiert Wemalo Meldungen über versendete Pakete und meldet Trackingnummern zurück.

Import Aufträge

Der folgende Ausschnitt zeigt anhand eines Beispiels, wie die Importdatei für Warenausgangsaufträge aussehen kann.

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <ordersType>
   <Order OrderNr="ME2172" OrderExtId=”ME2172”>
     <HeaderData>
       <Run>7</Run> <!-- optional, nur für Fashion relevant (string) -->
       <Client>10</Client>
       <Storage>123</Storage>
       <ETD>2015-08-06T14:20:52</ETD>
       <DispatcherProfile ID=”17” ExtId=”2182”>17</DispatcherProfile> <!-- es kann entweder die ID aus dem Wemalo-System, oder ein Code/eine externe ID angegeben werden, welche in Wemalo zum Matching hinterlegt werden kann -->
       <PickingNotice>Bitte EAN-Tags überprüfen und gr. Pakete verwenden</PickingNotice>
       <TotalPriceNetCent>10012</TotalPriceNetCent> <!-- für 100,12 € -->
       <TotalPriceGrossCent>10512</TotalPriceGrossCent> <!-- für 105,12 € -->
       <TotalVatCent>512</TotalVatCent>
       <TotalInvoiceCent>10512</TotalInvoiceCent>
       <Currency>EUR</Currency>
    </HeaderData>
     <Receiver CustomerNr="122212"> <!-- die CustomerNr ist die Kundennummer des Empfängers und wird als String übermittelt -->
       <Name1>Mustermann AG</Name1>
       <Name2>z.Hd. Hans Mustermann</Name2>
       <Name3 />
       <Str>Musterallee</Str> <!-- Straße -->
       <StrNr>27 d</StrNr> <!-- Hausnummer als String -->
       <CountryCode>DE</CountryCode>
       <Country>Germany</Country>
       <Zip>11111</Zip> <!-- Postleitzahl als String -->
       <City>Musterstadt</City>
       <Tel>0123456789</Tel> <!-- Telefonnummer des Empfängers als String -->
      <Email>example@wemalo.com</Email> <!-- E-Mail-Adresse des Empfängers -->
     </Receiver>
    <SubReceiver> <!-- wird der erste Empfänger nicht angetroffen, soll die Ware an den Vertreter geschickt werden. Dies wird nicht durch alle Versanddienstleister unterstützt. Die Angaben sind optional -->
      <Name1>Mustermann AG</Name1>
       <Name2>z.Hd. Hans Mustermann</Name2>
       <Name3 />
       <Str>Musterallee</Str> <!-- Straße -->
       <StrNr>27 d</StrNr> <!-- Hausnummer als String -->
       <CountryCode>DE</CountryCode>
       <Country>Germany</Country>
       <Zip>11111</Zip> <!-- Postleitzahl als String -->
       <City>Musterstadt</City>
       <Tel>0123456789</Tel> <!-- Telefonnummer des Empfängers als String -->
      <Email>example@wemalo.com</Email> <!-- E-Mail-Adresse des Empfängers -->
    </SubReceiver>
    <AltReceiver> <!-- der alternative Empfänger kann verwendet werden, um z.B. Sammelbestellungen zu organisieren. Die Angaben sind optional --> 
      <Name1>Mustermann AG</Name1>
       <Name2>z.Hd. Hans Mustermann</Name2>
       <Name3 />
       <Str>Musterallee</Str> <!-- Straße -->
       <StrNr>27 d</StrNr> <!-- Hausnummer als String -->
       <CountryCode>DE</CountryCode>
       <Country>Germany</Country>
       <Zip>11111</Zip> <!-- Postleitzahl als String -->
       <City>Musterstadt</City>
       <Tel>0123456789</Tel> <!-- Telefonnummer des Empfängers als String -->
      <Email>example@wemalo.com</Email> <!-- E-Mail-Adresse des Empfängers -->
    </AltReceiver>
     <Article>
       <Item SKU=”test1” ExtId="4440170" PositionId=”1213”> <!-- die externe ID des Produkts aus dem vorgelagerten System (String) -->
         <Quantity>3</Quantity> <!-- int -->
         <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
       </Item>
       <Item SKU=”test2” ExtId="4440171" PositionId=”1213”>
         <Quantity>1</Quantity> <!-- int -->
         <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
       </Item>
       <Item SKU=”test3” ExtId="4440171" PositionId=”1213”>
         <Quantity>5</Quantity> <!-- int -->
         <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
       </Item>
     <Article>
   </Order>
 </ordersType>

 

Der Dateiname muss goodsorders enthalten und auf xml enden, z.B. goodsorders_160517.xml.

Rückmeldung versendeter Pakete

Bei der Rückmeldung von versendeten Paketen wird ein Bezug zum Lieferschein, dem verwendeten Versandprofil und der Trackingnummer hergestellt. Außerdem wird der Paketinhalt das Gesamtgewicht des Paketes in Gramm übertragen.

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Orders>
  <Order ID="47453" OrderNr="ME2172" Stauts=”SENT”>
    <OrderParcel ID="122235" Number="h7zUi"> <!-- Number: interner Barcode des Pakets -->
      <DeliveryDate>2015-08-06T14:20:52</DeliveryDate>
      <Weight>2000</Weight> <!-- Paketgewicht in Gramm (int) -->
      <TrackingNumber>T123456789</TrackingNumber> <!-- String -->
      <DispatcherProfile ID=”17” ExtId=”2182”>17</DispatcherProfile>
<!-- Name des Versandprofils oder der Spedition bei Speditionsversand -->
      <Profilname>ABC Weltweit<Profilname>
      <Article>
        <Item ExtId="4440170">
          <Quantity>2</Quantity>
          <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
        </Item>
        <Item ExtId="4440171">
          <Quantity>1</Quantity>
          <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
        </Item>
        <Item ExtId="4440171">
          <Quantity>5</Quantity>
          <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
        </Item>
      <Article>
    </OrderParcel>
    <OrderParcel ID="122236" Number="j8uZs">
      <DeliveryDate>2015-08-08T17:11:09</DeliveryDate>
      <Weight>4000</Weight>
      <DispatcherProfile>22</DispatcherProfile>
      <Profilname>ABC Express<Profilname>
      <Article>
        <Item ExtId="4440170">
          <Quantity>1</Quantity>
          <Attribute ID=”762” ExtCode=”21782”>1. Wahl</Attribute>
        </Item>
      <Article>
    </OrderParcel>
   </Order>
 </Orders>

Es werden die versendeten Pakete übermittelt. Im Tag Order ist zu sehen, in welchem Status sich der Auftrag befindet. Dabei steht PARTIALLY für einen teilweise versendeten Auftrag und SENT für einen vollständigen Versand.

Abgleich Inventur

Inventureinbuchungen und -ausbuchungen können von Wemalo an ein vorgelagertes System überspielt werden. Der Aufbau der XML-Datei sieht wie folgt aus:

 

<?xml version="1.0" encoding="UTF-8"?>
<Inventory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="inventory.xsd">
  <InventoryOrder Client="7" ID="4" Storage="5">
    <Product ID="1234" ExtID="abc123">
      <SKU>SKU-12-122</SKU>
      <Quantity>1</Quantity>
    </Product>
    <Product ID="2222" ExtID="abc245">
      <SKU>SKU-11-554</SKU>
      <Quantity>-3</Quantity>
    </Product>
  </InventoryOrder>
</Inventory>

Automatischer Datenimport/-export

Mit unserem Modul Wemalo XML kann ein automatischer Datenaustausch eingerichtet werden.

 

Dabei können die folgenden Daten ausgetauscht werden:

 

Der Ablauf sieht wie folgt aus:

  • In regelmäßigen Abständen (z.B. alle 15 Minuten) sieht Wemalo auf einem FTP-Server nach, ob es neue Dateien (Produkte oder Warenausgangsaufträge) gibt, die importiert werden müssen.
  • Diese XML-Dateien werden heruntergeladen und in Wemalo eingespielt.
  • Anschließend erstellt Wemalo für das Zurückspielen von Informationen (versendete Pakete oder Bestandsänderungen) ebenfalls XML-Dateien und lädt diese auf den FTP-Server hoch.

Schema-Dateien für XML-Schnittstelle

Produkte

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Products" type="ProductsType" />
  <xsd:complexType name="ProductsType">
    <xsd:sequence>
      <xsd:element name="Client" type="ClientType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ClientType">
    <xsd:sequence>
      <xsd:element name="Run" type="xsd:string" />
      <xsd:element name="Season" type="xsd:string" />
      <xsd:element name="Models" type="ModelsType" />
    </xsd:sequence>
    <xsd:attribute name="ID" type="xsd:int" />
  </xsd:complexType>
  <xsd:complexType name="ModelsType">
    <xsd:sequence>
      <xsd:element name="Model" type="ModelType" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ModelType">
    <xsd:sequence>
      <xsd:element name="Name" type="xsd:string" />
      <xsd:element name="Design" type="xsd:string" />
      <xsd:element name="SKU" type="xsd:string" />
      <xsd:element name="EAN" type="xsd:string" />
      <xsd:element name="EAN2" type="xsd:string" />
      <xsd:element name="EAN3" type="xsd:string" />
      <xsd:element name="GrossWeight" type="xsd:double" />
      <xsd:element name="NetWeight" type="xsd:double" />
      <xsd:element name="Depth" type="xsd:double" />
      <xsd:element name="Width" type="xsd:double" />
      <xsd:element name="Height" type="xsd:double" />
      <xsd:element name="Volume" type="xsd:double" />
      <xsd:element name="Colours" type="ColoursType" />
      <xsd:element name="OriginCountry" type="xsd:string" minOccurs="0" />
      <xsd:element name="SupplierNumber" type="xsd:string" minOccurs="0" />
      <xsd:element name="FactoryNumber" type="xsd:string" minOccurs="0" />
      <xsd:element name="ProducerName" type="xsd:string" minOccurs="0" />
      <xsd:element name="ProductImage" type="ProductImage" />
    </xsd:sequence>
    <xsd:attribute name="Description" type="xsd:string" />
    <xsd:attribute name="ExtId" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="ProductImage">
   <xsd:simpleContent>
   <xsd:extension base="xsd:base64Binary">
   <xsd:attribute name="ImageName" type="xsd:string" />
   <xsd:attribute name="ImageUrl" type="xsd:string" />
   <xsd:attribute name="ImageSize" type="xsd:int" />
   <xsd:attribute name="ImageMimeType" type="xsd:string" />
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ColoursType">
    <xsd:sequence>
      <xsd:element name="Colour" type="ColourType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ColourType">
    <xsd:sequence>
      <xsd:element name="ColourID" type="xsd:string" />
      <xsd:element maxOccurs="unbounded" name="Item" type="ItemType" />
    </xsd:sequence>
    <xsd:attribute name="Description" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="ItemType">
    <xsd:sequence>
      <xsd:element name="ExtId" type="xsd:string" />
      <xsd:element name="Size" type="xsd:string" />
      <xsd:element name="EAN" type="xsd:string" />
      <xsd:element name="EAN2" type="xsd:string" />
      <xsd:element name="ProductImageUrl" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Avise/vereinnahmte Ware

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="IncomingStock" type="IncomingStockType" />
  <xsd:complexType name="IncomingStockType">
    <xsd:sequence>
      <xsd:element name="Delivery" type="DeliveryType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DeliveryType">
    <xsd:sequence>
      <xsd:element name="DeliveryDate" type="xsd:dateTime" />
      <xsd:element name="Storage" type="xsd:int" />
      <xsd:element name="Client" type="xsd:int" />
      <xsd:element name="Season" type="xsd:string" />
      <xsd:element name="Products" type="ProductsType" />
    </xsd:sequence>
    <xsd:attribute name="DeliveryType" type="xsd:string" />
    <xsd:attribute name="OrderId" type="xsd:int" />
    <xsd:attribute name="OrderNr" type="xsd:int" />
    <xsd:attribute name="ExtId" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="ProductsType">
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" name="Item" type="ItemType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ItemType">
    <xsd:sequence>
      <xsd:element name="TargetQuantity" type="xsd:int" />
      <xsd:element name="ActualQuantity" type="xsd:int" />
      <xsd:element name="Attribute" type="AttributeType" />
    </xsd:sequence>
    <xsd:attribute name="ExtId" type="xsd:string" />
    <xsd:attribute name="SKU" type="xsd:string" />
    <xsd:attribute name="rowOrderId" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="AttributeType">
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="ExtCode" type="xsd:int" />
  </xsd:complexType>
</xsd:schema>

Warenausgangsaufträge / Lieferscheine

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Orders" type="OrdersType" />
  <xsd:complexType name="OrdersType">
    <xsd:sequence>
      <xsd:element name="Order" type="OrderType" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OrderType">
    <xsd:sequence>
      <xsd:element name="HeaderData" type="HeaderDataType" />
      <xsd:element name="Receiver" type="ReceiverType" />
      <xsd:element name="SubReceiver" type="SubReceiverType" />
      <xsd:element name="AltReceiver" type="AltReceiverType" />
      <xsd:element name="Article" type="ArticleType" />
    </xsd:sequence>
    <xsd:attribute name="OrderNr" type="xsd:string" />
    <xsd:attribute name="OrderExtId" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="ArticleType">
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" name="Item" type="ItemType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ItemType">
    <xsd:sequence>
      <xsd:element name="Quantity" type="xsd:int" />
      <xsd:element name="Attribute" type="AttributeType" />
    </xsd:sequence>
    <xsd:attribute name="ExtId" type="xsd:string" />
    <xsd:attribute name="SKU" type="xsd:string" />
    <xsd:attribute name="PositionId" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="AttributeType">
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="ExtCode" type="xsd:int" />
  </xsd:complexType>
  <xsd:complexType name="AltReceiverType">
    <xsd:sequence>
      <xsd:element name="Name1" type="xsd:string" />
      <xsd:element name="Name2" type="xsd:string" />
      <xsd:element name="Name3" type="xsd:string" />
      <xsd:element name="Str" type="xsd:string" />
      <xsd:element name="StrNr" type="xsd:string" />
      <xsd:element name="CountryCode" type="xsd:string" />
      <xsd:element name="Country" type="xsd:string" />
      <xsd:element name="Zip" type="xsd:string" />
      <xsd:element name="City" type="xsd:string" />
      <xsd:element name="Tel" type="xsd:string" />
      <xsd:element name="Email" type="xsd:string" />
      <xsd:element name="State" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SubReceiverType">
    <xsd:sequence>
      <xsd:element name="Name1" type="xsd:string" />
      <xsd:element name="Name2" type="xsd:string" />
      <xsd:element name="Name3" type="xsd:string" />
      <xsd:element name="Str" type="xsd:string" />
      <xsd:element name="StrNr" type="xsd:string" />
      <xsd:element name="CountryCode" type="xsd:string" />
      <xsd:element name="Country" type="xsd:string" />
      <xsd:element name="Zip" type="xsd:string" />
      <xsd:element name="City" type="xsd:string" />
      <xsd:element name="Tel" type="xsd:string" />
      <xsd:element name="Email" type="xsd:string" />
      <xsd:element name="State" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ReceiverType">
    <xsd:sequence>
      <xsd:element name="Name1" type="xsd:string" />
      <xsd:element name="Name2" type="xsd:string" />
      <xsd:element name="Name3" type="xsd:string" />
      <xsd:element name="Str" type="xsd:string" />
      <xsd:element name="StrNr" type="xsd:string" />
      <xsd:element name="CountryCode" type="xsd:string" />
      <xsd:element name="Country" type="xsd:string" />
      <xsd:element name="Zip" type="xsd:string" />
      <xsd:element name="City" type="xsd:string" />
      <xsd:element name="Tel" type="xsd:string" />
      <xsd:element name="Email" type="xsd:string" />
      <xsd:element name="State" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute name="CustomerNr" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="HeaderDataType">
    <xsd:sequence>
      <xsd:element name="Run" type="xsd:string" />
      <xsd:element name="Client" type="xsd:int" />
      <xsd:element name="Storage" type="xsd:int" />
      <xsd:element name="ETD" type="xsd:dateTime" />
      <xsd:element name="DispatcherProfile" type="DispatcherProfileType" />
      <xsd:element name="PickingNotice" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DispatcherProfileType">
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="ExtId" type="xsd:string" />
  </xsd:complexType>
</xsd:schema>

Versendete Pakete

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Orders" type="OrdersInfoType" />
  <xsd:complexType name="OrdersInfoType">
    <xsd:sequence>
      <xsd:element name="Order" type="OrderInfoType" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OrderInfoType">
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" name="OrderParcel" type="OrderParcelType" />
    </xsd:sequence>
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="OrderNr" type="xsd:string" />
    <xsd:attribute name="ExtID" type="xsd:string" />
    <xsd:attribute name="Status" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="OrderParcelType">
    <xsd:sequence>
      <xsd:element name="DeliveryDate" type="xsd:dateTime" />
      <xsd:element name="Weight" type="xsd:int" />
      <xsd:element name="TrackingNumber" type="xsd:string" />
      <xsd:element name="DispatcherProfile" type="DispatcherProfileType" />
      <xsd:element name="Article" type="ArticleType" />
    </xsd:sequence>
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="Number" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="ArticleType">
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" name="Item" type="ItemType" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ItemType">
    <xsd:sequence>
      <xsd:element name="Quantity" type="xsd:int" />
      <xsd:element name="Attribute" type="AttributeType" />
    </xsd:sequence>
    <xsd:attribute name="ExtId" type="xsd:string" />
    <xsd:attribute name="SKU" type="xsd:string" />
    <xsd:attribute name="PosID" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="AttributeType">
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="ExtCode" type="xsd:int" />
  </xsd:complexType>
  <xsd:complexType name="DispatcherProfileType">
    <xsd:attribute name="ID" type="xsd:int" />
    <xsd:attribute name="ExtId" type="xsd:string" />
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="DispatcherName" type="xsd:string" />
  </xsd:complexType>
</xsd:schema>

Inventur

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Inventory">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="InventoryOrder" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="InventoryOrder">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Product" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="Client" use="required" type="xs:int"/>
      <xs:attribute name="ID" use="required" type="xs:int"/>
      <xs:attribute name="Storage" use="required" type="xs:int"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="InventoryDate" type="xs:string"/>
  <xs:element name="Product">
    <xs:complexType>
      <xs:sequence>
       <xs:element name="SKU" type="xs:string" />
        <xs:element name="Quantity" type="xs:int" />
      </xs:sequence>
      <xs:attribute name="ExtId" type="xs:string"/>
      <xs:attribute name="ID" use="required" type="xs:int" />
    </xs:complexType>
  </xs:element>
</xs:schema>

Sidebar