pixiChangeAddress
Ändert die Rechnungs- oder Lieferadresse eines Auftrags, solange der Auftrag noch nicht berechnet wurde.
Aktualisiert den Adressdatensatz, der mit einem Auftrag verknüpft ist, und liefert einen Statustext.
- Der Auftrag wird entweder über
OrderNroder überOrderNrExternalbestimmt.OrderNr = 0und ein leerer Wert fürOrderNrExternalgelten als nicht gesetzt. - Die Funktion
pipiCanChangeAddressprüft, ob die Adresse geändert werden darf. Sie liefert 0, wenn kein Auftrag angegeben ist oder zu einer Auftragsposition bereits eine Rechnungsposition (InvLines) existiert. Andernfalls liefert sie 1. - Der Adressschlüssel wird aus den Auftragspositionen (
Orderlines) gelesen:- Enthält
AddrTypeeinB(ohne Beachtung der Groß-/Kleinschreibung), wird die Rechnungsadresse (AddrRef) verwendet. - Andernfalls wird die Lieferadresse (
ShipAdrRef) verwendet. Das gilt auch fürS, andere Werte und einen leeren Wert.
- Enthält
- Ist die Änderung erlaubt und wurde eine Adresse gefunden, wird die Adresse aktualisiert:
- Leere Zeichenketten gelten als „nicht übergeben“. Jeder nicht übergebene Parameter behält den aktuellen Wert der Adresse. Es werden nur die übergebenen Felder geändert.
ASlockedsetzt die Versandsperre:1setztASlocked = 'Y', jeder andere numerische Wert setzt'N'. Fehlt der Parameter, bleibt der aktuelle Wert erhalten.- Bei Lieferadressen (
AddrType = 'S'inAddresses) wird bei einer Änderung der Sperre ein Eintrag inpixi.AddressesShippingLockHistorygeschrieben. UpdateDatewird auf das aktuelle Datum gesetzt,UpdateEmpaufapi.
- Der Status wird im Ausgabeparameter
FunctionResultund als eine Zeile mit der SpalteResultzurückgegeben.
Hinweise
- Nur eine Auftragskennung übergeben. Werden
OrderNrundOrderNrExternalgleichzeitig übergeben, passt keine Auftragsposition. Das Ergebnis ist dann402 Address not found. - Felder können nicht geleert werden. Leere Werte werden ignoriert, der bisherige Wert bleibt erhalten. Ausnahme ist
CareOf: Eine leere Zeichenkette wird als leere Zeichenkette gespeichert. ASlockedmuss numerisch sein. Der Code vergleicht den Wert mit der Zahl 1. Ein Wert wieYführt daher zu einem SQL-Konvertierungsfehler, der alsSqlMessagezurückkommt.1oder0verwenden.- Sperrhistorie. Der Historieneintrag wird nur geschrieben, wenn sich der gespeicherte Wert von
ASlockedvom neuen Wert unterscheidet. Ist der gespeicherte Wert NULL, wird kein Eintrag geschrieben. Als Benutzer-ID der Historie dient der Benutzerapi, ersatzweisepixiAdministration. - Aufträge mit mehreren Positionen. Der Adressschlüssel wird aus einer der Auftragspositionen übernommen; der Code legt nicht fest, aus welcher. Aufträge, deren Positionen auf unterschiedliche Adressen verweisen, werden nicht gesondert behandelt.
- Lesezugriffe und Transaktionen. Auftragspositionen und Adressen werden mit
NOLOCKgelesen. Es gibt keine explizite Transaktion. - Statuscodes. Die Codes 200–403 sind reine Textcodes und keine HTTP-Status. Ist weder eine Änderung erlaubt noch eine Adresse gefunden, überschreibt
402den Wert401.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
|
int | NULL |
Pixi-Auftragsnummer. 0 wird als NULL behandelt. Entweder diesen Wert oder Beispiel: |
OrderNrExternal
|
varchar(50) string |
NULL |
Externe Auftragsnummer (Shop). Eine leere Zeichenkette wird als NULL behandelt. Wird nur verwendet, wenn Beispiel: |
AddrType
Pflicht
|
char(2) string |
– |
Legt fest, welche Adresse des Auftrags geändert wird. Ein Wert mit Erlaubte Werte
Beispiel: |
Anrede
|
varchar(60) string |
NULL |
Anrede. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
FirstName
|
varchar(60) string |
NULL |
Vorname. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
LastName
|
varchar(60) string |
NULL |
Nachname. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
CareOf
|
varchar(60) string |
NULL |
Adresszusatz (c/o). Fehlt der Wert, bleibt der aktuelle Wert erhalten. Anders als bei den übrigen Feldern wird eine leere Zeichenkette als leere Zeichenkette gespeichert. Beispiel: |
Street
|
varchar(100) string |
NULL |
Straße. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
HouseNr
|
varchar(12) string |
NULL |
Hausnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
City
|
varchar(50) string |
NULL |
Ort. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
State
|
varchar(3) string |
NULL |
Bundesland bzw. Region. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
ZIP
|
varchar(10) string |
NULL |
Postleitzahl. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Country
|
varchar(3) string |
NULL |
Ländercode. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Phone
|
varchar(60) string |
NULL |
Telefonnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Phone2
|
varchar(60) string |
NULL |
Zweite Telefonnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Fax
|
varchar(60) string |
NULL |
Faxnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Fax2
|
varchar(60) string |
NULL |
Zweite Faxnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. |
eMail
|
varchar(60) string |
NULL |
E-Mail-Adresse. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
Account
|
varchar(10) string |
NULL |
Kontonummer (Spalte Beispiel: |
BLZ
|
varchar(8) string |
NULL |
Bankleitzahl (Spalte Beispiel: |
BankName
|
varchar(50) string |
NULL |
Name der Bank (Spalte Beispiel: |
AccName
|
varchar(27) string |
NULL |
Kontoinhaber (Spalte Beispiel: |
BIC
|
varchar(11) string |
NULL |
BIC. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
IBAN
|
varchar(35) string |
NULL |
IBAN. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
ASlocked
|
varchar(1) string |
NULL |
Versandsperre. Erlaubte Werte
Beispiel: |
FunctionResult
OUTPUT
|
varchar(128) string |
NULL |
Ausgabe: Statustext, z. B. |
CardHolderName
|
varchar(60) string |
NULL |
Name des Karteninhabers (Spalte Beispiel: |
Note
|
varchar(8000) string |
NULL |
Notiz zur Adresse. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Beispiel: |
VatId
|
varchar(20) string |
NULL |
USt-IdNr. (Spalte Beispiel: |
Antwort
Result-Set 1 · Immer
Eine Zeile mit dem Statustext der Verarbeitung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Result
Kann leer sein |
varchar(128) string |
Statustext: |
Beispielantwort
<SqlRowSet1>
<row>
<Result>200 OK</Result>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 401 | 401 Cannot change address according to pixiCanChangeAddress | Der Auftrag ist bereits (teilweise) berechnet, oder es wurde keine Auftragskennung übergeben. Adressen berechneter Aufträge lassen sich mit diesem Aufruf nicht ändern. |
| 402 | 402 Address not found | Keine Auftragsposition passt zur Auftragsnummer, `OrderNr` und `OrderNrExternal` wurden gleichzeitig übergeben, oder der Auftrag hat keinen Adressverweis des gewünschten Typs. Dieser Status überschreibt `401`. |
| 403 | 403 Unknown error | Die Aktualisierung hat keine Zeile geändert, z. B. weil der referenzierte Adressdatensatz in `Addresses` nicht existiert. |
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:pixiChangeAddress>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
<AddrType>S</AddrType>
<!-- <Anrede>Herr</Anrede> -->
<!-- <FirstName>Max</FirstName> -->
<!-- <LastName>Mustermann</LastName> -->
<!-- <CareOf>c/o Firma Beispiel GmbH</CareOf> -->
<!-- <Street>Hauptstraße</Street> -->
<!-- <HouseNr>12a</HouseNr> -->
<!-- <City>München</City> -->
<!-- <State>BY</State> -->
<!-- <ZIP>80331</ZIP> -->
<!-- <Country>DE</Country> -->
<!-- <Phone>+49 89 1234567</Phone> -->
<!-- <Phone2>+49 170 1234567</Phone2> -->
<!-- <Fax>+49 89 1234568</Fax> -->
<!-- <Fax2>?</Fax2> -->
<!-- <eMail>max.mustermann@example.com</eMail> -->
<!-- <Account>1234567890</Account> -->
<!-- <BLZ>70050000</BLZ> -->
<!-- <BankName>Beispielbank</BankName> -->
<!-- <AccName>Max Mustermann</AccName> -->
<!-- <BIC>BYLADEM1001</BIC> -->
<!-- <IBAN>DE02120300000000202051</IBAN> -->
<!-- <ASlocked>0</ASlocked> -->
<!-- <FunctionResult>?</FunctionResult> -->
<!-- <CardHolderName>MAX MUSTERMANN</CardHolderName> -->
<!-- <Note>Bitte beim Nachbarn abgeben</Note> -->
<!-- <VatId>DE123456789</VatId> -->
</ns1:pixiChangeAddress>
</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:pixiChangeAddress>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
<AddrType>S</AddrType>
<!-- <Anrede>Herr</Anrede> -->
<!-- <FirstName>Max</FirstName> -->
<!-- <LastName>Mustermann</LastName> -->
<!-- <CareOf>c/o Firma Beispiel GmbH</CareOf> -->
<!-- <Street>Hauptstraße</Street> -->
<!-- <HouseNr>12a</HouseNr> -->
<!-- <City>München</City> -->
<!-- <State>BY</State> -->
<!-- <ZIP>80331</ZIP> -->
<!-- <Country>DE</Country> -->
<!-- <Phone>+49 89 1234567</Phone> -->
<!-- <Phone2>+49 170 1234567</Phone2> -->
<!-- <Fax>+49 89 1234568</Fax> -->
<!-- <Fax2>?</Fax2> -->
<!-- <eMail>max.mustermann@example.com</eMail> -->
<!-- <Account>1234567890</Account> -->
<!-- <BLZ>70050000</BLZ> -->
<!-- <BankName>Beispielbank</BankName> -->
<!-- <AccName>Max Mustermann</AccName> -->
<!-- <BIC>BYLADEM1001</BIC> -->
<!-- <IBAN>DE02120300000000202051</IBAN> -->
<!-- <ASlocked>0</ASlocked> -->
<!-- <FunctionResult>?</FunctionResult> -->
<!-- <CardHolderName>MAX MUSTERMANN</CardHolderName> -->
<!-- <Note>Bitte beim Nachbarn abgeben</Note> -->
<!-- <VatId>DE123456789</VatId> -->
</ns1:pixiChangeAddress>
</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 = [
// 'OrderNr' => '123456',
// 'OrderNrExternal' => 'SHOP-100234',
'AddrType' => 'S',
// 'Anrede' => 'Herr',
// 'FirstName' => 'Max',
// 'LastName' => 'Mustermann',
// 'CareOf' => 'c/o Firma Beispiel GmbH',
// 'Street' => 'Hauptstraße',
// 'HouseNr' => '12a',
// 'City' => 'München',
// 'State' => 'BY',
// 'ZIP' => '80331',
// 'Country' => 'DE',
// 'Phone' => '+49 89 1234567',
// 'Phone2' => '+49 170 1234567',
// 'Fax' => '+49 89 1234568',
// 'Fax2' => '?',
// 'eMail' => 'max.mustermann@example.com',
// 'Account' => '1234567890',
// 'BLZ' => '70050000',
// 'BankName' => 'Beispielbank',
// 'AccName' => 'Max Mustermann',
// 'BIC' => 'BYLADEM1001',
// 'IBAN' => 'DE02120300000000202051',
// 'ASlocked' => '0',
// 'FunctionResult' => '?',
// 'CardHolderName' => 'MAX MUSTERMANN',
// 'Note' => 'Bitte beim Nachbarn abgeben',
// 'VatId' => 'DE123456789',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiChangeAddress', $soapArguments);
Verwandte Calls
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiChangeAddress