pixiSatisfiedCustomers
Liefert fakturierte Kunden (oder die Rechnungspositionen eines Kunden) in einem Liefer- und Bestellzeitraum, z. B. für Zufriedenheitsumfragen oder Bewertungsanfragen.
Wählt Rechnungspositionen zusammen mit den zugehörigen Auftragspositionen und der Rechnungsadresse aus. Das Ergebnis eignet sich, um Kunden zu kontaktieren, die kürzlich Ware erhalten haben.
Zeitraum: Die Tagesparameter beziehen sich auf das aktuelle Serverdatum (GETDATE()):
MaxDaysSinceDelivery: Rechnungsdatum (InvDate) muss am oder nach dem Tagesbeginn vor N Tagen liegen.MinDaysSinceDelivery: Rechnungsdatum muss am oder vor dem Tagesende vor N Tagen liegen.MaxDaysSinceOrder/MinDaysSinceOrder: entsprechend für das Bestelldatum der Auftragsposition.NULLdeaktiviert die jeweilige Grenze.
Weitere Filter:
- Rechnungen, auf die eine andere Rechnung (
RefToInvoiceKey, z. B. Gutschrift) mit Rechnungsdatum ab demMaxDaysSinceDelivery-Datum verweist, werden ausgeschlossen. - Positionen, deren Auftragsposition den Status
MINund ein Bestelldatum ab demMaxDaysSinceDelivery-Datum hat, werden ausgeschlossen. ExcludePartialDeliveries = 1: Aufträge (überOrderNr), die noch Auftragspositionen im StatusANGoderEINhaben, werden ausgeschlossen.NoOrderSince = 1: Kunden mit einer Auftragsposition, deren Bestelldatum am oder nach demMinDaysSinceDelivery-Datum liegt, werden ausgeschlossen.- Nur Positionen mit
ItemQty >= 0.
Zwei Modi:
CustomerNrExternalistNULL: eine Zeile pro externer Kundennummer (GROUP BY Addresses.CustomerNrExternal), sortiert nach Kundennummer.ItemQtyist die Anzahl der passenden Rechnungspositionen.CustomerNrExternalist gesetzt: nur Positionen dieses Kunden, eine Zeile pro Rechnungsposition (GROUP BY Invlinekey), ohne explizite Sortierung.ItemQtyist die Menge der Position.
Hinweise
- Alle Tabellen werden
WITH (NOLOCK)gelesen; das Ergebnis kann nicht festgeschriebene Daten enthalten. - Im Kundenmodus wird jede Spalte unabhängig mit
MAX/MINaggregiert, daher könnenInvoiceNr,ItemText,ItemPrice,ItemNrShopusw. aus unterschiedlichen Rechnungen oder Positionen desselben Kunden stammen. - Adressen ohne externe Kundennummer werden im Kundenmodus zu einer
NULL-Zeile zusammengefasst. - Der Gutschriftsfilter und der Filter auf Status
MINgreifen nur, wennMaxDaysSinceDeliverygesetzt ist; beiNULLtrifft der Vergleich nie zu und nichts wird ausgeschlossen. NoOrderSince = 1wirkt nur, wennMinDaysSinceDeliverygesetzt ist, da gegen dieses Datum verglichen wird.- Die Tabelle zu
ItemQty,ItemText,ItemPrice,orderdateundStatusist im Code nicht qualifiziert; vermutlich Rechnungs- bzw. Auftragspositionen. - Die Bedeutung der Auftragspositionsstatus
MIN,ANGundEINist im Code nicht definiert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
MaxDaysSinceDelivery
|
int | NULL |
Ältestes Rechnungsdatum in Tagen vor heute; Rechnungsdatum muss am oder nach dem Beginn dieses Tages liegen. NULL = keine Untergrenze. Beispiel: |
MinDaysSinceDelivery
|
int | NULL |
Jüngstes Rechnungsdatum in Tagen vor heute; Rechnungsdatum muss am oder vor dem Ende dieses Tages liegen. Wird auch von NoOrderSince verwendet. NULL = keine Obergrenze. Beispiel: |
MaxDaysSinceOrder
|
int | NULL |
Ältestes Bestelldatum in Tagen vor heute (Tagesbeginn). NULL = keine Untergrenze. |
MinDaysSinceOrder
|
int | NULL |
Jüngstes Bestelldatum in Tagen vor heute (Tagesende). NULL = keine Obergrenze. |
CustomerNrExternal
|
varchar(60) string |
NULL |
Externe Kundennummer der Rechnungsadresse. Wenn gesetzt, eine Zeile pro Rechnungsposition dieses Kunden; bei NULL eine Zeile pro Kunde. Beispiel: |
ExcludePartialDeliveries
|
bit boolean |
0 |
Schließt Aufträge aus, die noch Auftragspositionen im Status ANG oder EIN haben. Erlaubte Werte
Beispiel: |
NoOrderSince
|
bit boolean |
0 |
Schließt Kunden aus, die am oder nach dem MinDaysSinceDelivery-Datum bestellt haben. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn CustomerNrExternal NULL ist
Eine Zeile pro externer Kundennummer, sortiert nach Kundennummer. Werte sind spaltenweise aggregiert.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvoiceNr
Kann leer sein |
string |
Höchste Rechnungsnummer des Kunden |
InvoiceKey
Kann leer sein |
int |
Höchster Rechnungsschlüssel des Kunden |
CustomerNRExternal
Kann leer sein |
string |
Externe Kundennummer |
ShopID
Kann leer sein |
string |
Shop-ID der Adresse (Addresses.AddrShopID) |
Anrede
|
string |
Anrede, Leerstring wenn nicht vorhanden |
Name
Kann leer sein |
string |
Kundenname |
email
Kann leer sein |
string |
E-Mail-Adresse |
LastDeliveryDate
Kann leer sein |
datetime dateTime |
Letztes Rechnungsdatum in der Auswahl |
FirstOrderDate
Kann leer sein |
datetime dateTime |
Frühestes Bestelldatum in der Auswahl |
ItemText
Kann leer sein |
string |
Alphabetisch höchster Artikeltext der Positionen |
ItemQty
|
int |
Anzahl passender Rechnungspositionen |
ItemNrShop
Kann leer sein |
string |
Items.ItemNrInt des höchsten Artikelschlüssels der Positionen |
ItemPrice
Kann leer sein |
decimal |
Höchster Artikelpreis der Positionen |
Result-Set 2 · Wenn CustomerNrExternal gesetzt ist
Eine Zeile pro Rechnungsposition des angegebenen Kunden, ohne explizite Sortierung.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvoiceNr
Kann leer sein |
string |
Rechnungsnummer |
InvoiceKey
Kann leer sein |
int |
Rechnungsschlüssel |
CustomerNRExternal
Kann leer sein |
string |
Externe Kundennummer |
ShopID
Kann leer sein |
string |
Shop-ID der Adresse |
Anrede
|
string |
Anrede, Leerstring wenn nicht vorhanden |
Name
Kann leer sein |
string |
Kundenname |
email
Kann leer sein |
string |
E-Mail-Adresse |
LastDeliveryDate
Kann leer sein |
datetime dateTime |
Rechnungsdatum |
FirstOrderDate
Kann leer sein |
datetime dateTime |
Bestelldatum der Auftragsposition |
ItemText
Kann leer sein |
string |
Artikeltext der Position |
ItemQty
Kann leer sein |
decimal |
Menge der Position |
ItemNrShop
Kann leer sein |
string |
Items.ItemNrInt des Artikels der Position |
ItemPrice
Kann leer sein |
decimal |
Artikelpreis der Position |
Beispielantwort
<SqlRowSet1>
<row>
<InvoiceNr>RE2024-10452</InvoiceNr>
<InvoiceKey>88213</InvoiceKey>
<CustomerNRExternal>K100234</CustomerNRExternal>
<ShopID>SHOP1</ShopID>
<Anrede>Frau</Anrede>
<Name>Anna Müller</Name>
<email>anna.mueller@example.de</email>
<LastDeliveryDate>2024-05-03T14:22:10</LastDeliveryDate>
<FirstOrderDate>2024-04-29T09:15:00</FirstOrderDate>
<ItemText>Trekkingschuh Alpin</ItemText>
<ItemQty>2</ItemQty>
<ItemNrShop>TS-ALP-42</ItemNrShop>
<ItemPrice>89.9000</ItemPrice>
</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:pixiSatisfiedCustomers>
<!-- <MaxDaysSinceDelivery>20</MaxDaysSinceDelivery> -->
<!-- <MinDaysSinceDelivery>10</MinDaysSinceDelivery> -->
<!-- <MaxDaysSinceOrder>?</MaxDaysSinceOrder> -->
<!-- <MinDaysSinceOrder>?</MinDaysSinceOrder> -->
<!-- <CustomerNrExternal>K100234</CustomerNrExternal> -->
<!-- <ExcludePartialDeliveries>1</ExcludePartialDeliveries> -->
<!-- <NoOrderSince>0</NoOrderSince> -->
</ns1:pixiSatisfiedCustomers>
</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:pixiSatisfiedCustomers>
<!-- <MaxDaysSinceDelivery>20</MaxDaysSinceDelivery> -->
<!-- <MinDaysSinceDelivery>10</MinDaysSinceDelivery> -->
<!-- <MaxDaysSinceOrder>?</MaxDaysSinceOrder> -->
<!-- <MinDaysSinceOrder>?</MinDaysSinceOrder> -->
<!-- <CustomerNrExternal>K100234</CustomerNrExternal> -->
<!-- <ExcludePartialDeliveries>1</ExcludePartialDeliveries> -->
<!-- <NoOrderSince>0</NoOrderSince> -->
</ns1:pixiSatisfiedCustomers>
</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 = [
// 'MaxDaysSinceDelivery' => '20',
// 'MinDaysSinceDelivery' => '10',
// 'MaxDaysSinceOrder' => '?',
// 'MinDaysSinceOrder' => '?',
// 'CustomerNrExternal' => 'K100234',
// 'ExcludePartialDeliveries' => '1',
// 'NoOrderSince' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSatisfiedCustomers', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSatisfiedCustomers