pixiGetCRMSales
Liefert den kumulierten Netto-Umsatz je Kunde aus Rechnungen abzüglich referenzierender Gutschriften, optional gefiltert nach Shops und Rechnungsdatum, mit Keyset-Paging.
Berechnet eine Umsatzkennzahl je Kunde (CustKey) aus den Rechnungen und liefert eine Zeile je Kunde und Basiswährung.
Ablauf
- Ein leerer Wert in
CustomerOfwird wieNULLbehandelt. Ist er gesetzt, wird er als XML ausgewertet (/SHOPS/SHOP, WertSHOPID, als Element oder Attribut). Es werden nur Shop-IDs berücksichtigt, die inShopsexistieren. - Rechnungen werden ausgewählt, wenn:
- der Bruttobetrag
Totalgrößer als 0 ist (Gutschriften mit negativem Betrag zählen nicht als eigene Rechnung), - das Rechnungsdatum
InvDateim BereichCalculationStart…CalculationEndliegt (beide Grenzen inklusive und optional), - bei gesetztem
CustomerOfder Shop des Kunden (CustomerOf) zu den übergebenen Shops gehört.
- der Bruttobetrag
- Je Rechnung werden der Nettobetrag (
Total_Net) und der Nettobetrag ohne Versandkosten (Total_Net - Total_ShipCost_Net) herangezogen. Die Nettobeträge aller Rechnungen, die überRefToInvoiceKeyauf diese Rechnung verweisen (in der Regel Gutschriften), werden zu diesen Werten addiert. - Währungsbehandlung abhängig von der Einstellung
MultiCurrencyEnabled:- nicht
1: Beträge bleiben in der Originalwährung der Rechnung,BaseCurrencyistNULL; 1: jeder Betrag wird durch den Wechselkurs der Rechnung (pixi.ExchRate) geteilt,BaseCurrencyenthält den Code der Basiswährung dieses Kurses.
- nicht
- Die Ergebnisse werden nach
CustKeyundBaseCurrencygruppiert.
Paging
Das Paging arbeitet mit Schlüsseln: Es werden nur Kunden mit CustKey größer als Offset geliefert, aufsteigend nach CustKey sortiert und auf Rows Zeilen begrenzt. Für die nächste Seite wird der zuletzt gelieferte CustKey als Offset übergeben. Offset ist keine Zeilenanzahl.
Hinweise
- Alle Lesezugriffe erfolgen mit
NOLOCK, das Ergebnis kann daher nicht festgeschriebene Daten enthalten. - Ist
CustomerOfgesetzt, aber keine der Shop-IDs existiert inShops, werden keine Zeilen geliefert. Ungültiges XML führt zu einem Fehler vonsp_xml_preparedocument. - Ohne Mehrwährung (
MultiCurrencyEnabledungleich1) werden Beträge verschiedener Rechnungswährungen ohne Umrechnung addiert. - Mit Mehrwährung werden Rechnungen ohne Wechselkurs (
ExchRateIdnicht inpixi.ExchRatevorhanden) ausgeschlossen; referenzierende Gutschriften ohne Wechselkurs fließen nicht in die Summen ein. Umgerechnete Beträge werden mit 9 Nachkommastellen gespeichert. - Mit Mehrwährung kann ein Kunde in mehreren Zeilen erscheinen (eine je Basiswährung). Da
RowsZeilen und nicht Kunden begrenzt, kann eine Seite mitten in den Zeilen eines Kunden enden; wird dieserCustKeyals nächsterOffsetverwendet, entfallen die restlichen Zeilen dieses Kunden. - Der Datumsfilter gilt nur für die Hauptrechnung; referenzierende Gutschriften werden unabhängig von ihrem Datum einbezogen.
- Ein Kennzeichen für Komplettretouren wird intern berechnet, aber nicht ausgegeben.
- Die Datenbankwährung wird über
pixi.GetDatabaseCurrency()gelesen, die Werte werden im Ergebnis jedoch nicht verwendet.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
CustomerOf
|
varchar(max) xml |
NULL |
XML-Liste von pixi*-Shops ( Beispiel:
|
CalculationStart
|
datetime dateTime |
NULL |
Frühestes Rechnungsdatum (inklusive). Beispiel: |
CalculationEnd
|
datetime dateTime |
NULL |
Spätestes Rechnungsdatum (inklusive). Beispiel: |
Rows
|
int | 1000 |
Maximale Anzahl gelieferter Zeilen. Beispiel: |
Offset
|
int | 0 |
Es werden nur Kunden mit Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein).
Kumulierter Umsatz je Kunde und Basiswährung, aufsteigend nach CustKey sortiert.
| Spalte | Typ | Beschreibung |
|---|---|---|
CustKey
Kann leer sein |
int |
Kundenschlüssel ( |
TotalCompound
Kann leer sein |
decimal(38,9) decimal |
Summe der Netto-Rechnungsbeträge einschließlich der Nettobeträge referenzierender Gutschriften; bei aktivierter Mehrwährung in die Basiswährung umgerechnet. |
TotalWithoutShipcostsCompound
Kann leer sein |
numeric(17,4) decimal |
Wie |
BaseCurrency
Kann leer sein |
varchar(3) string |
Code der Basiswährung der Beträge bei aktivierter Mehrwährung; sonst |
Beispielantwort
<SqlRowSet1>
<row>
<CustKey>1001</CustKey>
<TotalCompound>1523.450000000</TotalCompound>
<TotalWithoutShipcostsCompound>1488.4500</TotalWithoutShipcostsCompound>
<BaseCurrency>EUR</BaseCurrency>
</row>
<row>
<CustKey>1002</CustKey>
<TotalCompound>89.900000000</TotalCompound>
<TotalWithoutShipcostsCompound>84.9000</TotalWithoutShipcostsCompound>
<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:pixiGetCRMSales>
<!-- <CustomerOf><![CDATA[<SHOPS><SHOP><SHOPID>ABC</SHOPID></SHOP><SHOP><SHOPID>XYZ</SHOPID></SHOP></SHOPS>]]></CustomerOf> -->
<!-- <CalculationStart>2024-01-01T00:00:00</CalculationStart> -->
<!-- <CalculationEnd>2024-12-31T23:59:59</CalculationEnd> -->
<!-- <Rows>1000</Rows> -->
<!-- <Offset>0</Offset> -->
</ns1:pixiGetCRMSales>
</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:pixiGetCRMSales>
<!-- <CustomerOf><![CDATA[<SHOPS><SHOP><SHOPID>ABC</SHOPID></SHOP><SHOP><SHOPID>XYZ</SHOPID></SHOP></SHOPS>]]></CustomerOf> -->
<!-- <CalculationStart>2024-01-01T00:00:00</CalculationStart> -->
<!-- <CalculationEnd>2024-12-31T23:59:59</CalculationEnd> -->
<!-- <Rows>1000</Rows> -->
<!-- <Offset>0</Offset> -->
</ns1:pixiGetCRMSales>
</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 = [
// 'CustomerOf' => '<SHOPS><SHOP><SHOPID>ABC</SHOPID></SHOP><SHOP><SHOPID>XYZ</SHOPID></SHOP></SHOPS>',
// 'CalculationStart' => '2024-01-01T00:00:00',
// 'CalculationEnd' => '2024-12-31T23:59:59',
// 'Rows' => '1000',
// 'Offset' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetCRMSales', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetCRMSales