Postman-Collection
Suppliers Schreiben

pixiUpdateDelivery

Aktualisiert den Kopf einer Lieferantenlieferung (Notiz, externe Nummern, Status, Picco-/Mobix-Sperre) per Liefer-ID oder Liefernummer.

Aktualisiert einen Datensatz in SDelHeader (Kopf einer Lieferantenlieferung) und liefert immer genau eine Zeile mit der Spalte ReturnMSG.

Ermittlung der Lieferung

  • SDelHkey und DeliveryNumber gelten bei 0 als nicht angegeben. Mindestens einer der Werte ist erforderlich.
  • Ist SDelHkey angegeben, wird dieser verwendet und DeliveryNumber ignoriert.
  • Andernfalls wird die Lieferung mit SDelHNr = DeliveryNumber und dem kleinsten Schlüssel verwendet.

Prüfungen

  • Status muss NEW, INV oder CLS sein oder weggelassen werden (NULL); dann bleibt der aktuelle Status erhalten. Ein Leerstring wird abgelehnt.
  • Ist ExternalReceiptNr angegeben, darf keine andere Lieferung desselben Lieferanten diese externe Belegnummer bereits besitzen.
  • Ohne PiccoUser: Die Lieferung muss existieren und darf nicht durch Picco gesperrt sein (LockedByPicco ungleich Y).
  • Mit PiccoUser (Mobix-/Picco-Client): Die Lieferung muss existieren und entweder diesem PiccoUser zugeordnet oder nicht durch Picco gesperrt sein.

Behandlung der Felder

  • Note, extInvoiceNr und extOrderNr werden getrimmt. Leere oder fehlende Werte behalten den gespeicherten Wert.
  • ExternalReceiptNr und Status: Fehlende oder leere Werte behalten den gespeicherten Wert.
  • UserName ist standardmäßig API und wird als letzter Bearbeiter gespeichert; das Änderungsdatum wird auf die aktuelle Zeit gesetzt.
  • Die Picco-Informationen werden immer neu geschrieben:
    • Ohne PiccoUser werden PiccoUser und LockedByPicco der Lieferung geleert.
    • Mit PiccoUser wird der Benutzer gespeichert; LockedByPicco wird auf Y gesetzt, wenn LockDelivery = 1. Bei Status = CLS werden Picco-Benutzer und Sperre entfernt.
  • SupplNr ist veraltet. Der Lieferant wird nie geändert.

Ändert sich der Status tatsächlich, wird ein Ereignis „Lieferstatus geändert“ veröffentlicht.

Hinweise

  • Note, extInvoiceNr, extOrderNr und ExternalReceiptNr lassen sich mit diesem Aufruf nicht leeren. Leere Werte behalten den bestehenden Inhalt.
  • extOrderNr ist als varchar(8000) deklariert, die interne Update-Prozedur nimmt aber nur varchar(1000) an. Längere Werte werden abgeschnitten.
  • Ein Aufruf ohne PiccoUser entfernt eine bestehende Picco-Benutzerzuordnung der Lieferung.
  • Bei einer durch Picco gesperrten Lieferung schlägt ein Aufruf ohne PiccoUser mit Delivery header does not exist fehl, obwohl die Lieferung existiert.
  • Findet DeliveryNumber keine Lieferung, erscheint dieselbe Meldung.
  • Die Prozedur gibt bei Fehlern den Rückgabewert -1 zurück. Fehler werden nur als ReturnMSG-Zeile gemeldet, nicht als SQL-Fehler.
  • Die Existenzprüfungen lesen SDelHeader mit NOLOCK. Eine explizite Transaktion wird nicht verwendet.
  • Bei einer Statusänderung wird pixi_MQ_DeliveryStatusChanged_EventPublish ausgeführt. Die Definition liegt nicht vor, daher ist der Inhalt der veröffentlichten Nachricht unbekannt.
  • Die genaue fachliche Bedeutung des Status INV ist im Code nicht ersichtlich.

Parameter

Parameter Typ Standardwert Beschreibung
SDelHkey
int NULL

Interner Schlüssel der Lieferung (SDelHKey). 0 gilt als nicht angegeben. Hat Vorrang vor DeliveryNumber.

Beispiel: 15872

SupplNr
varchar(4)
string
NULL

Veraltet. Wird ignoriert; der Lieferant wird aus dem Lieferkopf gelesen und nie geändert.

DeliveryNumber
int NULL

Liefernummer (SDelHNr). Wird nur verwendet, wenn SDelHkey fehlt; 0 gilt als nicht angegeben.

Beispiel: 4711

Note
varchar(8000)
string
NULL

Neue Notiz der Lieferung. Wird getrimmt; leer oder fehlend behält die gespeicherte Notiz.

Beispiel: Pallet damaged on arrival

extInvoiceNr
varchar(25)
string
NULL

Externe Rechnungsnummer des Lieferanten. Wird getrimmt; leer oder fehlend behält den gespeicherten Wert.

Beispiel: RE-2024-00815

extOrderNr
varchar(8000)
string
NULL

Externe Bestellnummer(n). Wird getrimmt; leer oder fehlend behält den gespeicherten Wert. Effektiv auf 1000 Zeichen begrenzt.

Beispiel: PO-55102

UserName
varchar(50)
string
NULL

Als letzter Bearbeiter gespeicherter Benutzer. Standard ist API.

Beispiel: shopsync

PiccoUser
varchar(59)
string
NULL

Picco-/Mobix-Benutzer, der die Lieferung bearbeitet. Leer gilt als nicht angegeben. Fehlt der Wert, werden Picco-Zuordnung und Sperre entfernt.

Beispiel: mobix01

Status
varchar(3)
string
NULL

Neuer Lieferstatus. Fehlend behält den aktuellen Status; ein Leerstring wird abgelehnt.

Erlaubte Werte

  • NEW – Neue Lieferung
  • INV – Status `INV` gemäß Pixi (Bedeutung im Code nicht ersichtlich)
  • CLS – Abgeschlossen; entfernt bei angegebenem `PiccoUser` auch Picco-Benutzer und Sperre

Beispiel: CLS

LockDelivery
bit
boolean
0

Nur mit PiccoUser: 1 sperrt die Lieferung für diesen Picco-Benutzer (LockedByPicco = Y), sofern Status nicht CLS ist.

Erlaubte Werte

  • 0 – Nicht sperren (bestehende Sperre wird entfernt)
  • 1 – Lieferung für den Picco-Benutzer sperren

Beispiel: 1

ExternalReceiptNr
varchar(50)
string
NULL

Externe Belegnummer. Muss je Lieferant eindeutig sein; leer oder fehlend behält den gespeicherten Wert.

Beispiel: WE-778812

Antwort

Result-Set 1 · Immer (eine Zeile; Erfolgs- oder Fehlermeldung)

Statusmeldung des Aufrufs.

Spalte Typ Beschreibung
ReturnMSG varchar
string

Update successful bei Erfolg, sonst der Fehlertext.

Fehlermeldungen

Status Meldung Ursache
-1 Delivery ID or Delivery number must be provided. Weder `SDelHkey` noch `DeliveryNumber` angegeben (oder beide 0).
-1 Wrong status code provided. `Status` ist nicht `NEW`, `INV` oder `CLS` (auch Leerstring). Zum Beibehalten des Status den Parameter weglassen.
-1 For given External Receipt Number already exists an delivery. Eine andere Lieferung desselben Lieferanten besitzt bereits diese `ExternalReceiptNr`.
-1 Delivery header does not exist Keine Lieferung zu Schlüssel oder Nummer gefunden. Auch ohne `PiccoUser` bei durch Picco gesperrter Lieferung sowie mit `PiccoUser`, wenn ein anderer Picco-Benutzer die Lieferung gesperrt hat.

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:pixiUpdateDelivery>
      <!-- <SDelHkey>15872</SDelHkey> -->
      <!-- <SupplNr>?</SupplNr> -->
      <!-- <DeliveryNumber>4711</DeliveryNumber> -->
      <!-- <Note>Pallet damaged on arrival</Note> -->
      <!-- <extInvoiceNr>RE-2024-00815</extInvoiceNr> -->
      <!-- <extOrderNr>PO-55102</extOrderNr> -->
      <!-- <UserName>shopsync</UserName> -->
      <!-- <PiccoUser>mobix01</PiccoUser> -->
      <!-- <Status>CLS</Status> -->
      <!-- <LockDelivery>1</LockDelivery> -->
      <!-- <ExternalReceiptNr>WE-778812</ExternalReceiptNr> -->
    </ns1:pixiUpdateDelivery>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

SDelHeader · Schreiben
SQL-Objekt:
dbo.pipiUpdateDelivery
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben