Postman-Collection
Orders Schreiben

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.

  1. Der Auftrag wird entweder über OrderNr oder über OrderNrExternal bestimmt. OrderNr = 0 und ein leerer Wert für OrderNrExternal gelten als nicht gesetzt.
  2. Die Funktion pipiCanChangeAddress prü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.
  3. Der Adressschlüssel wird aus den Auftragspositionen (Orderlines) gelesen:
    • Enthält AddrType ein B (ohne Beachtung der Groß-/Kleinschreibung), wird die Rechnungsadresse (AddrRef) verwendet.
    • Andernfalls wird die Lieferadresse (ShipAdrRef) verwendet. Das gilt auch für S, andere Werte und einen leeren Wert.
  4. 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.
    • ASlocked setzt die Versandsperre: 1 setzt ASlocked = 'Y', jeder andere numerische Wert setzt 'N'. Fehlt der Parameter, bleibt der aktuelle Wert erhalten.
    • Bei Lieferadressen (AddrType = 'S' in Addresses) wird bei einer Änderung der Sperre ein Eintrag in pixi.AddressesShippingLockHistory geschrieben.
    • UpdateDate wird auf das aktuelle Datum gesetzt, UpdateEmp auf api.
  5. Der Status wird im Ausgabeparameter FunctionResult und als eine Zeile mit der Spalte Result zurückgegeben.

Hinweise

  • Nur eine Auftragskennung übergeben. Werden OrderNr und OrderNrExternal gleichzeitig übergeben, passt keine Auftragsposition. Das Ergebnis ist dann 402 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.
  • ASlocked muss numerisch sein. Der Code vergleicht den Wert mit der Zahl 1. Ein Wert wie Y führt daher zu einem SQL-Konvertierungsfehler, der als SqlMessage zurückkommt. 1 oder 0 verwenden.
  • Sperrhistorie. Der Historieneintrag wird nur geschrieben, wenn sich der gespeicherte Wert von ASlocked vom neuen Wert unterscheidet. Ist der gespeicherte Wert NULL, wird kein Eintrag geschrieben. Als Benutzer-ID der Historie dient der Benutzer api, ersatzweise pixiAdministration.
  • 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 NOLOCK gelesen. 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 402 den Wert 401.

Parameter

Parameter Typ Standardwert Beschreibung
OrderNr
int NULL

Pixi-Auftragsnummer. 0 wird als NULL behandelt. Entweder diesen Wert oder OrderNrExternal übergeben, nicht beide.

Beispiel: 123456

OrderNrExternal
varchar(50)
string
NULL

Externe Auftragsnummer (Shop). Eine leere Zeichenkette wird als NULL behandelt. Wird nur verwendet, wenn OrderNr nicht gesetzt ist.

Beispiel: SHOP-100234

AddrType
Pflicht
char(2)
string
–

Legt fest, welche Adresse des Auftrags geändert wird. Ein Wert mit B wählt die Rechnungsadresse, alle anderen Werte wählen die Lieferadresse.

Erlaubte Werte

  • B – Rechnungsadresse (`AddrRef` des Auftrags)
  • S – Lieferadresse (`ShipAdrRef` des Auftrags); wird auch bei jedem anderen Wert verwendet

Beispiel: S

Anrede
varchar(60)
string
NULL

Anrede. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Herr

FirstName
varchar(60)
string
NULL

Vorname. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Max

LastName
varchar(60)
string
NULL

Nachname. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Mustermann

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: c/o Firma Beispiel GmbH

Street
varchar(100)
string
NULL

Straße. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Hauptstraße

HouseNr
varchar(12)
string
NULL

Hausnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: 12a

City
varchar(50)
string
NULL

Ort. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: München

State
varchar(3)
string
NULL

Bundesland bzw. Region. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: BY

ZIP
varchar(10)
string
NULL

Postleitzahl. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: 80331

Country
varchar(3)
string
NULL

Ländercode. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: DE

Phone
varchar(60)
string
NULL

Telefonnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: +49 89 1234567

Phone2
varchar(60)
string
NULL

Zweite Telefonnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: +49 170 1234567

Fax
varchar(60)
string
NULL

Faxnummer. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: +49 89 1234568

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: max.mustermann@example.com

Account
varchar(10)
string
NULL

Kontonummer (Spalte AAccount). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: 1234567890

BLZ
varchar(8)
string
NULL

Bankleitzahl (Spalte ABLZ). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: 70050000

BankName
varchar(50)
string
NULL

Name der Bank (Spalte ABankName). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Beispielbank

AccName
varchar(27)
string
NULL

Kontoinhaber (Spalte AAccName). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Max Mustermann

BIC
varchar(11)
string
NULL

BIC. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: BYLADEM1001

IBAN
varchar(35)
string
NULL

IBAN. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: DE02120300000000202051

ASlocked
varchar(1)
string
NULL

Versandsperre. 1 speichert Y, jeder andere numerische Wert speichert N. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten. Nicht numerische Werte führen zu einem Konvertierungsfehler.

Erlaubte Werte

  • 1 – Versandsperre setzen (`ASlocked = 'Y'`)
  • 0 – Versandsperre aufheben (`ASlocked = 'N'`)

Beispiel: 0

FunctionResult
OUTPUT
varchar(128)
string
NULL

Ausgabe: Statustext, z. B. 200 OK. Derselbe Text wird in der Spalte Result zurückgegeben.

CardHolderName
varchar(60)
string
NULL

Name des Karteninhabers (Spalte ACardName). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: MAX MUSTERMANN

Note
varchar(8000)
string
NULL

Notiz zur Adresse. Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: Bitte beim Nachbarn abgeben

VatId
varchar(20)
string
NULL

USt-IdNr. (Spalte UsStId). Bei leerem oder fehlendem Wert bleibt der aktuelle Wert erhalten.

Beispiel: DE123456789

Antwort

Result-Set 1 · Immer

Eine Zeile mit dem Statustext der Verarbeitung.

Spalte Typ Beschreibung
Result
Kann leer sein
varchar(128)
string

Statustext: 200 OK, 401 …, 402 … oder 403 …

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>

Verwendete Tabellen

Orderlines · Lesen InvLines · Lesen Addresses · Schreiben AddressesShippingLockHistory · Schreiben UCS_USERS · Lesen
SQL-Objekt:
dbo.pipiChangeAddress
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben