Postman-Collection
Customers Lesen

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.

  1. StartCustKey (NULL wird als 0 behandelt) legt den ersten Kunden fest. Es werden die ersten 10.000 unterschiedlichen CustRef-Werte aus OrderHeader mit CustRef >= StartCustKey in aufsteigender Reihenfolge ermittelt und ihre Aufträge gezählt (OrderCount). Kunden ohne Auftrag werden nie geliefert.
  2. Für jeden dieser Kunden wird berechnet:
    • DaysSinceLastOrder / DaysSinceFirstOrder: Tage zwischen heute und dem spätesten OrderDate in Orderlines des 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) und ReminderLevel (höchste Mahnstufe).
    • Aus Invlines: ItemCount_all, die Summe aller positiven ItemQty-Werte.
  3. Die Währungsbehandlung hängt von der Einstellung MultiCurrencyEnabled ab:
    • nicht 1: Beträge werden in der Originalwährung der Rechnung summiert, BaseCurrency ist NULL.
    • 1: jeder Rechnungsbetrag wird durch den Wechselkurs der Rechnung (pixi.ExchRate) geteilt, BaseCurrency enthält den ISO-Code der Basiswährung.
  4. Das Ergebnis wird mit Customers und der Hauptadresse des Kunden (Customers.AddrRef → Addresses) verknüpft und aufsteigend nach CustKey sortiert.

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 NOLOCK gelesen; die Werte können nicht festgeschriebene Daten enthalten.
  • Ohne Mehrwährung können Turnover_all, Turnover_avgPerOrder und ReturnValue verschiedene 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_avgPerOrder ist 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 OrderHeader vor der Verknüpfung mit Customers/Addresses gebildet; 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 (CustKey, inklusiv). NULL oder weggelassen beginnt bei 0. Für Paging den zuletzt gelieferten CustKey + 1 übergeben.

Beispiel: 10001

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 OrderHeader.

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 (Customers.CustomerOf).

eMail
Kann leer sein
string

E-Mail-Adresse der Hauptadresse.

Salutation
Kann leer sein
string

Anrede (Addresses.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 (Customers.SLocked).

BaseCurrency
Kann leer sein
varchar(3)
string

ISO-Code der Basiswährung der Beträge bei aktivierter Mehrwährung; sonst NULL.

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>

Verwendete Tabellen

Settings · Lesen OrderHeader · Lesen Orderlines · Lesen Invoices · Lesen ExchRate · Lesen Currency · Lesen Invlines · Lesen Customers · Lesen Addresses · Lesen
SQL-Objekt:
dbo.pipiGetCustomerList
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben