pixiGetCustomerAccountBalance
Liefert den Kundenkontosaldo (Summe aller Kontobuchungen bis zu einem optionalen Stichtag) eines Kunden, ermittelt über den internen Schlüssel oder die externe Kundennummer.
Berechnet den Saldo des Kundenkontos (CustomerAccount) für einen oder mehrere Kunden.
Kundensuche
CustKeywird mit der externen Kundennummer (CustomerNrExternal) und, sofern der Wert in eine Ganzzahl umgewandelt werden kann, mit dem internen Kundenschlüssel (CustKey) verglichen. Ein Kunde wird gefunden, wenn einer der beiden Vergleiche zutrifft.- Ist
ShopIdangegeben (nicht leer), werden nur Kunden berücksichtigt, derenCustomerOfdiesem Shop entspricht.
Stichtag
- Ist
DateToangegeben, wird der Wert auf das Tagesende (23:59:59.997) erweitert. Summiert werden nur Kontobuchungen mitEventDatebis zu diesem Zeitpunkt oder ohneEventDate. - Ohne
DateTowerden alle Buchungen summiert.
Währungsbehandlung
- Die Einstellung
MultiCurrencyEnabledwird zur Laufzeit gelesen. - Bei
1wird jeder Buchungsbetrag durch den Wechselkurs der Buchung (ExchRateId) geteilt und das Ergebnis nach der Basiswährung dieses Wechselkurses (BaseCurrency) gruppiert. - Andernfalls werden die Beträge unverändert summiert und
BaseCurrencyist die Datenbank-(Haus-)Währung aus der EinstellungHomeCurrency.
Ergebnis
Eine Zeile je gefundenem Kunden (im Mehrwährungsmodus je Basiswährung) mit dem Saldo CAbalance (als money) und dem Datum der letzten einbezogenen Kontobuchung LastEventDate. Kunden ohne Kontobuchungen werden mit Saldo 0 und LastEventDate = NULL geliefert. Wird kein Kunde gefunden, wird keine Zeile geliefert.
Hinweise
- Alle Tabellen werden mit
NOLOCKgelesen; der Saldo kann nicht festgeschriebene Daten enthalten. - Da
CustKeysowohl mit der externen Nummer als auch mit dem internen Schlüssel verglichen wird, können mehrere Kunden geliefert werden (z. B. ein Kunde mit internem Schlüssel123und ein anderer mit externer Nummer123).ShopIdverwenden oderCustomerIdim Ergebnis prüfen. - Stolperfalle bei
DateTo: Der Datumsfilter wirkt nach dem Outer Join. Ein Kunde, dessen Kontobuchungen alle nachDateToliegen, wird gar nicht geliefert (keine Zeile statt einer Zeile mit Saldo 0). - Mehrwährungsmodus: Buchungen ohne Wechselkurs ergeben bei der Division NULL und fließen nicht in die Summe ein; sie bilden zudem eine eigene Gruppe mit
BaseCurrency= NULL. Buchungen mit unterschiedlichen Basiswährungen ergeben getrennte Zeilen für denselben Kunden. - Eine leere
ShopIdwird wie NULL behandelt (kein Shop-Filter).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
CustKey
Pflicht
|
varchar(200) string |
– |
Kundenkennung: entweder die externe Kundennummer ( Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Optionaler Stichtag. Nur Kontobuchungen bis zum Ende dieses Tages werden einbezogen. NULL bedeutet alle Buchungen. Beispiel: |
ShopId
|
varchar(3) string |
NULL |
Optionaler Shop-Filter auf Beispiel: |
Antwort
Result-Set 1 · Immer; eine Zeile je gefundenem Kunden (im Mehrwährungsmodus je Basiswährung), leer, wenn kein Kunde gefunden wird.
Kundenkontosaldo je Kunde.
| Spalte | Typ | Beschreibung |
|---|---|---|
CustomerId
|
int |
Interner Kundenschlüssel ( |
CustomerNrExternal
Kann leer sein |
string |
Externe Kundennummer. |
ShopId
Kann leer sein |
string |
Shop, dem der Kunde zugeordnet ist ( |
CAbalance
Kann leer sein |
money decimal |
Summe der einbezogenen Buchungsbeträge; im Mehrwährungsmodus mit dem Wechselkurs der jeweiligen Buchung umgerechnet. |
BaseCurrency
Kann leer sein |
varchar(3) string |
Währung des Saldos: Basiswährung des Wechselkurses (Mehrwährungsmodus) oder die Datenbank-Hauswährung. |
LastEventDate
Kann leer sein |
datetime dateTime |
Spätestes |
Beispielantwort
<SqlRowSet1>
<row>
<CustomerId>10045</CustomerId>
<CustomerNrExternal>K-778812</CustomerNrExternal>
<ShopId>SH1</ShopId>
<CAbalance>-125.5000</CAbalance>
<BaseCurrency>EUR</BaseCurrency>
<LastEventDate>2024-03-28T14:12:05</LastEventDate>
</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:pixiGetCustomerAccountBalance>
<CustKey>10045</CustKey>
<!-- <DateTo>2024-03-31T00:00:00</DateTo> -->
<!-- <ShopId>SH1</ShopId> -->
</ns1:pixiGetCustomerAccountBalance>
</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:pixiGetCustomerAccountBalance>
<CustKey>10045</CustKey>
<!-- <DateTo>2024-03-31T00:00:00</DateTo> -->
<!-- <ShopId>SH1</ShopId> -->
</ns1:pixiGetCustomerAccountBalance>
</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 = [
'CustKey' => '10045',
// 'DateTo' => '2024-03-31T00:00:00',
// 'ShopId' => 'SH1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetCustomerAccountBalance', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetCustomerAccountBalance