pixiReport_NewCustomersStats
Liefert für ein Jahr einen Monatsbericht, der Bestellanzahl, Bestellwerte und Durchschnittswerte von Neukunden und Bestandskunden vergleicht.
Erstellt einen pivotierten Bericht mit einer Zeile je Berichtszeile und einer Spalte je Monat (Month01–Month12) sowie einer Spalte Average.
Parameter und Filter
Yearwird beiNULLauf das aktuelle Jahr gesetzt.Shop(Vergleich mitCustomers.CustomerOf) undCountry(Vergleich mit dem Land der Adresse der Auftragsposition) sind optional; ein Leerstring wird wieNULLbehandelt, also ohne Filter.
Neukunden
Ein Kunde gilt in einem Monat als Neukunde, wenn das früheste OrderDate aller seiner Auftragspositionen (innerhalb des Shop-/Länderfilters) in diesem Monat von Year liegt. Nur die Positionen mit genau diesem Erstbestelldatum zählen als Neukundenbestellung; weitere Bestellungen im selben Monat gelten als Bestellungen von Bestandskunden.
Berichtszeilen (GroupNumber / LineNumber)
- Gruppe 1 – Bestellanzahl:
- 1
Orders new customers: Anzahl der Kunden, deren Erstbestellung in den Monat fällt. - 2
Orders customers: Zeile 3 minus Zeile 1. - 3
Total: Anzahl unterschiedlicher Auftragsnummern im Monat, ohne Positionen mit StatusSTOoderNLB. - 4
rate new customers: Zeile 1 / Zeile 3 × 100 (0, wenn Zeile 3 gleich 0).
- 1
- Gruppe 2 – Bestellwerte (Summe von
OrderLineAmount, Positionen mit StatusSTO/NLBausgeschlossen):- 5 Wert der Erstbestellungen von Neukunden.
- 6 Zeile 7 minus Zeile 5.
- 7
Total: Wert aller Auftragspositionen des Monats. - 8 Anteil Neukunden (Zeile 5 / Zeile 7 × 100), 9 Anteil Bestandskunden (Zeile 6 / Zeile 7 × 100).
- Gruppe 3 – Durchschnitt je Auftragsposition:
- 10 durchschnittlicher
OrderLineAmountaller Kandidatenpositionen im Monat. - 11 durchschnittlicher
OrderLineAmountder Erstbestellpositionen von Neukunden.
- 10 durchschnittlicher
Spalte Average: arithmetisches Mittel der für die Zeile vorhandenen Monatswerte.
Die Zeilen sind nach LineNumber sortiert. ParYear, ParShop und ParCountry geben die wirksamen Parameter zurück; dbCurrency enthält den Code der Datenbankwährung, wenn Multi-Currency aktiv ist.
Hinweise
- Multi-Currency: Ist die Einstellung
MultiCurrencyEnabledgleich1, werden Bestellwerte in die Datenbankwährung umgerechnet (EinstellungHomeCurrency, Kursquelle ausDatabaseCurrencyExchRateSourceId), überpixi.ExchRatezum Kursdatum des Auftragskopfs. Auftragspositionen ohne passendenOrderHeaderbzw. Kurs fallen dann aus den Wertzeilen heraus. Andernfalls ist der Kurs 1 unddbCurrencyistNULL. - Fallstrick Beschriftung: Zeile 10 ist als Durchschnitt der Neukunden beschriftet, mittelt aber alle Kandidatenpositionen (inklusive Status
STO/NLB); Zeile 11 ist als Durchschnitt der Kunden beschriftet, mittelt aber die Erstbestellpositionen der Neukunden. Zeilen 10 und 11 schließenSTO/NLBnicht aus. - Die Durchschnitte in Gruppe 3 beziehen sich auf Auftragspositionen, nicht auf Aufträge.
- Zeilen 6, 7, 8, 9 und 10 enthalten nur Monate mit Auftragspositionen; andere Monate bleiben
0und fließen nicht inAverageein,Averageist also nur der Mittelwert der Monate mit Daten. - Erstbestellungen werden ohne Statusfilter ermittelt; ein Kunde, dessen früheste Position Status
STO/NLBhat, wird trotzdem in Zeile 1 gezählt. - Die Neukundenermittlung nutzt Inner Joins auf Adresse und Kunde, daher werden Positionen ohne Land oder
CustomerOfnicht berücksichtigt, während die GesamtzeilenNULL-Werte für Land/Shop akzeptieren. - Ein Monat kann in den Zeilen 2–4 fehlen, wenn alle seine Aufträge durch die Filter entfallen.
- Alle Lesezugriffe erfolgen mit
NOLOCK(Dirty Reads möglich). Zeile 3 verknüpft Auftragspositionen überMONTH(OrderDate), was die gesamte TabelleOrderlinesdurchsucht und bei großen Datenbanken langsam sein kann.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Year
|
int | NULL |
Berichtsjahr. Beispiel: |
Shop
|
varchar(3) string |
NULL |
Shop-ID, verglichen mit Beispiel: |
Country
|
varchar(3) string |
NULL |
Ländercode der Adresse der Auftragsposition. Beispiel: |
Antwort
Result-Set 1 · Immer
Eine Zeile je Berichtszeile (bis zu 11), sortiert nach LineNumber, mit Monatswerten und Durchschnitt.
| Spalte | Typ | Beschreibung |
|---|---|---|
GroupNumber
|
int |
Gruppe der Zeile: 1 = Bestellanzahl, 2 = Bestellwerte, 3 = Durchschnitte. |
LineNumber
|
int |
Nummer der Berichtszeile (1–11). |
LineLabel
|
varchar(256) string |
Feste zweisprachige Beschriftung der Zeile. |
Month01
|
float decimal |
Wert für Januar; 0, wenn kein Wert vorhanden. |
Month02
|
float decimal |
Wert für Februar. |
Month03
|
float decimal |
Wert für März. |
Month04
|
float decimal |
Wert für April. |
Month05
|
float decimal |
Wert für Mai. |
Month06
|
float decimal |
Wert für Juni. |
Month07
|
float decimal |
Wert für Juli. |
Month08
|
float decimal |
Wert für August. |
Month09
|
float decimal |
Wert für September. |
Month10
|
float decimal |
Wert für Oktober. |
Month11
|
float decimal |
Wert für November. |
Month12
|
float decimal |
Wert für Dezember. |
Average
|
float decimal |
Mittelwert der für die Zeile vorhandenen Monatswerte. |
ParYear
|
int |
Wirksames Berichtsjahr. |
ParShop
Kann leer sein |
varchar(3) string |
Wirksamer Shopfilter; |
ParCountry
Kann leer sein |
varchar(3) string |
Wirksamer Länderfilter; |
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung, wenn Multi-Currency aktiv ist, sonst |
Beispielantwort
<SqlRowSet1>
<row>
<GroupNumber>1</GroupNumber>
<LineNumber>1</LineNumber>
<LineLabel>Orders new customers (Bestellungen Neukunden)</LineLabel>
<Month01>42</Month01>
<Month02>37</Month02>
<Month03>51</Month03>
<Month04>0</Month04>
<Month05>0</Month05>
<Month06>0</Month06>
<Month07>0</Month07>
<Month08>0</Month08>
<Month09>0</Month09>
<Month10>0</Month10>
<Month11>0</Month11>
<Month12>0</Month12>
<Average>10.83</Average>
<ParYear>2024</ParYear>
<ParCountry>DE</ParCountry>
<dbCurrency>EUR</dbCurrency>
</row>
<row>
<GroupNumber>1</GroupNumber>
<LineNumber>2</LineNumber>
<LineLabel>Orders customers (Bestellungen Bestandskunden)</LineLabel>
<Month01>118</Month01>
<Month02>104</Month02>
<Month03>129</Month03>
<Month04>0</Month04>
<Month05>0</Month05>
<Month06>0</Month06>
<Month07>0</Month07>
<Month08>0</Month08>
<Month09>0</Month09>
<Month10>0</Month10>
<Month11>0</Month11>
<Month12>0</Month12>
<Average>29.25</Average>
<ParYear>2024</ParYear>
<ParCountry>DE</ParCountry>
<dbCurrency>EUR</dbCurrency>
</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:pixiReport_NewCustomersStats>
<!-- <Year>2024</Year> -->
<!-- <Shop>SHP</Shop> -->
<!-- <Country>DE</Country> -->
</ns1:pixiReport_NewCustomersStats>
</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:pixiReport_NewCustomersStats>
<!-- <Year>2024</Year> -->
<!-- <Shop>SHP</Shop> -->
<!-- <Country>DE</Country> -->
</ns1:pixiReport_NewCustomersStats>
</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 = [
// 'Year' => '2024',
// 'Shop' => 'SHP',
// 'Country' => 'DE',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReport_NewCustomersStats', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReport_NewCustomersStats