pixiGetCustomerList
Liefert bis zu 10.000 Kunden mit Aufträgen ab einem Kundenschlüssel, mit Auftrags-, Umsatz-, Retouren- und Mahnstatistik sowie Daten der Hauptadresse.
Erstellt eine Kundenliste mit Kennzahlen, ausgehend von den Aufträgen in OrderHeader.
StartCustKey(NULL wird als0behandelt) legt den ersten Kunden fest. Es werden die ersten 10.000 unterschiedlichenCustRef-Werte ausOrderHeadermitCustRef >= StartCustKeyin aufsteigender Reihenfolge ermittelt und ihre Aufträge gezählt (OrderCount). Kunden ohne Auftrag werden nie geliefert.- Für jeden dieser Kunden wird berechnet:
DaysSinceLastOrder/DaysSinceFirstOrder: Tage zwischen heute und dem spätestenOrderDateinOrderlinesdes Auftrags mit der höchsten bzw. niedrigsten Auftragsnummer des Kunden.- Aus
Invoices:Turnover_all(Summe der Rechnungen mit positivem Betrag),Turnover_avgPerOrder(Durchschnitt der positiven Rechnungsbeträge),ReturnCount(Anzahl der Rechnungen mit negativem Betrag),ReturnValue(Summe der negativen Beträge) undReminderLevel(höchste Mahnstufe). - Aus
Invlines:ItemCount_all, die Summe aller positivenItemQty-Werte.
- Die Währungsbehandlung hängt von der Einstellung
MultiCurrencyEnabledab:- nicht
1: Beträge werden in der Originalwährung der Rechnung summiert,BaseCurrencyist NULL. 1: jeder Rechnungsbetrag wird durch den Wechselkurs der Rechnung (pixi.ExchRate) geteilt,BaseCurrencyenthält den ISO-Code der Basiswährung.
- nicht
- Das Ergebnis wird mit
Customersund der Hauptadresse des Kunden (Customers.AddrRef→Addresses) verknüpft und aufsteigend nachCustKeysortiert.
Paging: Für den nächsten Block erneut mit StartCustKey = zuletzt gelieferter CustKey + 1 aufrufen (der Filter ist inklusiv).
Hinweise
- Alle permanenten Tabellen werden mit
NOLOCKgelesen; die Werte können nicht festgeschriebene Daten enthalten. - Ohne Mehrwährung können
Turnover_all,Turnover_avgPerOrderundReturnValueverschiedene Währungen vermischen, wenn ein Kunde Rechnungen in mehreren Währungen hat. - Mit aktivierter Mehrwährung werden Rechnungen ohne passenden Wechselkurs-Datensatz ignoriert. Verweisen die Rechnungen eines Kunden auf mehr als eine Basiswährung, schlägt der eindeutige Index auf der temporären Rechnungstabelle fehl und der Aufruf endet mit einem SQL-Fehler.
Turnover_avgPerOrderist der Durchschnitt je positiver Rechnung, nicht je Auftrag.- Die Tage seit erstem/letztem Auftrag beruhen auf der niedrigsten/höchsten Auftragsnummer, nicht auf dem frühesten/spätesten Auftragsdatum; sie sind NULL, wenn dieser Auftrag keine Positionen hat.
- Der Block von 10.000 wird aus
OrderHeadervor der Verknüpfung mitCustomers/Addressesgebildet; dort fehlende Kunden entfallen, sodass ein Block weniger als 10.000 Zeilen enthalten kann, obwohl weitere Kunden folgen. Paging fortsetzen, bis ein leeres Ergebnis zurückkommt. - Die Adresse ist die Hauptadresse (
AddrRef), nicht die Lieferadresse. - Die Aggregation über alle Aufträge und Rechnungen kann bei großen Datenbanken aufwendig sein.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
StartCustKey
|
int | NULL |
Kleinster einzuschließender Kundenschlüssel ( Beispiel: |
Antwort
Result-Set 1 · Immer (leer, wenn kein Kunde mit Aufträgen einen Schlüssel >= StartCustKey hat)
Eine Zeile je Kunde mit Aufträgen, höchstens 10.000 Zeilen, aufsteigend nach CustKey sortiert.
| Spalte | Typ | Beschreibung |
|---|---|---|
CustKey
|
int |
Interner Kundenschlüssel. |
CustomerNrExternal
Kann leer sein |
string |
Externe Kundennummer (z. B. aus dem Shop). |
OrderCount
|
int |
Anzahl der Aufträge des Kunden in |
Turnover_all
Kann leer sein |
money decimal |
Summe aller Rechnungsbeträge > 0 (bei aktivierter Mehrwährung in Basiswährung umgerechnet). |
ItemCount_all
Kann leer sein |
decimal |
Summe aller positiven Artikelmengen auf den Rechnungspositionen des Kunden. |
Turnover_avgPerOrder
Kann leer sein |
money decimal |
Durchschnitt der Rechnungsbeträge > 0. |
ReturnCount
|
int |
Anzahl der Rechnungen mit negativem Betrag (Gutschriften); 0, wenn keine. |
ReturnValue
Kann leer sein |
money decimal |
Summe der negativen Rechnungsbeträge (negativer Wert). |
ReminderLevel
Kann leer sein |
int |
Höchste Mahnstufe aller Rechnungen des Kunden. |
DaysSinceLastOrder
Kann leer sein |
int |
Tage seit dem Auftragsdatum des Auftrags mit der höchsten Auftragsnummer. |
DaysSinceFirstOrder
Kann leer sein |
int |
Tage seit dem Auftragsdatum des Auftrags mit der niedrigsten Auftragsnummer. |
ShopID
Kann leer sein |
string |
Shop, zu dem der Kunde gehört ( |
eMail
Kann leer sein |
string |
E-Mail-Adresse der Hauptadresse. |
Salutation
Kann leer sein |
string |
Anrede ( |
FirstName
Kann leer sein |
string |
Vorname. |
LastName
Kann leer sein |
string |
Nachname. |
Name
Kann leer sein |
string |
Name / Firmenname der Adresse. |
CareOf
Kann leer sein |
string |
Zusatzzeile (c/o) der Adresse. |
Address
Kann leer sein |
string |
Straße und Hausnummer. |
ZIP
Kann leer sein |
string |
Postleitzahl. |
Country
Kann leer sein |
string |
Land der Adresse. |
ShipLock
Kann leer sein |
string |
Liefersperre des Kunden ( |
BaseCurrency
Kann leer sein |
varchar(3) string |
ISO-Code der Basiswährung der Beträge bei aktivierter Mehrwährung; sonst NULL. |
Beispielantwort
<SqlRowSet1>
<row>
<CustKey>10001</CustKey>
<CustomerNrExternal>SHOP-4711</CustomerNrExternal>
<OrderCount>5</OrderCount>
<Turnover_all>489.7000</Turnover_all>
<ItemCount_all>12</ItemCount_all>
<Turnover_avgPerOrder>97.9400</Turnover_avgPerOrder>
<ReturnCount>1</ReturnCount>
<ReturnValue>-39.9000</ReturnValue>
<ReminderLevel>0</ReminderLevel>
<DaysSinceLastOrder>14</DaysSinceLastOrder>
<DaysSinceFirstOrder>412</DaysSinceFirstOrder>
<ShopID>WEB</ShopID>
<eMail>max.mustermann@example.com</eMail>
<Salutation>Herr</Salutation>
<FirstName>Max</FirstName>
<LastName>Mustermann</LastName>
<Name>Max Mustermann</Name>
<CareOf/>
<Address>Hauptstraße 1</Address>
<ZIP>80331</ZIP>
<Country>DE</Country>
<ShipLock>0</ShipLock>
<BaseCurrency>EUR</BaseCurrency>
</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:pixiGetCustomerList>
<!-- <StartCustKey>10001</StartCustKey> -->
</ns1:pixiGetCustomerList>
</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:pixiGetCustomerList>
<!-- <StartCustKey>10001</StartCustKey> -->
</ns1:pixiGetCustomerList>
</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 = [
// 'StartCustKey' => '10001',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetCustomerList', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetCustomerList