pixiCustomerKeyByEmail
Liefert den Kundenschlüssel (`CustKey`) des Kunden eines Shops, dessen primäre oder sekundäre E-Mail-Adresse der angegebenen Adresse entspricht.
Sucht einen Kunden anhand der E-Mail-Adresse innerhalb eines Shops und liefert dessen internen Schlüssel als einzelnen Integer-Wert.
- Ein Kunde passt, wenn
@eMailentweder dem FeldeMailoder dem FeldeMail2entspricht und der Kunde zum Shop@ShopIdgehört (CustomerOf). - Es können nur Kunden zurückgegeben werden, die mindestens einen Adressdatensatz besitzen (
Addresses.AdrCustRef = CustKey), da die Suche einen Inner Join auf die Adressen verwendet. - Mit
@AllowAmbiguous = 0(Standard) wird nur dann ein Schlüssel geliefert, wenn genau ein Kunde im Shop diese E-Mail-Adresse hat. Teilen sich mehrere Kunden die Adresse, ist das ErgebnisNULL. - Mit
@AllowAmbiguous = 1entfällt die Eindeutigkeitsprüfung, und der Schlüssel eines der passenden Kunden wird geliefert. - Passt kein Kunde, ist das Ergebnis
NULL.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK, es können also nicht festgeschriebene Daten gelesen werden. - Bei
@AllowAmbiguous = 1und mehreren Treffern erfolgt die Auswahl perTOP 1ohneORDER BY; welcher Kunde geliefert wird, ist nicht deterministisch. - Die Eindeutigkeitszählung berücksichtigt nur die Tabelle
Customers, nicht den Join auf die Adressen. Ein einzelner passender Kunde ohne Adresse ergibt daherNULL. NULLwird sowohl für „nicht gefunden“ als auch für „mehrdeutig“ geliefert; beide Fälle sind am Ergebnis allein nicht unterscheidbar. Ein erneuter Aufruf mitAllowAmbiguous = 1zeigt, ob überhaupt Treffer existieren.- Ob der Vergleich Groß-/Kleinschreibung beachtet, hängt von der Datenbank-Collation ab; die E-Mail-Adresse wird weder getrimmt noch normalisiert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
eMail
Pflicht
|
varchar(60) string |
– |
Gesuchte E-Mail-Adresse; wird mit den Feldern Beispiel: |
ShopId
Pflicht
|
char(3) string |
– |
Shop-ID, zu der der Kunde gehören muss ( Beispiel: |
AllowAmbiguous
|
bit boolean |
0 |
Steuert, ob ein Schlüssel geliefert wird, wenn sich mehrere Kunden des Shops die E-Mail-Adresse teilen. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Immer (einzelner Skalarwert; NULL, wenn kein eindeutiger Treffer gefunden wird)
Rückgabewert der Skalarfunktion: der Kundenschlüssel.
| Spalte | Typ | Beschreibung |
|---|---|---|
Result
Kann leer sein |
int |
|
Beispielantwort
<SqlRowSet1>
<row>
<Result>10452</Result>
</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:pixiCustomerKeyByEmail>
<eMail>max.mustermann@example.com</eMail>
<ShopId>SHP</ShopId>
<!-- <AllowAmbiguous>0</AllowAmbiguous> -->
</ns1:pixiCustomerKeyByEmail>
</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:pixiCustomerKeyByEmail>
<eMail>max.mustermann@example.com</eMail>
<ShopId>SHP</ShopId>
<!-- <AllowAmbiguous>0</AllowAmbiguous> -->
</ns1:pixiCustomerKeyByEmail>
</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 = [
'eMail' => 'max.mustermann@example.com',
'ShopId' => 'SHP',
// 'AllowAmbiguous' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCustomerKeyByEmail', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCustomerKeyByEmail