Postman-Collection
Suppliers Schreiben

pixiUpdateSupplierOrder

Aktualisiert Status, Notiz für den Lieferanten, externe Bestellnummer und voraussichtliches Lieferdatum einer Lieferantenbestellung anhand ihrer internen Nummer.

Ändert eine Lieferantenbestellung (Bestellung beim Lieferanten), die über SupplierOrderNR (die InternalNumber der Bestellung) identifiziert wird.

Ablauf

  1. Leere Zeichenketten in Status und SupplierOrderNRExtdrnal sowie eine leere Note gelten als NULL (nicht übergeben).
  2. UserName muss als Pixi-Benutzer existieren; andernfalls wird eine ERROR-Zeile geliefert und ein SQL-Fehler ausgelöst.
  3. Bestellung und aktueller Status werden gelesen. Wird Status nicht übergeben, gilt der aktuelle Statuscode der Bestellung.
  4. Prüfungen (bei einem Fehler wird eine ERROR-Zeile geliefert, es wird nichts geändert):
    • die Bestellung muss existieren;
    • Status muss NEW, BES, CON oder CLS sein;
    • eine abgeschlossene Bestellung (CLS) akzeptiert kein neues EstimatedDeliveryDate und keine neue SupplierOrderNRExtdrnal;
    • eine bestätigte Bestellung (CON) akzeptiert keine neue SupplierOrderNRExtdrnal;
    • kein Rückwärtswechsel von CLS nach NEW/BES/CON und von CON nach NEW (CON → BES ist erlaubt);
    • kein Überspringen: NEW kann nicht direkt nach CON oder CLS, BES nicht direkt nach CLS wechseln.
  5. Der Bestellkopf wird aktualisiert:
    • der Status wird gesetzt (NEW=1, BES=2, CON=3, CLS=4);
    • bei BES werden Bestelldatum und bestellender Benutzer auf jetzt bzw. den aufrufenden Benutzer gesetzt, bei CON Bestätigungsdatum und bestätigender Benutzer;
    • externe Nummer, Notiz für den Lieferanten und voraussichtliches Lieferdatum werden nur überschrieben, wenn ein Wert übergeben wird;
    • Änderungsbenutzer und -zeitpunkt werden gesetzt.
  6. Wird EstimatedDeliveryDate übergeben, wird es zusätzlich in alle Positionen der Lieferantenbestellung geschrieben.
  7. Hat sich der Status tatsächlich geändert, wird das Ereignis SupplierOrderStatusChanged mit der internen Bestell-Id veröffentlicht.
  8. Eine Zeile mit ReturnCode = Ok wird geliefert und die Transaktion festgeschrieben.

Hinweise

  • Stolperfalle – Datumswerte werden zurückgesetzt: Da ein nicht übergebener Status auf den aktuellen Status zurückfällt, setzt jeder Aufruf bei einer Bestellung im Status BES OrderDate/OrderedByUserId erneut auf jetzt bzw. den aufrufenden Benutzer; bei Status CON gilt dasselbe für ConfirmationDate/ConfirmedByUserId. Das gilt auch, wenn nur Notiz oder Lieferdatum geändert werden.
  • Felder können nicht geleert werden: ein leerer oder fehlender Wert behält den gespeicherten Wert. Ein EstimatedDeliveryDate von 1900-01-01 gilt als nicht übergeben.
  • Die Notiz wird auch bei abgeschlossenen Bestellungen akzeptiert; gesperrt sind nur Lieferdatum und externe Nummer.
  • Laut Code-Kommentar kann NEW nicht erneut gesetzt werden, der Code sperrt NEW jedoch nur aus CON/CLS; ein Wechsel BES → NEW wird akzeptiert.
  • SupplierOrderNRExtdrnal ist durch den Parametertyp auf 25 Zeichen begrenzt. Die Notiz wird in einer Nicht-Unicode-Spalte gespeichert; Zeichen außerhalb der Codepage der Datenbank können verloren gehen.
  • Die Status-IDs 1–4 sind in der Prozedur fest hinterlegt.
  • Wegen der Operatorrangfolge in der Prüfung kann eine Fehlermeldung zum Rückwärts-/Überspringen-Wechsel eine frühere Prüfmeldung überschreiben; der Aufruf schlägt in beiden Fällen fehl.
  • Läuft in einer eigenen Transaktion (bzw. einem Savepoint bei äußerer Transaktion). Fehler werden abgefangen, zurückgerollt und ins Fehlerprotokoll geschrieben; außer bei der Benutzerprüfung wird kein SQL-Fehler ausgelöst, nur die ERROR-Zeile geliefert. Innerhalb einer äußeren Transaktion wird keine Ok-Zeile geliefert und nicht festgeschrieben.
  • Das erste Lesen der Bestellung erfolgt mit NOLOCK.
  • Das Ereignis zur Statusänderung wird über Pixi_MQ_EventPublish veröffentlicht; ob tatsächlich eine Nachricht versendet wird, hängt von der Einstellung pixiMQ_Enabled und der Ereigniskonfiguration ab.

Parameter

Parameter Typ Standardwert Beschreibung
SupplierOrderNR
Pflicht
int –

Interne Nummer (InternalNumber) der zu ändernden Lieferantenbestellung.

Beispiel: 10234

Status
varchar(3)
string
NULL

Neuer Statuscode. Fehlt der Wert oder ist er leer, bleibt der aktuelle Status erhalten (und wird erneut angewendet).

Erlaubte Werte

  • NEW – Neu (Status-ID 1); nicht erlaubt aus CON oder CLS.
  • BES – Bestellt (Status-ID 2); setzt Bestelldatum und bestellenden Benutzer.
  • CON – Bestätigt (Status-ID 3); setzt Bestätigungsdatum und bestätigenden Benutzer; nicht direkt aus NEW erlaubt.
  • CLS – Abgeschlossen (Status-ID 4); nur aus CON erlaubt (oder wenn bereits abgeschlossen).

Beispiel: BES

Note
text
string
NULL

Notiz für den Lieferanten (NoteForSupplier). Ersetzt die gespeicherte Notiz, wenn nicht leer.

Beispiel: Please deliver on euro pallets.

EstimatedDeliveryDate
datetime
dateTime
NULL

Voraussichtliches Lieferdatum; wird in den Bestellkopf und alle Positionen geschrieben. Bei abgeschlossenen Bestellungen nicht erlaubt.

Beispiel: 2024-06-15T00:00:00

SupplierOrderNRExtdrnal
varchar(25)
string
NULL

Externe Bestellnummer des Lieferanten (ExternalCode). Bei bestätigten oder abgeschlossenen Bestellungen nicht erlaubt.

Beispiel: AB-2024-0815

UserName
varchar(50)
string
API

Pixi-Benutzername, der als ändernder (und bestellender/bestätigender) Benutzer gespeichert wird. Muss existieren.

Beispiel: API

Antwort

Result-Set 1 · Immer eine Zeile: Ok bei Erfolg (außerhalb einer äußeren Transaktion), ERROR bei jedem Fehler.

Statuszeile der Aktualisierung.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

Ok oder ERROR.

ErrorMessage
Kann leer sein
nvarchar(4000)
string

Erfolgstext oder Fehlermeldung.

Fehlermeldungen

Status Meldung Ursache
ERROR User for create employee does not exist. `UserName` existiert in Pixi nicht. Wird zusätzlich als SQL-Fehler (Schweregrad 16) ausgelöst. Einen existierenden Benutzernamen übergeben.
ERROR Supplierorder with SupplierOrderNR {SupplierOrderNR} does not exist. Es existiert keine Lieferantenbestellung mit dieser internen Nummer.
ERROR Status can only be NEW, BES, CON or CLS `Status` enthält einen nicht unterstützten Code.
ERROR Status of Order is CLS, no more changes possible. Die Bestellung ist abgeschlossen und `EstimatedDeliveryDate` oder `SupplierOrderNRExtdrnal` wurde übergeben.
ERROR Status of Order is CON, no change of ExternalCode possible. Die Bestellung ist bestätigt und `SupplierOrderNRExtdrnal` wurde übergeben.
ERROR Status can not be changed back to {Status}. Rückwärtiger Statuswechsel: von CLS nach NEW/BES/CON oder von CON nach NEW.
ERROR Status can not be changed to {Status} if current status is {NEW.|BES|unknown}. Ein Status wurde übersprungen: NEW nach CON/CLS oder BES nach CLS. Die Status schrittweise durchlaufen (NEW → BES → CON → CLS).
ERROR {SQL error message} Sonstiger SQL-Fehler während der Aktualisierung; die Transaktion wird zurückgerollt und der Fehler protokolliert.

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:pixiUpdateSupplierOrder>
      <SupplierOrderNR>10234</SupplierOrderNR>
      <!-- <Status>BES</Status> -->
      <!-- <Note>Please deliver on euro pallets.</Note> -->
      <!-- <EstimatedDeliveryDate>2024-06-15T00:00:00</EstimatedDeliveryDate> -->
      <!-- <SupplierOrderNRExtdrnal>AB-2024-0815</SupplierOrderNRExtdrnal> -->
      <!-- <UserName>API</UserName> -->
    </ns1:pixiUpdateSupplierOrder>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

SupplierOrder · Schreiben SupplierOrderStatus · Lesen SupplierOrderLine · Schreiben UCS_USERS · Lesen
SQL-Objekt:
dbo.pipiUpdateSupplierOrder
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben