Postman-Collection
Customers Lesen

pixiGetCRMCustomers

Liefert CRM-Kennzahlen je Kunde (Bestellabstände, Auftragsanzahlen, Nettoumsätze und Retourenbeträge je Zeitraum), berechnet aus Rechnungen und Aufträgen.

Berechnet je Kunde eine Zeile mit Kundenlebenszyklus-Kennzahlen auf Basis von Rechnungen und Aufträgen.

Rechnungen

  • Als Basis werden nur Rechnungen mit Total > 0 verwendet. Gefiltert wird nach InvDate zwischen CalculationStart und CalculationEnd (jede Grenze nur, wenn gesetzt), nach dem Rechnungsshop InvShopID = CustomerOf (falls nicht leer) und nach CustRef (falls nicht 0/NULL).
  • Beträge sind Nettobeträge (Total_Net bzw. Total_Net - Total_ShipCost_Net für die Werte ohne Versandkosten).
  • Retourenbeträge je Rechnung ergeben sich als 0 minus Summe der Nettobeträge aller Rechnungen, die über RefToInvoiceKey auf diese Rechnung verweisen (Gutschriften). Diese verweisenden Rechnungen werden nicht nach Datum oder Shop gefiltert.
  • Ist die Einstellung MultiCurrencyEnabled gleich 1, werden alle Beträge durch den Wechselkurs der Rechnung (ExchRateId) geteilt und BaseCurrency enthält den Code der Basiswährung dieses Wechselkurses. Andernfalls werden die Beträge in der ursprünglichen Rechnungswährung geliefert und BaseCurrency ist NULL.

Aufträge

  • Aufträge werden nach UpdateDate zwischen CalculationStart und CalculationEnd, nach CustomerOf des Kunden und nach CustRef gefiltert. Sie werden je Auftragsnummer gruppiert; als Auftragsdatum gilt das späteste CreateDate des Auftrags.
  • Daraus werden je Kunde das Datum des ersten, zweiten (nächsthöhere Auftragsnummer) und letzten Auftrags ermittelt.

Ergebnis

  • Je Kunde: Tage seit dem ersten/letzten Auftrag sowie zwischen erstem/zweitem und erstem/letztem Auftrag (bezogen auf das aktuelle Datum), Auftragsanzahlen der letzten 90/365/730 Tage und gesamt, Beträge der ersten, zweiten und letzten Rechnung (Spalten FirstOrder…, SecondOrder…, LastOrder…), Beträge im ersten und zweiten Jahr nach der ersten Rechnung, in den 365 Tagen vor der letzten Rechnung, in den beiden 365-Tage-Fenstern vor CalculationEnd (bzw. jetzt) sowie Gesamtsummen.
  • Es werden nur Kunden mit mindestens einer passenden Rechnung geliefert.
  • Paging: höchstens Rows Zeilen mit CustKey > Offset, sortiert nach CustKey aufsteigend. Offset ist ein Kundenschlüssel, keine Zeilenanzahl: für die nächste Seite den letzten CustKey der vorherigen Seite übergeben.

Hinweise

  • Nur lesend; alle permanenten Tabellen außer Customers werden WITH (NOLOCK) gelesen, daher können nicht festgeschriebene Daten enthalten sein.
  • Die Spalten FirstOrderTotal, SecondOrderTotal, LastOrderTotal usw. stammen aus der ersten, zweiten und letzten Rechnung (nach InvoiceKey), nicht aus Aufträgen.
  • Tagesstatistiken und die Auftragsanzahlen für 90/365/730 Tage beziehen sich immer auf GETDATE(), die …FromNow…-Beträge dagegen auf CalculationEnd (bzw. das aktuelle Datum, falls nicht gesetzt).
  • Zeitfenstergrenzen sind teilweise exklusiv: SecondYear… berücksichtigt z. B. nur Daten strikt nach erster Rechnung + 365 Tage und strikt vor + 730 Tage; Rechnungen genau auf der Grenze zählen in keinem der beiden Jahre.
  • Der Shopfilter verwendet für Beträge InvShopID der Rechnung, für Aufträge aber CustomerOf des Kunden; Datumsfilter nutzen bei Rechnungen InvDate, bei Aufträgen UpdateDate.
  • Bei aktivierter Mehrwährungsfähigkeit werden Rechnungen ohne passenden Wechselkurs übersprungen. Ein Kunde mit Rechnungen in verschiedenen Basiswährungen erscheint je Basiswährung einmal; die Zeitraumsummen (FirstYear…, LastYear… usw.) werden dabei nicht nach Währung getrennt.
  • DaysSince…-Spalten sind NULL, wenn kein Auftrag des Kunden den Filtern entspricht.
  • Die Berechnung erfolgt über mehrere temporäre Tabellen und korrelierte Unterabfragen; eine Einschränkung des Datumsbereichs oder von CustRef verbessert die Laufzeit bei großen Datenbanken.

Parameter

Parameter Typ Standardwert Beschreibung
CustomerOf
varchar(3)
string
NULL

Shop-ID. Filtert Rechnungen nach InvShopID und Aufträge nach CustomerOf des Kunden. NULL oder leer = alle Shops.

Beispiel: SHP

CalculationStart
datetime
dateTime
NULL

Untergrenze für Rechnungsdatum (InvDate) und Änderungsdatum des Auftrags (UpdateDate). NULL = keine Untergrenze.

Beispiel: 2022-01-01T00:00:00

CalculationEnd
datetime
dateTime
NULL

Obergrenze für Rechnungsdatum und Änderungsdatum des Auftrags. Zugleich Bezugsdatum der …FromNow…-Spalten; bei NULL dient das aktuelle Datum als Bezug und es gibt keine Obergrenze.

Beispiel: 2024-12-31T23:59:59

CustRef
int NULL

Kundenschlüssel, um die Berechnung auf einen Kunden zu beschränken. NULL oder 0 = alle Kunden.

Beispiel: 10234

Rows
int 1000

Maximale Anzahl gelieferter Zeilen (Seitengröße).

Beispiel: 500

Offset
int 0

Es werden nur Kunden mit CustKey größer als dieser Wert geliefert. Für die nächste Seite den letzten CustKey der vorherigen Seite übergeben.

Beispiel: 0

Antwort

Result-Set 1 · Immer (kann leer sein, wenn keine Rechnungen passen)

Eine Zeile je Kunde (und Basiswährung) mit CRM-Kennzahlen, sortiert nach CustKey aufsteigend.

Spalte Typ Beschreibung
CustKey int

Kundenschlüssel.

DaysSinceFirstOrder
Kann leer sein
int

Tage zwischen dem ersten Auftrag und heute.

DaysSinceLastOrder
Kann leer sein
int

Tage zwischen dem letzten Auftrag und heute.

DaysBetweenFirstAndSecondOrder int

Tage zwischen erstem und zweitem Auftrag; 0, wenn es keinen zweiten Auftrag gibt.

DaysBetweenFirstAndLastOrder int

Tage zwischen erstem und letztem Auftrag; 0, wenn nicht verfügbar.

Orders90days int

Anzahl der in den letzten 90 Tagen angelegten Aufträge.

Orders365days int

Anzahl der in den letzten 365 Tagen angelegten Aufträge.

Orders730days int

Anzahl der in den letzten 730 Tagen angelegten Aufträge.

OrdersTotal int

Gesamtanzahl der passenden Aufträge.

FirstOrderTotal
Kann leer sein
decimal(19,9)
decimal

Nettobetrag der ersten Rechnung.

FirstOrderTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Nettobetrag der ersten Rechnung ohne Versandkosten.

FirstOrderReturnTotal
Kann leer sein
decimal(19,9)
decimal

Retourenbetrag (Gutschriften zur ersten Rechnung).

FirstOrderReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Retourenbetrag der ersten Rechnung ohne Versandkosten.

SecondOrderTotal
Kann leer sein
decimal(19,9)
decimal

Nettobetrag der zweiten Rechnung.

SecondOrderTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Nettobetrag der zweiten Rechnung ohne Versandkosten.

SecondOrderReturnTotal
Kann leer sein
decimal(19,9)
decimal

Retourenbetrag der zweiten Rechnung.

SecondOrderReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Retourenbetrag der zweiten Rechnung ohne Versandkosten.

LastOrderTotal
Kann leer sein
decimal(19,9)
decimal

Nettobetrag der letzten Rechnung.

LastOrderTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Nettobetrag der letzten Rechnung ohne Versandkosten.

LastOrderReturnTotal
Kann leer sein
decimal(19,9)
decimal

Retourenbetrag der letzten Rechnung.

LastOrderReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Retourenbetrag der letzten Rechnung ohne Versandkosten.

FirstYearTotal
Kann leer sein
decimal(38,9)
decimal

Nettorechnungsbetrag innerhalb von 365 Tagen nach der ersten Rechnung.

FirstYearTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie FirstYearTotal, ohne Versandkosten.

FirstYearReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu Rechnungen des ersten Jahres.

FirstYearReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie FirstYearReturnTotal, ohne Versandkosten.

SecondYearTotal
Kann leer sein
decimal(38,9)
decimal

Nettorechnungsbetrag zwischen 365 und 730 Tagen nach der ersten Rechnung (Grenzen exklusiv).

SecondYearTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie SecondYearTotal, ohne Versandkosten.

SecondYearReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu Rechnungen des zweiten Jahres.

SecondYearReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie SecondYearReturnTotal, ohne Versandkosten.

LastYearTotal
Kann leer sein
decimal(38,9)
decimal

Nettorechnungsbetrag innerhalb von 365 Tagen vor (einschließlich) der letzten Rechnung.

LastYearTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie LastYearTotal, ohne Versandkosten.

LastYearReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu Rechnungen dieses Zeitraums.

LastYearReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie LastYearReturnTotal, ohne Versandkosten.

NextToLastYearFromNowTotal
Kann leer sein
decimal(38,9)
decimal

Nettorechnungsbetrag zwischen 730 und 365 Tagen vor CalculationEnd (bzw. jetzt).

NextToLastYearFromNowTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie NextToLastYearFromNowTotal, ohne Versandkosten.

NextToLastYearFromNowReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu Rechnungen dieses Zeitraums.

NextToLastYearFromNowReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie NextToLastYearFromNowReturnTotal, ohne Versandkosten.

LastYearFromNowTotal
Kann leer sein
decimal(38,9)
decimal

Nettorechnungsbetrag innerhalb der 365 Tage vor CalculationEnd (bzw. jetzt).

LastYearFromNowTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie LastYearFromNowTotal, ohne Versandkosten.

LastYearFromNowReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu Rechnungen dieses Zeitraums.

LastYearFromNowReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie LastYearFromNowReturnTotal, ohne Versandkosten.

OverallTotal
Kann leer sein
decimal(38,9)
decimal

Nettobetrag aller passenden Rechnungen.

OverallTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie OverallTotal, ohne Versandkosten.

OverallReturnTotal
Kann leer sein
decimal(38,9)
decimal

Retourenbetrag zu allen passenden Rechnungen.

OverallReturnTotalWithoutShipcosts
Kann leer sein
numeric(17,4)
decimal

Wie OverallReturnTotal, ohne Versandkosten.

BaseCurrency
Kann leer sein
varchar(3)
string

Basiswährungscode der Beträge, wenn MultiCurrencyEnabled = 1; sonst NULL (Beträge in Originalwährung).

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:pixiGetCRMCustomers>
      <!-- <CustomerOf>SHP</CustomerOf> -->
      <!-- <CalculationStart>2022-01-01T00:00:00</CalculationStart> -->
      <!-- <CalculationEnd>2024-12-31T23:59:59</CalculationEnd> -->
      <!-- <CustRef>10234</CustRef> -->
      <!-- <Rows>500</Rows> -->
      <!-- <Offset>0</Offset> -->
    </ns1:pixiGetCRMCustomers>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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