Postman-Collection
Orders Schreiben

pixiSetOrderShippingLock

Setzt oder entfernt die Versandsperre eines Auftrags über dessen Lieferadresse und schreibt einen Eintrag in die Versandsperren-Historie.

Setzt die Versandsperre (ASlocked) an der Lieferadresse eines Auftrags.

  1. Locked = NULL wird als 1 behandelt; ein leerer oder NULL-UserName wird zu API.
  2. Die Referenz auf die Lieferadresse (ShipAdrRef) wird aus OrderHeader zum OrderNr gelesen. Existiert der Auftrag nicht oder ist ShipAdrRef NULL, wird eine ERROR-Zeile geliefert.
  3. Der referenzierte Datensatz in Addresses wird nur ausgewählt, wenn er AddrType = 'S' hat und sein aktueller ASlocked-Wert vom Zielwert abweicht (Y für Sperren, N für Entsperren). Wird keine solche Adresse gefunden, wird eine INFO-Zeile geliefert und nichts geändert.
  4. Ist Reason leer oder NULL, wird der Text Order was locked by {UserName} bzw. Order was unlocked by {UserName} verwendet.
  5. Ein Datensatz wird in pixi.AddressesShippingLockHistory eingefügt. Er enthält die Benutzer-ID, den Adressschlüssel, das Sperrkennzeichen und den Grund. Die Benutzer-ID wird aus UserName über inf.UserGetByName ermittelt, bei unbekanntem Namen wird der Benutzer pixiAdministration verwendet.
  6. Die Adresse wird aktualisiert:
    • ASlocked wird auf Y/N gesetzt.
    • UpdateDate wird auf die aktuelle Zeit gesetzt.
    • UpdateEmp wird auf den Benutzernamen gesetzt. Der Standardwert API wird als API SetOrderShippingLock geschrieben.
  7. Eine OK-Zeile wird geliefert.

Hinweise

  • Die Sperre wird an dem Adressdatensatz gespeichert, auf den ShipAdrRef des Auftrags verweist, nicht am Auftragskopf selbst.
  • Die INFO-Zeile (already set to …) wird auch geliefert, wenn die referenzierte Adresse nicht existiert oder nicht AddrType = 'S' hat. In diesem Fall kann die Meldung irreführend sein.
  • OrderHeader wird mit NOLOCK gelesen; die Adresse wird mit UPDLOCK ausgewählt.
  • Es wird keine explizite Transaktion verwendet. Das Einfügen in die Historie und die Aktualisierung der Adresse sind getrennte Anweisungen und werden nicht gemeinsam zurückgerollt.
  • Während der Aktualisierung wird CONTEXT_INFO vorübergehend auf 0x33999 gesetzt und danach wiederhergestellt. Dies wird vermutlich von Triggern auf Addresses ausgewertet, die nicht beigefügt sind.
  • Statuszeilen verwenden immer die Spalte ErrorMessage, auch im OK-Fall.

Parameter

Parameter Typ Standardwert Beschreibung
OrderNr
Pflicht
int –

Nummer des Auftrags, dessen Versandsperre geändert wird.

Beispiel: 104523

Locked
bit
boolean
1

Zielzustand der Versandsperre. NULL wird als 1 behandelt.

Erlaubte Werte

  • 1 – Versandsperre setzen (`ASlocked` = `Y`).
  • 0 – Versandsperre entfernen (`ASlocked` = `N`).

Beispiel: 1

UserName
varchar(50)
string
API

Name des ändernden Benutzers. Leer oder NULL wird zu API. Der Name dient zur Ermittlung der Benutzer-ID für den Historieneintrag, mit Rückfall auf pixiAdministration. Außerdem wird er in UpdateEmp geschrieben, wobei API als API SetOrderShippingLock gespeichert wird.

Beispiel: shopsync

Reason
varchar(255)
string
–

Grund, der als CustomerComment in der Versandsperren-Historie gespeichert wird. Ist er leer, wird der Standardtext Order was locked by … / Order was unlocked by … verwendet.

Beispiel: Payment not yet received

Antwort

Result-Set 1 · Wenn kein Auftrag mit OrderNr existiert (oder er keine Lieferadressreferenz hat)

Fehler-Statuszeile.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

Immer ERROR.

ErrorMessage
Kann leer sein
varchar(48)
string

Fehlertext mit der Auftragsnummer.

Result-Set 2 · Wenn die Lieferadresse bereits den Zielzustand hat, nicht existiert oder nicht vom Typ S ist

Informations-Statuszeile; es wird nichts geändert.

Spalte Typ Beschreibung
ReturnCode varchar(4)
string

Immer INFO.

ErrorMessage
Kann leer sein
varchar(70)
string

Text, dass der Auftrag bereits auf Y bzw. N gesetzt ist.

Result-Set 3 · Bei Erfolg

Erfolgs-Statuszeile, nachdem der Historieneintrag geschrieben und die Adresse aktualisiert wurde.

Spalte Typ Beschreibung
ReturnCode varchar(2)
string

Immer OK.

ErrorMessage
Kann leer sein
varchar(50)
string

Bestätigungstext mit der Auftragsnummer.

Fehlermeldungen

Status Meldung Ursache
ERROR No Order found with OrderNR {OrderNr} Zum angegebenen `OrderNr` existiert kein Auftrag in `OrderHeader` oder dessen `ShipAdrRef` ist `NULL`. Eine gültige Auftragsnummer übergeben.
INFO Order with OrderNr {OrderNr} is already set to {Y|N}. Die Lieferadresse hat bereits den gewünschten Sperrzustand. Dieselbe Zeile wird geliefert, wenn die referenzierte Adresse nicht existiert oder nicht vom Typ `S` ist. Es wird nichts geändert.

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:pixiSetOrderShippingLock>
      <OrderNr>104523</OrderNr>
      <!-- <Locked>1</Locked> -->
      <!-- <UserName>shopsync</UserName> -->
      <!-- <Reason>Payment not yet received</Reason> -->
    </ns1:pixiSetOrderShippingLock>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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