pixiDFGetChanges
Liefert die neuesten, noch nicht gemeldeten Fulfillment-Statusänderungen von `FUT`-Auftragspositionen für einen Direct-Fulfillment-Lieferanten inklusive Adress-, Artikel- und Auftragsdaten.
API-Aufruf für Direct-Fulfillment-Lieferanten (DF), der die noch zu verarbeitenden Änderungen an Auftragspositionen abruft.
Authentifizierung
- Der Lieferant wird in
SuppliersüberSupplNrgesucht.Secretmuss derCustNrdes Lieferanten entsprechen. Der Lieferant darf nicht deaktiviert sein und mussCanDoDirectFulfillment = 1haben. - Wird kein Lieferant gefunden und ist die Einstellung
DFAPIAllowFullAccessWithoutSecretgleich0(oder nicht vorhanden), wird eine einzelne Zeile mitError = 403geliefert. - Wird kein Lieferant gefunden und ist die Einstellung ungleich
0, läuft der Aufruf ohne Lieferantenfilter weiter und liefert die Änderungen aller Lieferanten.
Auswahl
Je Auftragsposition wird nur der neueste OrderHistory-Eintrag (höchster OrderHistKey) berücksichtigt, und nur wenn alle folgenden Bedingungen gelten:
- die Auftragsposition hat den Status
FUT; - der Historienstatus ist ein Status in
OrderStatesmitFulfilmentStatus = 'Y'; SupplInfoder Position entspricht dem authentifizierten Lieferanten (falls einer gefunden wurde);- Lieferadresse (
ASlocked) und Kunde (SLocked) sind nicht gesperrt, außer beiLockedCustomers = 1; OrderNrExternalentsprichtOrderNRExternal, sofern dieser Parameter angegeben ist;- der Auftragskopf wurde vor mehr als 5 Minuten angelegt.
Zusätzlich muss der Historieneintrag ClientNotified = 'N' haben. Positionen, deren Status in ExcludeStatuses enthalten ist, werden übersprungen.
Ausgabe
- Kommt eine Auftragsposition mehrfach im Ergebnis vor, wird statt der Daten eine einzelne Meldungszeile geliefert und der Aufruf beendet.
- Andernfalls werden alle Zeilen nach
StatusChangeDatesortiert geliefert. In Datenbanken, deren Name mitpixi_PSPbeginnt, wird nachordernrund dannStatusChangeDatesortiert.
Hinweise
- Der Aufruf ist rein lesend. Er setzt
ClientNotifiednicht, daher werden dieselben Änderungen erneut geliefert, bis ein anderer Prozess sie als gemeldet markiert. Dieser Prozess ist nicht Teil dieses Codes. - Alle Tabellen werden
WITH (NOLOCK)gelesen, daher können nicht festgeschriebene Daten erscheinen. ExcludeStatuseswird perCHARINDEX(Teilstring-Suche) geprüft, daher ist jedes Trennzeichen möglich, z. B.STO,AUS. Die innere Auswahl liefert ohnehin nurFUT-Positionen, daher wirkt der Parameter nur, wenn erFUTenthält; dann werden alle Zeilen unterdrückt.- Ist
ExcludeStatusesleer und beginnt der Datenbankname mitpixi_PSP, wirdSTOals Vorgabe verwendet. - Sind
SupplNr/Secretfalsch und istDFAPIAllowFullAccessWithoutSecretungleich0, werden die Daten aller Lieferanten geliefert. - Aufträge, die vor weniger als 5 Minuten angelegt wurden, werden zurückgehalten.
- Die temporäre Tabelle wird über
util.TempTableDropverwaltet. Dieses Objekt liegt nicht vor.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SupplNr
|
varchar(4) string |
NULL |
Lieferantennummer des Direct-Fulfillment-Lieferanten. Dient der Authentifizierung und filtert die Auftragspositionen über Beispiel: |
Secret
|
varchar(20) string |
NULL |
Secret des Lieferanten. Muss der Beispiel: |
OrderNRExternal
|
varchar(50) string |
NULL |
Optionale externe Auftragsnummer. Beschränkt das Ergebnis auf Änderungen dieses Auftrags; leer oder NULL bedeutet alle Aufträge. Beispiel: |
ExcludeStatuses
|
varchar(200) string |
NULL |
Auszuschließende Positionsstatus, als Teilstring geprüft (z. B. Beispiel: |
LockedCustomers
|
bit boolean |
0 |
Gibt an, ob Positionen mit gesperrter Lieferadresse oder gesperrtem Kunden enthalten sind. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn kein passender DF-Lieferant gefunden wird und DFAPIAllowFullAccessWithoutSecret gleich 0 ist.
Fehlerzeile bei fehlender Berechtigung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Error
|
varchar(3) string |
Fehlercode, immer |
ErrorMsg
|
varchar(47) string |
Fehlertext. |
Result-Set 2 · Wenn eine Auftragsposition mehrfach in den gesammelten Änderungen vorkommt.
Einzelne Meldungszeile mit einer Spalte ohne Namen. In diesem Fall werden keine Daten geliefert.
| Spalte | Typ | Beschreibung |
|---|---|---|
(no column name)
|
varchar(79) string |
Meldungstext. Die Spalte hat im Code keinen Alias. |
Result-Set 3 · Bei erfolgreicher Authentifizierung (oder erlaubtem Vollzugriff) und ohne doppelte Auftragspositionen.
Eine Zeile je geänderter Auftragsposition mit Lieferadresse, Auftrags-, Artikel- und Statusdaten.
| Spalte | Typ | Beschreibung |
|---|---|---|
Anrede
Kann leer sein |
string |
Anrede der Lieferadresse. |
CareOf
Kann leer sein |
string |
c/o-Zeile der Lieferadresse. |
FirstName
Kann leer sein |
string |
Vorname der Lieferadresse. |
LastName
Kann leer sein |
string |
Nachname der Lieferadresse. |
Street
Kann leer sein |
string |
Straße der Lieferadresse. |
ZIP
Kann leer sein |
string |
Postleitzahl der Lieferadresse. |
HouseNr
Kann leer sein |
string |
Hausnummer der Lieferadresse. |
City
Kann leer sein |
string |
Ort der Lieferadresse. |
Country
Kann leer sein |
string |
Land der Lieferadresse. |
Email
Kann leer sein |
string |
E-Mail-Adresse der Lieferadresse ( |
Phone
Kann leer sein |
string |
Telefonnummer der Lieferadresse. |
Address_remarks
Kann leer sein |
string |
Adressbemerkungen aus dem Auftragskopf. |
AddrNoChargeVAT
Kann leer sein |
string |
Kennzeichen für Umsatzsteuerbefreiung der Lieferadresse. |
ShipInstruct
Kann leer sein |
string |
Versandanweisungen aus dem Auftragskopf. |
Shipdate
Kann leer sein |
dateTime |
Versanddatum aus dem Auftragskopf. |
ShipVendorCode
Kann leer sein |
string |
Versanddienstleister-Code aus dem Auftragskopf. |
ArtName
Kann leer sein |
string |
Artikelname der Auftragsposition. |
EANUPC
Kann leer sein |
string |
EAN/UPC des Artikels. |
ItemNrSuppl
Kann leer sein |
string |
Artikelnummer des Lieferanten. |
itemNrExternal
Kann leer sein |
string |
Externe Artikelnummer der Auftragsposition. |
Qty
Kann leer sein |
int |
Bestellte Menge. |
Price
Kann leer sein |
decimal |
Preis der Auftragsposition. |
Status
Kann leer sein |
string |
Aktueller Positionsstatus (aufgrund der Filter immer |
OrderHistKey
|
int |
Schlüssel des neuesten Auftragshistorieneintrags. |
OrderLineRef
|
int |
Schlüssel der Auftragsposition. |
StatusChangeDate
Kann leer sein |
dateTime |
Datum der Statusänderung in der Auftragshistorie. |
OrderDate
Kann leer sein |
dateTime |
Auftragsdatum der Position. |
OrderNrExternal
Kann leer sein |
string |
Externe Auftragsnummer. |
AddrShopID
Kann leer sein |
string |
Shop-ID der Rechnungsadresse. |
oItemSpecialNote
Kann leer sein |
string |
Sonderhinweis zur Auftragsposition. |
SupplInfo
Kann leer sein |
string |
Der Auftragsposition zugeordnete Lieferantennummer. |
APayment
Kann leer sein |
string |
Zahlungsart der Rechnungsadresse. |
discount
Kann leer sein |
decimal |
Rabatt aus dem Auftragskopf. |
ShipCost
Kann leer sein |
decimal |
Versandkosten aus dem Auftragskopf. |
InvoiceNrExternal
Kann leer sein |
string |
Externe Rechnungsnummer der Auftragsposition. |
DF_Type
Kann leer sein |
string |
Direct-Fulfillment-Typ der Auftragsposition. |
ordernr
|
int |
Pixi-Auftragsnummer. |
CustomerLock
Kann leer sein |
string |
Versandsperre des Kunden ( |
AddressLock
Kann leer sein |
string |
Versandsperre der Lieferadresse ( |
OrderCurrencyCode
Kann leer sein |
string |
Währungscode des Auftrags ( |
Beispielantwort
<SqlRowSet1>
<row>
<Anrede>Frau</Anrede>
<CareOf/>
<FirstName>Anna</FirstName>
<LastName>Muster</LastName>
<Street>Hauptstraße</Street>
<ZIP>80331</ZIP>
<HouseNr>12</HouseNr>
<City>München</City>
<Country>DE</Country>
<Email>anna.muster@example.com</Email>
<Phone>089123456</Phone>
<Address_remarks/>
<AddrNoChargeVAT>N</AddrNoChargeVAT>
<ShipInstruct/>
<Shipdate>2024-05-14T00:00:00</Shipdate>
<ShipVendorCode>DHL</ShipVendorCode>
<ArtName>Kaffeemaschine X200</ArtName>
<EANUPC>4012345678901</EANUPC>
<ItemNrSuppl>X200-BLK</ItemNrSuppl>
<itemNrExternal>SKU-4711</itemNrExternal>
<Qty>1</Qty>
<Price>129.90</Price>
<Status>FUT</Status>
<OrderHistKey>884512</OrderHistKey>
<OrderLineRef>553210</OrderLineRef>
<StatusChangeDate>2024-05-13T10:15:22</StatusChangeDate>
<OrderDate>2024-05-13T09:58:01</OrderDate>
<OrderNrExternal>SHOP-2024-004711</OrderNrExternal>
<AddrShopID>WEB</AddrShopID>
<oItemSpecialNote/>
<SupplInfo>L001</SupplInfo>
<APayment>PP</APayment>
<discount>0.00</discount>
<ShipCost>4.90</ShipCost>
<InvoiceNrExternal/>
<DF_Type>DF</DF_Type>
<ordernr>120345</ordernr>
<CustomerLock>N</CustomerLock>
<AddressLock>N</AddressLock>
<OrderCurrencyCode>EUR</OrderCurrencyCode>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 403 | Not Authorized. Secret or SupplNr is incorrect. | Kein aktiver DF-Lieferant passt zu `SupplNr` und `Secret` (`CustNr`), und `DFAPIAllowFullAccessWithoutSecret` ist `0`. Gültige Lieferantennummer und gültiges Secret übergeben. |
| ERROR | Duplicate Orderhistory Entries - export impossible, please contact pixi Support | Eine Auftragsposition kommt mehrfach in den gesammelten Änderungen vor. Die Daten müssen durch den pixi Support bereinigt werden. |
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:pixiDFGetChanges>
<!-- <SupplNr>L001</SupplNr> -->
<!-- <Secret>K10023</Secret> -->
<!-- <OrderNRExternal>SHOP-2024-004711</OrderNRExternal> -->
<!-- <ExcludeStatuses>STO</ExcludeStatuses> -->
<!-- <LockedCustomers>0</LockedCustomers> -->
</ns1:pixiDFGetChanges>
</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:pixiDFGetChanges>
<!-- <SupplNr>L001</SupplNr> -->
<!-- <Secret>K10023</Secret> -->
<!-- <OrderNRExternal>SHOP-2024-004711</OrderNRExternal> -->
<!-- <ExcludeStatuses>STO</ExcludeStatuses> -->
<!-- <LockedCustomers>0</LockedCustomers> -->
</ns1:pixiDFGetChanges>
</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 = [
// 'SupplNr' => 'L001',
// 'Secret' => 'K10023',
// 'OrderNRExternal' => 'SHOP-2024-004711',
// 'ExcludeStatuses' => 'STO',
// 'LockedCustomers' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDFGetChanges', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDFGetChanges