Formatbeschreibung: OrderResponse

Allgemeines

Das Dokument OrderResponse dient zum Austausch von mehreren Statussen der Bestellungen vom Lieferanten zum Kundensystem. Die verschiedenen möglichen Stufen können sein:

1:Bestellung akzeptiert
2:Bestellung nicht akzeptiert - mit definiertem Fehlercode und Fehlernachricht

Aufbau des Formates für Austausch von Auftragsstatussen (OrderResponse)

Das Format für den Statusaustausch basiert auf den beiden Formaten Catalog.xml und Order.xml.

Für eine einfache Realisierung des Statusaustauschs ist nur eine kleine Anzahl von Informationen erforderlich. Für die verschiedenen Anwendungsfällen können zusätzlich weitere Informationen übergeben werden.

Eine Auftragsbestätigung bezieht sich immer auf genau eine Bestellung mit beliebig vielen Auftragspositionen.

Die Validierung erfolgt auf Basis der jeweils aktuellsten Schema-Version. Diese ist unter folgender Url erreichbar:

https://templates.look4optics.com/v_1_13/orderresponse.xsd

Das Element OrderResponse

Das Element OrderResponse besteht mindestens aus den Attributen clientOrderID, clientID und supplierID sowie den Elementen OrderError und OrderItems. Das Element OrderItems kann aus einem oder mehreren Elementen OrderItem bestehen.

Das Element OrderResponse besitzt folgende Attribute:

Attribute Type / Use Description / Example
clientID xs:string required ID des Kunden, Kundennummer beim Lieferanten (z.B. 012345)
clientName xs:string optional Kundenname (z.B. Schmidt Optik GmbH)
clientOrderID xs:string required Auftragsnummer beim Kunden (z.B. 00023-345785)
clientSupplierID xs:string optional Eindeutige ID des Lieferanten beim Kunden (z.B. Woehlk-123456)
currency xs:string optional Währung (z.B. EURO)
generationDate xs:dateTime required Generierungsdatum der Statusdatei (z.B. 2011-02-11T11:48:34)
generatorInfo xs:string optional Beschreibung der Generierungssoftware (z.B. Look4 Webservices Test)
orderDate xs:dateTime optional Empfangsdatum des Auftrags (z.B. 2011-02-11T11:48:34)
orderResponseID xs:string optional Eindeutige Order Response Belegnummer (z.B. OR-20110211105912-123)
schemaMajorVersionID xs:integer required Hauptversionsnummer für die Beschreibung der aktuellen Schema-Version (z.B. 1)
schemaMinorVersionID xs:integer required Unterversionsnummer für die Beschreibung der aktuellen Schema-Version (z.B. 0)
supplierID xs:string required Eindeutige ID des Lieferanten (z.B. DE813058544)
supplierName xs:string optional Name des Lieferanten (z.B. Woehlk)

Das Element OrderError

Das Element OrderError besitzt die beiden Attribute errorCode und errorDescription. Ist dieses Element vorhanden, so ist die gesamte Bestellung ungültig. Die Fehlerursache wird hier als Fehlercode und Fehlerbeschreibung zurückgemeldet.

Liste der Fehlermeldungen für Element OrderError

Hier handelt es sich um syntaktische oder logische Fehler innerhalb des Elements Order.

Attribut Beschreibung Typ Beispiel
errorCode Fehlercode optional 5
errorDescription Fehlerbeschreibung optional Keine gültige Bestellposition vorhanden

Liste der dazugehörigen Fehlerbeschreibungen

Wert Zugehörige Fehlerbeschreibung
1 Adressen: addressID nicht eindeutig
2 Einzelne Auftragsposition (OrderItem) referenziert unbekannte Adresse
3 Kunde ist beim Hersteller / ShopService nicht bekannt (falls nur bekannte Kunden akzeptiert werden)
4 Falsche SupplierID (Lieferant im Empfängersystem nicht bekannt)
5 Keine einzige (gültige) Bestellposition vorhanden
6 Nicht spezifizierter Fehler auf Positionsebene
7 Nicht spezifizierter Fehler in Bestellung

Das Element OrderItems

Das Element OrderItems besteht aus einem oder mehreren Elementen OrderItem (Auftragsposition).

Das Element OrderItem

Das Element OrderItem beinhaltet die Statusmeldung für eine Auftragsposition.

Das Element OrderItem besitzt folgende Attribute:

Attribute Type / Use Description / Example
articleID xs:string optional Artikel ID (z.B. A2780)
articleName xs:string optional Artikelbezeichnung (z.B. Contact Life Spheric Box)
clientArticleID xs:string optional Artikelnummer beim Kunden (z.B. CL-CLSB-1234)
clientArticleName xs:string optional Artikelbezeichnung beim Kunden (z.B. Woehlk - Contact Life Spheric Box)
clientOrderItemID xs:string required ID der Bestellposition bei der AO-Software des Kunden (z.B. LOOK4-WLK-01)
deliveryDate xs:dateTime optional Voraussichtliches Lieferdatum (z.B. 2015-04-22T09:00:00)
deliveryQuantity xs:integer optional Gelieferte Menge (z.B. 1)
eanCode xs:string optional EAN-Code, 13 Ziffern (z.B. 7234567891234)
errorCode xs:NMTOKEN optional Definierter Fehlercode (z.B. 4)
errorDescription xs:string optional Fehlermeldung als Text (z.B. Article 'A2780': Selected DeliveryRange doesnt contain feature 'Diameter' with value '15.6'.)
netPurchasePrice xs:decimal optional Netto-Einkaufspreis (z.B. 20.00)
orderedQuantity xs:integer optional Bestellte Menge (z.B. 1)
orderItemStatus xs:NMTOKEN required Mitzuteilender Auftragsstatus, siehe Werteliste (z.B. 0)
orderItemType xs:NMTOKEN optional Positionsart: standard, freeOfCharge, returns (z.B. standard)
orderTransmissionType xs:NMTOKEN optional Bestellung Übermittlungstyp, Standardwerte: fax, phone, onlineShop, edi (z.B. edi)
referenceName xs:string optional Kommission beim Kunden (z.B. Lager)
shipmentDate xs:dateTime optional Versanddatum (z.B. 2015-04-22T09:00:00)
shipmentType xs:string optional Versandart (z.B. postal)
supplierOrderID xs:string optional Auftragsnummer beim Lieferanten (z.B. 2011-159874)
supplierOrderItemID xs:string optional ID der Bestellposition beim Lieferanten (z.B. Smith-WLK-01)
unitOfMeasure xs:NMTOKEN optional Bestellmengeneinheit, Standardwerte: pieces, boxes, bottles (z.B. boxes)
upcCode xs:string optional UPC-Code, 12 Ziffern (z.B. 723456789123)

Standardwerte für das Attribut orderItemType

standard:Wenn Attribut nicht angegeben, wird Standard verwendet
freeOfCharge:Kostenlose Position
returns:Retouren-Position

Standardwerte für das Attribut orderTransmissionType

phone:Telefonische Bestellung
fax:Fax-Bestellung
onlineShop:Bestellung über online-Shop
edi:Elektronische Bestellung zwischen zwei Warenwirtschaftssystemen (EDI-Bestellung)

Standardwerte für das Attribut orderItemStatus

0:Submitted (Bestellung/OrderItem vom Empfangssystem angenommen)
1:Transmitted (Bestellung/OrderItem wurde an Herstellersystem übermittelt)
2:Received (Herstellersystem hat die Bestellposition/OrderItem erhalten)
3:In Progress (Bestellposition beim Hersteller in Bearbeitung)
4:DeliveryDate (Mitteilung des voraussichtlichen Liefertermins)
5:Delivered (Bestellung wurde vom Hersteller versandt)
8:Modified (Beim Hersteller geändert, z.B. 3x3er Boxen statt 1x9er Box)
9:Cancelled (wenn Auftrag nach Übertragung vom Hersteller storniert wurde)
10:Error (Fehler bei Auftragsbearbeitung - Definierte Fehlercodes zur autom. Auswertung und Fehlerbeschreibung als Text (Anzeige))

Liste Fehlercodes für Element OrderItems

Hier handelt es sich um Fehler in Bezug auf einzelne Auftragspositionen:

1:Artikel für Auftragsposition (OrderItem) im Katalog nicht gefunden –> Ursache veralteter Katalog
2:Ungültige Konfiguration: unbekanntes Feature –> Ursache ebenfalls veralteter Katalog
3:Ungültige Konfiguration: ausgewählter Lieferbereich hat bestimmtes Feature nicht –> Ursache ebenfalls veralteter Katalog
4:Ungültige Konfiguration: fehlerhafter Wert
5:Ungültige Konfiguration: fehlendes Feature („unvollständige Konfiguration“) –> Ursache ebenfalls veralteter Katalog
6:Ungültige Artikelanzahl
7:Kunde beim Empfangssystem bekannt, darf aber bestimmte Artikel nicht bestellen

Stufen der Auftragsprüfung und zugehörige Statusmeldungen

Die Prüfung der Aufträge beim Empfangssystem erfolgt auf drei Ebenen, was entsprechende Antwort-Nachrichten erfordert.

Allgemeine Prüfung

Zuerst wird die XML-Order generell geprüft. Wird hier ein Fehler gefunden, (kein XML / kein (gültiges/validierendes) XML / kein Schema referenziert), d.h., die ganze Bestellung ist ungültig, so wird eine Fehlermeldung an die Absenderadresse gesandt.

Prüfung des Elements Order

Dann erfolgt die Prüfung auf Auftragsebene. Tritt hier ein Fehler auf, so wird eine Fehlermeldung in der OrderResponse versendet.

Prüfung des Elements OrderItem

Wurde kein Fehler auf Auftragsebene gefunden, so erfolgt die Prüfung für jede Bestell- position. Ist eine Bestellposition nicht gültig, so wird ebenfalls eine Fehlermeldung versendet. Auch hier wird an die erste gefundene Antwortadresse geantwortet.

Alle vom Empfängersystem übernommenen Auftragspositionen werden in einer Auftrags- bestätigung bestätigt. Diese enthält für jede Bestellposition (order item) eine Bestätigungszeile.

Auswertung von Status-/Fehlermeldungen

Generell wird davon ausgegangen, dass für jeden Auftrag eine Statusmeldung versandt wird. Erhält das Sendesystem keine Statusmeldung (OrderResponse), so ist die Bestellung nicht beim Hersteller angekommen. Fehlerhafte Bestellpositionen und Status-Updates können auch getrennt versendet werden, das heißt eine OrderResponse muss nicht zwangsweise immer alle Bestellpositionen für einen Auftrag beinhalten (Fehler oder Statusupdates).

Die Auswertung der Statusmeldungen muss ebenfalls mehrstufig erfolgen.

Vorgehensweise:

  1. Keine OrderResponse –> Auftrag nicht beim Hersteller angekommen
  2. OrderResponse mit Element OrderError –> Auftrag ist generell ungültig bzw. fehlerhaft. Das Element Order beinhaltet den ErrorCode und ErrorDescription zur Fehleranalyse
  3. OrderResponse mit Element OrderItems –> Die OrderResponse beinhaltet die Auftragsstatusse für einzelne Auftragspositionen (OrderItems). Fehlerhafte Positionen beinhalten Fehlercode und Fehlerbeschreibung für eine automatische Auswertung.

Beispiel-XML-Code für Statusaustauschdateien

Beispiel 1 (Fehlermeldung gesamter Auftrag)

<OrderResponse xsi:noNamespaceSchemaLocation=
  "https://templates.look4optics.com/v_1_13/orderresponse.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  clientOrderID="00023-345785" orderDate="2017-02-11T14:35:57.3850000+01:00"
  supplierID="DE813058544" supplierName="Woehlk" clientID="00011"
  clientName="Testkunde11" generationDate="2017-02-11T14:35:57.6350000+01:00"
  schemaMajorVersionID="1" schemaMinorVersionID="13" >
    <Order clientOrderID="00023-345785" errorCode="3"
      errorDescription="customer '00011' not found in shopservice"/>
</OrderResponse>

Beispiel 2 (Fehlerhafte Auftragspositionen)

<OrderResponse xsi:noNamespaceSchemaLocation=
  "https://templates.look4optics.com/v_1_13/orderresponse.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  clientOrderID="00023-345785" orderDate="2017-02-11T14:35:57.3850000+01:00"
  supplierID="DE813058544" supplierName="Woehlk" clientID="00011"
  clientName="Testkunde11" generationDate="2017-02-11T14:35:57.6350000+01:00"
  schemaMajorVersionID="1" schemaMinorVersionID="13" >
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-01" orderItemStatus="10"
        errorCode="4" errorDescription="Article 'A2780':
        Selected DeliveryRange doesnt contain feature 'Diameter' with value '15.6'."
        upcCode="123456789123" netPurchasePrice="10" grossPrice="15"/>
    </OrderItems>
</OrderResponse>

Beispiel 3 (Empfangsbestätigung für Auftragspositionen)

<OrderResponse xsi:noNamespaceSchemaLocation=
  "https://templates.look4optics.com/v_1_13/orderresponse.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  clientOrderID="00023-345785" orderDate="2017-02-11T14:35:57.3850000+01:00"
  supplierID="DE813058544" supplierName="Woehlk" clientID="00011"
  clientName="Testkunde11" generationDate="2017-02-11T14:35:57.6350000+01:00"
  schemaMajorVersionID="1" schemaMinorVersionID="13" >
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-02" orderItemStatus="0"
          upcCode="123456789124" netPurchasePrice="11" grossPrice="16"/>
        <OrderItem clientOrderItemID="LOOK4-WLK-03" orderItemStatus="0"
          upcCode="123456789125" netPurchasePrice="12" grossPrice="17"/>
    </OrderItems>
</OrderResponse>

Beispiel 4 (Status Updates)

<OrderResponse xsi:noNamespaceSchemaLocation=
  "hhttps://templates.look4optics.com/v_1_13/orderresponse.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  clientOrderID="00023-345785" orderDate="2017-02-11T14:35:57.3850000+01:00"
  supplierID="DE813058544" supplierName="Woehlk" clientID="00011"
  clientName="Testkunde11" generationDate="2017-02-11T14:35:57.6350000+01:00"
  schemaMajorVersionID="1" schemaMinorVersionID="13" >

    <!-- Diese Beispieldatei enthält verschiedene Beispiele für die verschiedenen
         Status-Updates. Verwenden Sie EIN Element <OrderItems>, um eine gültige
         Datei zu haben, und löschen Sie die anderen -->

    <!-- Beispiel: Received (Empfangsbetätigung des Herstellers für die
         Bestellposition) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-02" orderItemStatus="2"
          upcCode="123456789124" netPurchasePrice="11" grossPrice="16"/>
    </OrderItems>

    <!-- Beispiel: In Progress (Bestellposition in Arbeit beim Hersteller) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-02" orderItemStatus="3"
          upcCode="123456789124" netPurchasePrice="11" grossPrice="16"/>
    </OrderItems>

    <!-- Beispiel: DeliveryDate (Mitteilung voraussichtlicher Liefertermin) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-02" orderItemStatus="4"
          upcCode="123456789124" deliveryDate="2011-02-24T09:00:00"
          netPurchasePrice="11" grossPrice="16"/>
    </OrderItems>

    <!-- Beispiel: DeliveryDate (Mitteilung voraussichtlicher Liefertermin, zweite
         Nachricht) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-02" orderItemStatus="4"
          upcCode="123456789124" deliveryDate="2011-03-14T09:00:00"
          netPurchasePrice="11" grossPrice="16"/>
    </OrderItems>

    <!-- Beispiel: Delivered (Bestellung wurde vom Hersteller versandt) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-01" orderItemStatus="5"
          upcCode="123456789123" netPurchasePrice="10" grossPrice="15"/>
    </OrderItems>

    <!-- Beispiel: Error (Fehler bei Auftragsbearbeitung - Definierte Fehlercodes
                 zur autom. Auswertung und Fehlerbeschreibung als Text (Anzeige)) -->
    <OrderItems>
        <OrderItem clientOrderItemID="LOOK4-WLK-01" orderItemStatus="10"
          errorCode="1"
          errorDescription="Article for OrderItem not found in catalog"
          upcCode="123456789123" netPurchasePrice="10" grossPrice="15"/>
    </OrderItems>
</OrderResponse>