Benutzer-Werkzeuge

Webseiten-Werkzeuge


xml:orders_out

orders_out

Diese Schnittstelle dient dem Export von Aufträgen aus dem dStore.

Die Schnittstelle fragt in kurzen, regelmäßigen Abständen ab, ob Auftragspositionen zum Export bereitstehen. Die Abfrage findet über den Status1) statt. Der Mechanismus der Abfrage der Aufträge ist in der Dokumentation zur Prozedur om_ExportOrders_Ad beschrieben.

Stehen Aufträge zum Export bereit, werden diese mit allen verfügbaren Informationen exportiert und zur Abholung durch das Fremdsystem bereitgestellt. Konkret sind in einem exportierten Auftrag folgende Informationen enthalten.

  • Auftraggeber / Rechnungsanschrift
  • Lieferanschrift
  • dStore Auftragsnummer (OrderID)
  • Brutto- und Netto-Auftragswert sowie Währung
  • Auftragszeitpunkt
  • Optional: Liefertermin
  • Informationen zur Zahlart und -kosten (PaymentType)
  • Informationen zur Versandart und -kosten (ShippingType)
  • Auftragspositionen. Zu jeder Auftragspositon werden die folgenden Informationen exportiert:
    • diverse IDs zur Referenzierung
    • Preisinformationen
    • Statusinformationen
    • Bezeichnung des Artikelelements (NodeDescription)
    • Drei frei konfigurierbare Eigenschaften des Artikelelemente (z.B. Artikelnummer, EAN)
    • Informationen zur Auftragsposition (OrderContentInformation)
  • Informationen zum Auftrag (OrderInformation)

Beispieldatei

Die Beispieldatei zeigt die umfangreichen Daten die mit dem Auftrag exportiert werden:

persons_in_sample1.xml
<?xml version="1.0" encoding="UTF-8"?>
<ListOfOrders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://resources.dstore.de/xsd/xml_SmartGate/orders_out_v1_1.xsd"
    CreationDate="1159151210">
	<Order OrderID="10834">
		<OrderHeader>
			<OrderDateAndTime>07.04.2004 07:46:54:500</OrderDateAndTime>
			<DeliveryDateAndTime/>
			<!-- PaymentCost und ShippingCost nach Steuern aufgeschluesselt finden sich unter OrderContent -->
			<Shipping ShippingTypeID="1" NettoCost="1.33" BruttoCost="1.5">Inland mit Porto (inkl. Vers.)</Shipping>
			<Payment PaymentTypeID="3" NettoCost="0" BruttoCost="0">Rechnung</Payment>
			<!-- Die Currency bezieht sich auf alle Betraege des Auftrags -->
			<Currency CurrencySymbol="EUR" CurrencyID="1"/>
			<!-- BruttoSum und Netto Sum sind die Summe aller Auftragspositionen, also der Warenwert des 
				Auftrags unabhaengig vom Status -->
			<BruttoSum>36.9</BruttoSum>
			<NettoSum>31.01</NettoSum>
			<!-- Die gesamte Anzahl Positionen des Auftrag, was nicht zwingend die Anzahl exportierter Position sein muss -->
			<PositionCount>1</PositionCount>
		</OrderHeader>
		<!-- Zusätzliche Informationen zum Auftrag -->
		<OrderInformation>
			<Information Description="Order-Code" InformationTypeID="3">1183713711166cf</Information>
		</OrderInformation>
		<InvoiceAddress PersonID="4567">
			<Property Characteristic="Kundennummer" ID="1">GEN9151208</Property>
			<Property Characteristic="E_Mail Person" ID="101">max@web.de</Property>
			<Property Characteristic="Firma" ID="108"/>
			<Property Characteristic="Vorname" ID="104">Ralf</Property>
			<Property Characteristic="Nachname" ID="103">Mustermann</Property>
			<Property Characteristic="Straße" ID="105">Bahnhofstr.</Property>
			<Property Characteristic="Hausnummer" ID="110">2</Property>
			<Property Characteristic="Hausnummer_Zusatz" ID="111">a</Property>
			<Property Characteristic="PLZ" ID="106">66955</Property>
			<Property Characteristic="Ort" ID="107">Pirmasens</Property>
			<Property Characteristic="Land" ID="109">D</Property>
		</InvoiceAddress>
		<!-- Ist die PersonID identisch zur PersonID der InvoiceAdress ist die Lieferanschrift die Rechnungsanschrift -->
		<DeliveryAddress PersonID="4567">
			<Property Characteristic="Kundennummer" ID="1">GEN9151208</Property>
			<Property Characteristic="E_Mail Person" ID="101">max@web.de</Property>
			<Property Characteristic="Firma" ID="108"/>
			<Property Characteristic="Vorname" ID="104">Ralf</Property>
			<Property Characteristic="Nachname" ID="103">Mustermann</Property>
			<Property Characteristic="Straße" ID="105">Bahnhofstr.</Property>
			<Property Characteristic="Hausnummer" ID="110">2</Property>
			<Property Characteristic="Hausnummer_Zusatz" ID="111">a</Property>
			<Property Characteristic="PLZ" ID="106">66955</Property>
			<Property Characteristic="Ort" ID="107">Pirmasens</Property>
			<Property Characteristic="Land" ID="109">D</Property>
		</DeliveryAddress>
		<!-- Die Auftragspositionen: -->
		<OrderContent>
			<Position No="1" OrderContentID="4975" Quantity="1" NettoSum="31.01" BruttoSum="36.9" OrderStateID="6" HTreeNodeID="4615">
				<!-- Eigenschaften des Artikels (max. 3) -->
				<Value1>001467</Value1>
				<Value2>Muster rot / XL</Value2>
				<!-- Zusätzliche Informationen zur Auftragsposition -->
				<OrderContentInformation>
					<Information InformationTypeID="4">gutschein015g</Information>
				</OrderContentInformation>
			</Position>
		</OrderContent>
		<!-- Ab- und Aufschläge abseits der Auftragspositionen/des Warenwertes wie Versandkosten, Guthabenverrechnungen, Gutscheine:  -->
		<OrderSurcharges>
			<Surcharge No="1" TypeID="1" Description="Versandkosten" AbsoluteNetSurcharge="1.33" AbsoluteGrossSurcharge="1.5">
				<!-- Aufschlüsselung nach Steuersätzen -->
				<ByTax TaxesMultiplier="1.07" AbsoluteNetSurcharge="0.76" AbsoluteGrossSurcharge="0.81"/>			
				<ByTax TaxesMultiplier="1.2" AbsoluteNetSurcharge="0.57" AbsoluteGrossSurcharge="0.69"/>
			</Surcharge>			
			<Surcharge No="2" TypeID="0" Description="Zahlungskosten" AbsoluteNetSurcharge="0" AbsoluteGrossSurcharge="0">
				<ByTax TaxesMultiplier="1.2" AbsoluteNetSurcharge="0" AbsoluteGrossSurcharge="0"/>
			</Surcharge>
		</OrderSurcharges>
	</Order>
</ListOfOrders>

Best-Practice

Im Normalfall wird die orders_out Schnittstelle wie folgt verwendet: Es werden alle Auftragspositionen, die sich im Status „zum Export freigegeben“ befinden, exportiert.

Für Fehler ist der Status „Export fehlgeschlagen“ vorgesehen.

Oftmals möchte man vielleicht, daß ein Auftrag erst exportiert wird, wenn alle Positionen „zum Export freigegeben“ sind. Damit kann vermieden werden, daß die Positonen eines Auftrags auf mehrere XML-Dateien verteilt sind. Dieses Verhalten ist steuerbar über die Einstellung „SkipOrdersHavingDifferentOrderStates“.

Für den „Weg“, über den eine Position in den Status „zum Export freigegeben“ kommt, gibt es mehrere, mögliche Vorgehensweisen. Zum Einen kann dies manuell geschehen, also über die Auftragsverwaltung im admin_SmartGate oder aber über eine Automatisierung per von einem Script gesteuerten Aufruf von om_ChangeOrderState_Ad oder per UserExit "_ac_ChangeOrderState". Auch Mischformen sind möglich, z.B.: Clearing aller Aufträge über 200 EUR oder mehr als 3 Auftragspositionen.

Weiterführende Informationen

1) Der dStore kennt den Status nur auf Positionsebene (also quasi einen Auftragspositionsstatus). Von einem Auftragsstatus spricht man, wenn alle Positionen den gleichen Status haben. Haben die Positionen unterschiedliche Status, so ist der Auftragsstatus „undefiniert“.
xml/orders_out.txt · Zuletzt geändert: 13.11.2014 (Externe Bearbeitung)

Seiten-Werkzeuge