pixiGetOrderHeaderList
Liefert Kopfdaten für mehrere Aufträge anhand ihrer externen Auftragsnummern, inklusive Kunden-, Adress-, Zahlungs-, Versand- und Rechnungsinformationen.
Erwartet eine Liste externer Auftragsnummern (OrderNrExternal) als XML und liefert je passendem Auftrag aus OrderHeader eine Zeile.
Ablauf:
- Das XML wird in Werte zerlegt. Gelesen wird jedes Kindelement des Wurzelelements, unabhängig vom Elementnamen. Doppelte Werte werden entfernt.
- Ist die Liste leer, gibt die Prozedur
No Data!per PRINT aus und liefert kein Resultset. - Zwei Einstellungen werden gelesen:
UseInitialOrderDate: bei1istOrderDatedas früheste Bestelldatum der Auftragspositionen, sonst das späteste.NumberOfDecimalPlacesForPrices: Anzahl Nachkommastellen für die Rundung vonQty * Priceje Position (Standard2, wenn die Einstellung fehlt oder0ist).
- Aufträge werden über
OrderHeader.OrderNrExternalgefunden. Externe Nummern ohne passenden Auftrag werden ohne Hinweis übergangen. - Ein Auftrag wird nur geliefert, wenn Währung, Kunde, Rechnungsadresse (
AddrRef) und Lieferadresse (ShipAdrRef) vorhanden sind. Diese Verknüpfungen sind Inner Joins. - Je Auftrag werden die Auftragspositionen zusammen mit ihren Rechnungspositionen, ihren Rechnungen (nur Rechnungen mit
RefToInvoiceKey IS NULL) und ihren voraussichtlichen Lieferterminen aggregiert:- Versanddaten (min./max.
ScanOutDate), Tracking-ID, Versanddienstleister, letzte Rechnungsnummer; Paid/PayedSumaus den Rechnungen;OrderTotal_OrderCurr= Summe der gerundeten WerteQty * Pricealler Positionen außer StatusSTOundNLB, plusShipCost, minusDiscount.
- Versanddaten (min./max.
Genderwird aus der Anrede (Anrede) der Lieferadresse abgeleitet:1fürHerr,Hr.,M.,Monsieur,Mr,Mr.2fürMrs,Mrs.,Ms,Ms.,Frau,Fr.0für alle anderen Werte.
Die Sortierung erfolgt nach CreateDate aufsteigend.
Hinweise
- Nur lesend. Die meisten Tabellen werden
WITH (NOLOCK)gelesen, daher können nicht festgeschriebene Daten erscheinen. Die Unterabfrage fürOrderLockedaufAddressesläuft ohneNOLOCK. - Die Werte werden als
varchar(256)zerlegt, aber in einer Schlüsselspaltevarchar(50)gespeichert. Eine externe Auftragsnummer mit mehr als 50 Zeichen kann den Aufruf mit einem Abschneidefehler abbrechen. - Eine leere Eingabe liefert keine Fehlerzeile. Es gibt nur die PRINT-Meldung
No Data!und keine Zeilen. EstimatedDeliveryist nur gefüllt, wenn jede Auftragsposition einen voraussichtlichen Liefertermin hat. Dann wird der späteste Termin geliefert. Fehlt bei einer Position der Termin, ist die SpalteNULL. Intern wird für fehlende Termine ein Platzhalterdatum (jetzt + 999 Tage) verwendet und danach wieder inNULLumgewandelt.Paidwird je verknüpfter Zeile berechnet. Auftragspositionen ohne Rechnung gelten ebenfalls als bezahlt, daher kannPaidauch bei einem gar nicht berechneten Auftrag1sein.PayedSumist die höchste bezahlte Summe unter den Rechnungen, derenPayedSumdem auf 2 Stellen gerundeten Rechnungsbetrag entspricht.- Die Auftragspositionen werden mit Rechnungspositionen und Lieferterminen verknüpft. Hat eine Position mehrere Rechnungspositionen oder mehrere Liefertermin-Einträge, wird sie in
OrderTotal_OrderCurrmehrfach gezählt. - Die Positionspreise stammen aus
Price(nicht aus dem Preis in Auftragswährung), obwohl die SpalteOrderTotal_OrderCurrheißt. - Die Quelltabelle von
SubShopNameundSubShopLogoist im Code nicht qualifiziert. Vermutlich stammen die Spalten ausOrderHeader. - Die
Gender-Zuordnung vergleicht die Anrede exakt. Ob dabei Groß-/Kleinschreibung beachtet wird, hängt von der Datenbank-Collation ab.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNrExternalXml
Pflicht
|
xml | – |
XML-Liste externer Auftragsnummern. Jedes Kindelement des Wurzelelements enthält eine Nummer. Die Elementnamen werden nicht geprüft; der Code-Kommentar verwendet Beispiel:
|
Antwort
Result-Set 1 · Wenn das XML mindestens einen Wert enthält; kann null Zeilen haben, wenn kein Auftrag passt.
Eine Zeile je passendem Auftrag, sortiert nach CreateDate aufsteigend.
| Spalte | Typ | Beschreibung |
|---|---|---|
OrderHeaderKey
|
int |
Interner Schlüssel des Auftragskopfs. |
OrderNr
|
int |
Pixi-Auftragsnummer. |
CreateDate
Kann leer sein |
dateTime |
Anlagedatum des Auftrags. |
OrderNrExternal
Kann leer sein |
string |
Externe Auftragsnummer (z. B. aus dem Shop). |
OrderTotal
Kann leer sein |
decimal |
Auftragssumme laut Auftragskopf. |
OrderlinesTotal
Kann leer sein |
decimal |
Positionssumme laut Auftragskopf. |
WholeOrderState
Kann leer sein |
string |
Status des gesamten Auftrags ( |
Shipdate
Kann leer sein |
dateTime |
Frühestes Scan-Out-Datum der zugehörigen Rechnungen. |
LastShipdate
Kann leer sein |
dateTime |
Spätestes Scan-Out-Datum der zugehörigen Rechnungen. |
TrackingID
Kann leer sein |
string |
Höchste Sendungsverfolgungs-ID der zugehörigen Rechnungen. |
ShipVendor
Kann leer sein |
string |
Versanddienstleister der zugehörigen Rechnungen (Maximalwert). |
ShopID
Kann leer sein |
string |
Shop, dem der Kunde zugeordnet ist ( |
OrderDate
Kann leer sein |
dateTime |
Bestelldatum der Auftragspositionen: frühestes bei Einstellung |
ShipCost
Kann leer sein |
decimal |
Versandkosten des Auftrags. |
PaymentAddressId
Kann leer sein |
int |
Schlüssel der Rechnungsadresse ( |
ShipmentAddressId
Kann leer sein |
int |
Schlüssel der Lieferadresse ( |
ShopNote
Kann leer sein |
string |
Notiz aus dem Shop. |
PaymentType
Kann leer sein |
string |
Zahlungsart an der Rechnungsadresse. |
VoucherID
Kann leer sein |
string |
Gutschein-ID der Auftragspositionen (Maximalwert). |
VoucherAmount
Kann leer sein |
decimal |
Rabattbetrag des Auftrags ( |
CcCardType
Kann leer sein |
string |
Kreditkartentyp aus der Rechnungsadresse. |
CcCardNr
Kann leer sein |
string |
Kreditkartennummer aus der Rechnungsadresse. |
CcCardName
Kann leer sein |
string |
Name des Kreditkarteninhabers. |
CcCardExp
Kann leer sein |
string |
Ablaufdatum der Kreditkarte. |
Account
Kann leer sein |
string |
Kontonummer. |
Blz
Kann leer sein |
string |
Bankleitzahl. |
BankName
Kann leer sein |
string |
Name der Bank. |
AccountName
Kann leer sein |
string |
Name des Kontoinhabers. |
AddressRemarks
Kann leer sein |
string |
Adressbemerkungen des Auftrags. |
CustKey
|
int |
Interner Kundenschlüssel. |
SalutationText
Kann leer sein |
string |
Anrede der Lieferadresse. |
Gender
|
int |
Aus der Anrede abgeleitetes Geschlecht: 1 = männlich, 2 = weiblich, 0 = unbekannt. |
LastName
Kann leer sein |
string |
Nachname der Lieferadresse. |
FirstName
Kann leer sein |
string |
Vorname der Lieferadresse. |
ShippingCountry
Kann leer sein |
string |
Land der Lieferadresse. |
ZIP
Kann leer sein |
string |
Postleitzahl der Lieferadresse. |
City
Kann leer sein |
string |
Ort der Lieferadresse. |
Street
Kann leer sein |
string |
Straße der Lieferadresse. |
BirthDate
Kann leer sein |
dateTime |
Geburtsdatum an der Lieferadresse. |
CustomerNr
Kann leer sein |
varchar(10) string |
Kundennummer ( |
SubShopName
Kann leer sein |
string |
Name des Subshops. |
SubShopLogo
Kann leer sein |
string |
Logo des Subshops. |
Referrer
Kann leer sein |
string |
Referrer des Auftrags. |
GiftMessage
Kann leer sein |
string |
Geschenknachricht des Auftrags. |
OrderCurrency
Kann leer sein |
string |
Währungscode des Auftrags ( |
OrderTotal_OrderCurr
|
decimal |
Berechnete Summe: gerundete Positionswerte (außer Status |
Paid
Kann leer sein |
bit boolean |
1, wenn mindestens eine verknüpfte Zeile als bezahlt gilt (siehe Hinweise). |
PayedSum
Kann leer sein |
decimal |
Höchste bezahlte Summe vollständig bezahlter Rechnungen. |
CustomerEmail
Kann leer sein |
string |
E-Mail-Adresse des Kunden. |
CustomerNrExternal
Kann leer sein |
string |
Externe Kundennummer. |
EstimatedDelivery
Kann leer sein |
datetime dateTime |
Spätester voraussichtlicher Liefertermin; NULL, wenn eine Position keinen hat. |
OrderLocked
|
string |
Sperrkennzeichen der Lieferadresse ( |
LastInvoiceNr
Kann leer sein |
int |
Höchste Rechnungsnummer des Auftrags (Rechnungen mit |
Beispielantwort
<SqlRowSet1>
<row>
<OrderHeaderKey>48211</OrderHeaderKey>
<OrderNr>100512</OrderNr>
<CreateDate>2024-03-11T09:14:22</CreateDate>
<OrderNrExternal>SHOP-100234</OrderNrExternal>
<OrderTotal>84.90</OrderTotal>
<OrderlinesTotal>79.90</OrderlinesTotal>
<WholeOrderState>AUS</WholeOrderState>
<Shipdate>2024-03-12T14:02:00</Shipdate>
<LastShipdate>2024-03-12T14:02:00</LastShipdate>
<TrackingID>00340434161234567890</TrackingID>
<ShipVendor>DHL</ShipVendor>
<ShopID>WEB</ShopID>
<OrderDate>2024-03-11T09:14:22</OrderDate>
<ShipCost>5.00</ShipCost>
<PaymentAddressId>70211</PaymentAddressId>
<ShipmentAddressId>70212</ShipmentAddressId>
<PaymentType>PayPal</PaymentType>
<VoucherAmount>0.00</VoucherAmount>
<CustKey>33120</CustKey>
<SalutationText>Frau</SalutationText>
<Gender>2</Gender>
<LastName>Muster</LastName>
<FirstName>Anna</FirstName>
<ShippingCountry>DE</ShippingCountry>
<ZIP>80331</ZIP>
<City>München</City>
<Street>Marienplatz 1</Street>
<CustomerNr>10045</CustomerNr>
<OrderCurrency>EUR</OrderCurrency>
<OrderTotal_OrderCurr>84.90</OrderTotal_OrderCurr>
<Paid>true</Paid>
<PayedSum>84.90</PayedSum>
<CustomerEmail>anna.muster@example.com</CustomerEmail>
<CustomerNrExternal>C-55812</CustomerNrExternal>
<OrderLocked>N</OrderLocked>
<LastInvoiceNr>200781</LastInvoiceNr>
</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:pixiGetOrderHeaderList>
<OrderNrExternalXml><![CDATA[<x><i>SHOP-100234</i><i>SHOP-100235</i></x>]]></OrderNrExternalXml>
</ns1:pixiGetOrderHeaderList>
</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:pixiGetOrderHeaderList>
<OrderNrExternalXml><![CDATA[<x><i>SHOP-100234</i><i>SHOP-100235</i></x>]]></OrderNrExternalXml>
</ns1:pixiGetOrderHeaderList>
</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 = [
'OrderNrExternalXml' => '<x><i>SHOP-100234</i><i>SHOP-100235</i></x>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetOrderHeaderList', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetOrderHeaderList