pixiDFGetOrderlines
Liefert die offenen Direct-Fulfillment-Auftragspositionen (Status FUT) eines Auftrags für einen Direct-Fulfillment-Lieferanten, authentifiziert über Lieferantennummer und Secret.
Wird von Direct-Fulfillment-Lieferanten (Streckengeschäft) verwendet, um die zu versendenden Positionen eines Auftrags abzurufen.
Authentifizierung
- Leere Zeichenketten in
SupplNrundSecretwerden alsNULLbehandelt. - Gesucht wird ein Lieferant in
Suppliers, dessenSupplNrgleichSupplNrund dessenCustNrgleichSecretist. Der Lieferant darf nicht deaktiviert sein und mussCanDoDirectFulfillment = 1haben. - Wird kein solcher Lieferant gefunden und ist die Einstellung
DFAPIAllowFullAccessWithoutSecretgleich0(oder nicht vorhanden), wird nur eine Zeile mitError = '403'geliefert. - Ist die Einstellung ungleich
0, entfällt die Prüfung, und der Aufruf funktioniert ohne gültiges Secret.
Gelieferte Auftragspositionen
Nur Positionen, die alle folgenden Bedingungen erfüllen:
- Die Position gehört zum Auftrag
OrderNR. - Die Position hat den Status
FUT; verwendet wird der neuesteOrderHistory-Eintrag mit StatusFUT(OrderHistKey,StatusChangeDate,ClientNotified). - Der Status
FUTist inOrderStatesals Fulfilment-Status gekennzeichnet (FulfilmentStatus = 'Y'). - Ohne
AllOrderlines = 1werden nur noch nicht bestätigte Positionen (ClientNotified = 'N') geliefert. - Ist
SupplNrangegeben, werden nur Positionen mitSupplInfo = SupplNrgeliefert, und dieser Lieferant muss Direct Fulfillment unterstützen. IstSupplNrleer (nur bei deaktivierter Secret-Prüfung möglich), werden Positionen aller Lieferanten geliefert. - Die Lieferadresse darf nicht gesperrt sein (
ASlocked), der Kunde ebenfalls nicht (SLocked). - Auftragskopf, Rechnungsadresse, Kunde und Währung müssen vorhanden sein (Inner Joins).
Artikeldaten
EANUPC, ItemNrSuppl und ItemNrInt stammen aus dem lieferantenspezifischen AddItems-Datensatz (Lieferant = SupplInfo der Position, zuletzt aktualisierter Datensatz); fehlt ein Wert dort, wird der Wert aus Items verwendet.
Doppelte Zeilen werden entfernt (DISTINCT). Eine Sortierung ist nicht festgelegt.
Hinweise
- Der Fehler wird als normale Ergebniszeile (
Error,ErrorMsg) geliefert, nicht als SQL-Fehler. Die Antwort sollte auf die SpalteErrorgeprüft werden. Secretwird mit dem FeldCustNrdes Lieferanten verglichen (die Kundennummer, unter der der Shop beim Lieferanten geführt wird).- Ist
DFAPIAllowFullAccessWithoutSecretaktiviert und bleibtSupplNrleer, werden die Positionen aller Lieferanten des Auftrags geliefert. Im Produktivbetrieb sollte diese Einstellung auf0bleiben. - Der Aufruf ändert keine Daten; Positionen werden nicht als bestätigt markiert.
OrderlineConfirmedentsprichtClientNotifieddes neuestenFUT-Historieneintrags. - Alle Tabellen werden mit
NOLOCKgelesen; nicht festgeschriebene Daten können geliefert werden.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNR
Pflicht
|
int | – |
Nummer des Auftrags, dessen Direct-Fulfillment-Positionen geliefert werden. Beispiel: |
SupplNr
|
varchar(4) string |
NULL |
Lieferantennummer des Direct-Fulfillment-Lieferanten. Dient der Authentifizierung und beschränkt die Positionen auf diesen Lieferanten. Leere Zeichenkette wird als NULL behandelt. Beispiel: |
Secret
|
varchar(20) string |
NULL |
Secret des Lieferanten; muss dem Feld Beispiel: |
AllOrderlines
|
bit boolean |
0 |
Legt fest, ob bereits bestätigte Positionen enthalten sind. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn der Lieferant authentifiziert ist oder die Einstellung DFAPIAllowFullAccessWithoutSecret ungleich 0 ist
Eine Zeile je passender Direct-Fulfillment-Auftragsposition; kann leer sein.
| Spalte | Typ | Beschreibung |
|---|---|---|
OrderLineRef
|
int |
Schlüssel der Auftragsposition ( |
OrderNr
|
int |
Auftragsnummer. |
ArtName
Kann leer sein |
string |
Artikelbezeichnung laut Auftragsposition. |
EANUPC
Kann leer sein |
string |
EAN/UPC, lieferantenspezifisch aus |
ItemNrSuppl
Kann leer sein |
string |
Lieferantenartikelnummer, lieferantenspezifisch aus |
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
|
string |
Status der Auftragsposition, immer |
OrderHistKey
|
int |
Schlüssel des neuesten |
StatusChangeDate
Kann leer sein |
dateTime |
Datum der Statusänderung dieses Historieneintrags. |
OrderDate
Kann leer sein |
dateTime |
Bestelldatum der Position. |
OrderNrExternal
Kann leer sein |
string |
Externe Auftragsnummer (Shop). |
oItemSpecialNote
Kann leer sein |
string |
Sonderhinweis der Auftragsposition. |
SupplInfo
Kann leer sein |
string |
Der Auftragsposition zugeordnete Lieferantennummer. |
InvoiceNrExternal
Kann leer sein |
string |
Externe Rechnungsnummer der Auftragsposition. |
DF_Type
Kann leer sein |
string |
Direct-Fulfillment-Typ der Auftragsposition ( |
ItemRef
|
int |
Schlüssel des Artikels ( |
OrderlineConfirmed
Kann leer sein |
string |
Kennzeichen |
OrderCurrencyCode
Kann leer sein |
string |
Währungscode des Auftrags ( |
BundleOrderlineRef
Kann leer sein |
int |
Verweis auf die Bundle-Auftragsposition, falls die Position Teil eines Bundles ist. |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer, lieferantenspezifisch aus |
Result-Set 2 · Wenn zu SupplNr/Secret kein passender DF-Lieferant gefunden wird und DFAPIAllowFullAccessWithoutSecret gleich 0 ist
Einzelne Fehlerzeile anstelle der Auftragspositionen.
| Spalte | Typ | Beschreibung |
|---|---|---|
Error
|
varchar(3) string |
Fehlercode, immer |
ErrorMsg
|
varchar(48) string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<OrderLineRef>558812</OrderLineRef>
<OrderNr>104523</OrderNr>
<ArtName>Gartenstuhl Teak natur</ArtName>
<EANUPC>4006381333931</EANUPC>
<ItemNrSuppl>GS-TEAK-01</ItemNrSuppl>
<itemNrExternal>SHOP-77812</itemNrExternal>
<Qty>2</Qty>
<Price>89.90</Price>
<Status>FUT</Status>
<OrderHistKey>9912034</OrderHistKey>
<StatusChangeDate>2024-05-14T09:32:11</StatusChangeDate>
<OrderDate>2024-05-14T08:15:00</OrderDate>
<OrderNrExternal>WEB-2024-55123</OrderNrExternal>
<oItemSpecialNote/>
<SupplInfo>DF01</SupplInfo>
<InvoiceNrExternal/>
<DF_Type>DF</DF_Type>
<ItemRef>33417</ItemRef>
<OrderlineConfirmed>N</OrderlineConfirmed>
<OrderCurrencyCode>EUR</OrderCurrencyCode>
<BundleOrderlineRef>0</BundleOrderlineRef>
<ItemNrInt>100245</ItemNrInt>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 403 | Not Authorized. Secret or SupplNr is incorrect. | Kein aktiver Lieferant mit `CanDoDirectFulfillment = 1` passt zu `SupplNr` und `Secret` (Vergleich mit `CustNr`), und die Secret-Prüfung ist aktiv. Korrekte Lieferantennummer und Secret übergeben. |
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:pixiDFGetOrderlines>
<OrderNR>104523</OrderNR>
<!-- <SupplNr>DF01</SupplNr> -->
<!-- <Secret>K-778812</Secret> -->
<!-- <AllOrderlines>0</AllOrderlines> -->
</ns1:pixiDFGetOrderlines>
</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:pixiDFGetOrderlines>
<OrderNR>104523</OrderNR>
<!-- <SupplNr>DF01</SupplNr> -->
<!-- <Secret>K-778812</Secret> -->
<!-- <AllOrderlines>0</AllOrderlines> -->
</ns1:pixiDFGetOrderlines>
</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 = [
'OrderNR' => '104523',
// 'SupplNr' => 'DF01',
// 'Secret' => 'K-778812',
// 'AllOrderlines' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDFGetOrderlines', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDFGetOrderlines