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:
- Keine OrderResponse –> Auftrag nicht beim Hersteller angekommen
- OrderResponse mit Element
OrderError
–> Auftrag ist generell ungültig bzw. fehlerhaft. Das ElementOrder
beinhaltet denErrorCode
undErrorDescription
zur Fehleranalyse - 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>