pixiGetChangedOrders
Liefert die Kopfdaten aller Aufträge, die seit einem Zeitpunkt angelegt oder geändert wurden, einschließlich Änderungen an Auftragspositionen oder Adressen.
Der Aufruf dient der Delta-Synchronisation von Aufträgen. Er liefert eine Zeile je geändertem Auftrag.
Zeitfenster
- Das Ende des Fensters,
DateTimeTo, ist die Serverzeit bei der Ausführung (GETDATE()). Es wird in jeder Zeile zurückgegeben. - Liegt
DateTimeFromspäter als fünf Minuten vor der Serverzeit, wird der Wert auf jetzt minus 5 Minuten zurückgesetzt. Jeder Aufruf deckt damit mindestens die letzten fünf Minuten ab.
Welche Aufträge als geändert gelten
Ein Auftrag wird ausgewählt, wenn mindestens einer der folgenden Zeitstempel bei oder nach DateTimeFrom und nicht nach DateTimeTo liegt:
- Auftragskopf:
UpdateDate, oderCreateDate, falls der Auftrag nie geändert wurde. - Eine Auftragsposition: deren
UpdateDate, oderCreateDatebei nie geänderten Positionen. - Rechnungsadresse (
AddrRef) oder Lieferadresse (ShipAdrRef) des Auftrags:UpdateDate, oderCreateDate, falls nie geändert.
Filter Direct Fulfillment
ReturnOnlyDFOrders = 0(Standard): Alle geänderten Aufträge werden geliefert.ReturnOnlyDFOrders = 1: Nur geänderte Aufträge mit mindestens einer Auftragsposition, zu der einOrderHistory-Eintrag mit StatusFUTexistiert, werden geliefert.
Gelieferte Daten
- Die Kopffelder stammen aus dem Auftragskopf, dem Kunden (
ShopIDistCustomerOfdes Kunden) und den Adressen.PaymentTypeist die Zahlungsart der Rechnungsadresse.OrderLockedist das Sperrkennzeichen der Lieferadresse (N, falls leer). - Je Auftrag aggregierte Positionsfelder:
OrderDate: das späteste Bestelldatum der Positionen, bei EinstellungUseInitialOrderDate=1das früheste.VoucherID: die höchste Gutschein-ID mit dem zugehörigenVoucherAmount.OrderCurrency: der Währungscode.EstimatedDelivery: der späteste voraussichtliche Liefertermin.
- Es werden nur Aufträge mit vorhandenem Kunden, vorhandener Rechnungsadresse und vorhandener Lieferadresse geliefert. Die Zeilen sind nicht sortiert.
Hinweise
- Polling: Den Wert
DateTimeToder vorherigen Antwort alsDateTimeFromdes nächsten Aufrufs übergeben. Wegen des Mindestfensters von fünf Minuten kann derselbe Auftrag in aufeinanderfolgenden Aufrufen erneut geliefert werden. Die Zeilen sollten daher idempotent verarbeitet werden. - Ist
DateTimeFromgleichNULL, trifft kein Auftrag zu und das Ergebnis ist leer. - Ungenutzter Parameter:
skipGetXMLValueist deklariert, wird im Code aber nicht verwendet. - Dirty Reads: Alle permanenten Tabellen werden mit
NOLOCKgelesen. Nicht festgeschriebene Daten können erscheinen, und bei parallelen Änderungen können Zeilen fehlen oder doppelt auftreten. - Einstellung:
UseInitialOrderDatewird aus der TabelleSettingsgelesen und steuert, obOrderDatedas früheste oder das späteste Positionsdatum ist. - Fehlende Währung: Die Positionsaggregate (
OrderDate,VoucherID,VoucherAmount,OrderCurrency,EstimatedDelivery) sindNULL, wenn die Währung des Auftrags nicht inpixi.Currencygefunden wird oder der Auftrag keine Positionen hat. - EstimatedDelivery: Der Code vergleicht den Wert mit einem Platzhalterdatum (jetzt + 999 Tage, inklusive Uhrzeit). Dieser Vergleich trifft praktisch nie zu, daher wird der Wert unverändert geliefert.
- Performance: Der Aufruf durchsucht Adressen, Auftragsköpfe und Auftragspositionen nach Datum. Sehr alte Werte für
DateTimeFromkönnen große Ergebnismengen und lange Laufzeiten verursachen.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
DateTimeFrom
Pflicht
|
datetime dateTime |
– |
Beginn des Änderungszeitraums. Werte, die später als fünf Minuten vor der Serverzeit liegen, werden auf jetzt minus 5 Minuten zurückgesetzt. Beispiel: |
skipGetXMLValue
|
bit boolean |
1 |
Wird im Code nicht verwendet und hat keine Wirkung. Beispiel: |
ReturnOnlyDFOrders
|
bit boolean |
0 |
Beschränkt das Ergebnis auf Direct-Fulfillment-Aufträge, also Aufträge mit einer Position, zu der ein Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Immer; leer, wenn im Zeitraum kein Auftrag geändert wurde.
Eine Zeile je geändertem Auftrag mit Kopf-, Kunden-, Adress- und aggregierten Positionsdaten.
| Spalte | Typ | Beschreibung |
|---|---|---|
DateTimeTo
|
datetime dateTime |
Serverzeit bei Ausführung. Als |
OrderHeaderKey
Kann leer sein |
int |
Interner Schlüssel des Auftragskopfs. |
OrderNr
Kann leer sein |
int |
Pixi-Auftragsnummer. |
CreateDate
Kann leer sein |
datetime dateTime |
Anlagedatum des Auftragskopfs. |
OrderNrExternal
Kann leer sein |
varchar(50) string |
Externe Auftragsnummer (Shop). |
WholeOrderState
Kann leer sein |
varchar(10) string |
Status des gesamten Auftrags ( |
ShipVendorCode
Kann leer sein |
varchar(3) string |
Code des Versanddienstleisters. |
ShopID
Kann leer sein |
varchar(3) string |
Shop des Kunden ( |
ShipCost
Kann leer sein |
money decimal |
Versandkosten des Auftrags. |
PaymentAddressId
Kann leer sein |
int |
Schlüssel der Rechnungsadresse. |
ShipmentAddressId
Kann leer sein |
int |
Schlüssel der Lieferadresse. |
DeliveryDate
Kann leer sein |
datetime dateTime |
Versanddatum des Auftragskopfs ( |
Referrer
Kann leer sein |
varchar(50) string |
Referrer des Auftrags. |
GiftMessage
Kann leer sein |
varchar(8000) string |
Geschenknachricht. |
AddressRemarks
Kann leer sein |
varchar(255) string |
Adressbemerkungen des Auftrags. |
ShopNote
Kann leer sein |
varchar(max) string |
Notiz aus dem Shop. |
PaymentType
Kann leer sein |
varchar(1) string |
Zahlungsart der Rechnungsadresse ( |
CustKey
Kann leer sein |
int |
Interner Kundenschlüssel. |
CustomerEmail
Kann leer sein |
varchar(256) string |
E-Mail-Adresse des Kunden. |
CustomerNrExternal
Kann leer sein |
varchar(60) string |
Externe Kundennummer. |
OrderLocked
|
varchar(1) string |
Sperrkennzeichen der Lieferadresse ( |
OrderDate
Kann leer sein |
datetime dateTime |
Spätestes Bestelldatum der Positionen, bei Einstellung |
VoucherID
Kann leer sein |
varchar(50) string |
Höchste Gutschein-ID der Auftragspositionen. |
VoucherAmount
Kann leer sein |
money decimal |
Betrag dieses Gutscheins aus der Gutscheintabelle. |
OrderCurrency
Kann leer sein |
varchar(3) string |
Währungscode des Auftrags ( |
EstimatedDelivery
Kann leer sein |
datetime dateTime |
Spätester voraussichtlicher Liefertermin der Positionen. |
Beispielantwort
<SqlRowSet1>
<row>
<DateTimeTo>2024-05-14T10:15:32.457</DateTimeTo>
<OrderHeaderKey>48211</OrderHeaderKey>
<OrderNr>100482</OrderNr>
<CreateDate>2024-05-14T09:58:10.123</CreateDate>
<OrderNrExternal>SHOP-2024-77812</OrderNrExternal>
<WholeOrderState>AUF</WholeOrderState>
<ShipVendorCode>DHL</ShipVendorCode>
<ShopID>WEB</ShopID>
<ShipCost>4.9500</ShipCost>
<PaymentAddressId>90311</PaymentAddressId>
<ShipmentAddressId>90312</ShipmentAddressId>
<Referrer>google</Referrer>
<PaymentType>V</PaymentType>
<CustKey>55120</CustKey>
<CustomerEmail>max.mustermann@example.com</CustomerEmail>
<CustomerNrExternal>K-10077</CustomerNrExternal>
<OrderLocked>N</OrderLocked>
<OrderDate>2024-05-14T09:57:44</OrderDate>
<OrderCurrency>EUR</OrderCurrency>
</row>
</SqlRowSet1>
Beispiele
POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiGetChangedOrders>
<DateTimeFrom>2024-05-14T08:00:00</DateTimeFrom>
<!-- <skipGetXMLValue>1</skipGetXMLValue> -->
<!-- <ReturnOnlyDFOrders>0</ReturnOnlyDFOrders> -->
</ns1:pixiGetChangedOrders>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiGetChangedOrders>
<DateTimeFrom>2024-05-14T08:00:00</DateTimeFrom>
<!-- <skipGetXMLValue>1</skipGetXMLValue> -->
<!-- <ReturnOnlyDFOrders>0</ReturnOnlyDFOrders> -->
</ns1:pixiGetChangedOrders>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'DateTimeFrom' => '2024-05-14T08:00:00',
// 'skipGetXMLValue' => '1',
// 'ReturnOnlyDFOrders' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetChangedOrders', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetChangedOrders