Postman-Collection
Suppliers Schreiben

pixiUpdateDeliveryItem

Aktualisiert eine bestehende Artikelposition einer Lieferantenlieferung (Menge, Einkaufspreis, Charge, MHD), optional mit Zuordnung zu einer Bestellposition.

Ändert eine bestehende Position (SDelDetail) einer Lieferantenlieferung. Der Aufruf legt keine neuen Positionen an. Aktualisiert wird nur eine Position, die für den Artikel auf der Lieferung bereits vorhanden ist.

  1. Lieferung ermitteln. SDelHKey oder DeliveryNumber (SDelHNr) angeben. SDelHSupplNr kann die Suche einschränken. Verwendet wird der erste passende SDelHeader-Datensatz. Der Aufruf bricht ab, wenn:

    • keine Lieferung gefunden wird,
    • der Lieferungsstatus CLS oder INV ist,
    • die Lieferung durch Picco gesperrt ist (LockedByPicco gesetzt) und PiccoUser nicht dem sperrenden Benutzer entspricht.

    Danach wird für alle weiteren Schritte die Lieferantennummer der Lieferung selbst verwendet.

  2. Artikel ermitteln. fpixi_GetItemKey ermittelt den Artikel über EANUPC oder, wenn keine EAN angegeben ist, über ItemNrInternal. Gesucht wird in scanbaren Artikelcodes (pixi.ItemCode verknüpft mit ItemCodeType, Scannable = 1). Sind beide Werte angegeben, wird nur EANUPC verwendet.

  3. Optionale Bestellzuordnung. Dieser Schritt läuft nur, wenn InternalNumber oder ExternalCode angegeben ist. InternalNumber hat Vorrang. Der Aufruf sucht in pixi.SupplierOrder nach InternalNumber bzw. ExternalCode und prüft die Regeln Error01 bis Error07:

    • der externe Code darf nicht auf mehreren Bestellungen des Lieferanten der Lieferung vorkommen,
    • eine Bestellung muss gefunden werden,
    • die Bestellung muss zum Lieferanten der Lieferung gehören,
    • der Artikel muss auf der Bestellung stehen,
    • der Bestellstatus muss für die Lieferung zulässig sein.

    Die zulässigen Status hängen von der Einstellung ConfirmOrderedDocumentOnDelivery ab: 0 verwendet Status mit IsConfirmed = 1, 1 verwendet Status mit IsOrderedConfirmed = 1. Mit der Id der gefundenen Bestellposition wird anschließend die Lieferposition gesucht, deren SDelDsorderlineRef auf diese Bestellposition verweist.

  4. Lieferposition ohne Bestellzuordnung ermitteln. Gelesen werden alle Positionen der Lieferung für den Artikel, bei Angabe von SdelDkey nur diese Position. Gibt es keine Position oder mehrere Positionen ohne SdelDkey, wird ein Fehler zurückgegeben.

  5. Fehlende Werte ergänzen. Nicht angegebene Parameter behalten die Werte der bestehenden Position: gelieferte Menge, Charge, Mindesthaltbarkeitsdatum und Bestellpositionsreferenz. Die bestellte Menge wird immer aus der bestehenden Position übernommen.

  6. Einkaufspreis aktualisieren. Ist SupplPrice ungleich 0, schreibt Pixi_SetAddItemsSupPrice den Preis in die Lieferanten-Artikeldaten (AddItems). Das geschieht nur bei positiven Preisen. Die Position erhält dann Preis, Mittelpreis und Endpreis = SupplPrice, die Rabatte werden auf 0 gesetzt. Ist SupplPrice 0, bleiben die bisherigen Preise der Position erhalten.

  7. Position schreiben. GOS_SDelDetailInsertOrUpdate aktualisiert die Position und gibt sie vollständig zurück, einschließlich Auftragskennzahlen zum Artikel.

Hinweise

  • Behandlung leerer Werte: Der Code wendet NULLIF(x, '') auf int- und datetime-Parameter an. Dadurch werden 0 (und bei BestBeforeDate das Datum 1900-01-01) zu NULL. Folgen:
    • DeliverdQty = 0 setzt die Menge nicht auf 0; die bestehende Menge bleibt erhalten.
    • SDelHKey = 0 und InternalNumber = 0 gelten als nicht angegeben.
    • Charge und Mindesthaltbarkeitsdatum können nicht geleert werden; NULL oder leer behält den bisherigen Wert.
  • DeliverdQty ist als int deklariert, Bruchmengen sind über diesen Aufruf nicht möglich.
  • Passt DeliveryNumber auf mehrere Lieferungen, wird eine beliebige verwendet (TOP (1) ohne ORDER BY). Für eine eindeutige Auswahl SDelHKey oder SDelHSupplNr mitgeben.
  • Die Bestellsuche ist nicht auf den Lieferanten der Lieferung beschränkt. Existiert derselbe ExternalCode bzw. dieselbe InternalNumber auch bei einer Bestellung eines anderen Lieferanten, wird Error02 zurückgegeben.
  • Enthält die Einstellung ConfirmOrderedDocumentOnDelivery einen anderen Wert als 0 oder 1, ist kein Status zulässig und es wird immer Error06 zurückgegeben. Ausgewertet wird nur das erste Zeichen der Einstellung. Eine fehlende Einstellung gilt als 0.
  • Wird die Bestellzuordnung zusammen mit SdelDkey verwendet, wird die angegebene SdelDkey-Position aktualisiert. Sie wird nicht gegen die gefundene Bestellposition geprüft.
  • Ein negativer SupplPrice wird nicht in AddItems geschrieben, aber trotzdem in die Lieferposition übernommen.
  • Pixi_SetAddItemsSupPrice aktualisiert AddItems.SupplPrice für alle Lieferanten-Artikeldatensätze mit derselben IntLinkNr1 und Lieferantennummer, nicht nur für den gelieferten Artikel.
  • Ist die Einstellung InsertAddItemOnSOrdersDragDrop = 1 und hat der Artikel keinen AddItems-Datensatz für den Lieferanten, legt GOS_SDelDetailInsertOrUpdate einen über Pixi_InsertAddItemOnDelivery an. Diese Prozedur liegt nicht vor; ob sie eine zusätzliche Ergebnismenge liefert, ist unbekannt.
  • Fehler werden als Zeile mit der Spalte ERROR zurückgegeben. Die Prozedur liefert in diesem Fall zusätzlich den Rückgabewert 1. Error04 wird ohne Spaltenalias zurückgegeben.
  • Es wird keine explizite Transaktion verwendet. Lesezugriffe erfolgen mit NOLOCK, das Update mit ROWLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
SDelHKey
int NULL

Interner Schlüssel der Lieferung (SDelHeader.SDelHKey). Dieser Wert oder DeliveryNumber ist erforderlich; 0 gilt als nicht angegeben.

Beispiel: 10452

DeliveryNumber
int NULL

Lieferungsnummer (SDelHNr). Alternative zu SDelHKey; beide können kombiniert als Filter verwendet werden.

Beispiel: 2024117

UserName
varchar(50)
string
API

Benutzername, der als letzter Bearbeiter der Lieferposition gespeichert wird (SDelDupdateEmp).

Beispiel: API

ItemNrInternal
varchar(50)
string
NULL

Artikelkennung, die unter den scanbaren Artikelcodes gesucht wird. Wird nur verwendet, wenn EANUPC leer ist. Dieser Wert oder EANUPC ist erforderlich.

Beispiel: ART-100234

EANUPC
varchar(13)
string
NULL

EAN/UPC des Artikels, gesucht unter den scanbaren Artikelcodes. Hat Vorrang vor ItemNrInternal.

Beispiel: 4006381333931

SDelHSupplNr
varchar(4)
string
NULL

Optionaler Filter auf die Lieferantennummer bei der Suche der Lieferung. Danach wird die Lieferantennummer der gefundenen Lieferung verwendet.

Beispiel: LIEF

DeliverdQty
int NULL

Neue gelieferte Menge. NULL oder 0 behält die bestehende Menge der Position.

Beispiel: 24

SupplPrice
money
decimal
0

Neuer Einkaufspreis. Ist er ungleich 0, wird er in die Position geschrieben (Preis, Mittelpreis und Endpreis; Rabatte werden auf 0 gesetzt). Positive Werte werden zusätzlich in AddItems gespeichert. 0 behält die bestehenden Preise der Position.

Beispiel: 12.50

PiccoUser
varchar(50)
string
NULL

Picco-Benutzername. Wird benötigt, um eine durch Picco gesperrte Lieferung zu bearbeiten; er muss dem sperrenden Benutzer entsprechen.

Beispiel: picco01

InternalNumber
int NULL

Interne Nummer einer Bestellung (pixi.SupplierOrder.InternalNumber). Dient der Zuordnung der Lieferposition zur Bestellposition. Hat Vorrang vor ExternalCode; 0 gilt als nicht angegeben.

Beispiel: 5871

ExternalCode
varchar(50)
string
NULL

Externer Code einer Bestellung (pixi.SupplierOrder.ExternalCode). Wird nur verwendet, wenn InternalNumber leer ist.

Beispiel: PO-2024-0815

BatchNumber
varchar(50)
string
NULL

Chargennummer der Position. NULL oder leer behält den bisherigen Wert.

Beispiel: CH-2024-07

BestBeforeDate
datetime
dateTime
NULL

Mindesthaltbarkeitsdatum der Position. NULL behält den bisherigen Wert.

Beispiel: 2025-12-31T00:00:00

SdelDkey
int NULL

Schlüssel der Lieferposition (SDelDetail.SDelDkey). Erforderlich, wenn der Artikel auf mehreren Positionen der Lieferung vorkommt.

Beispiel: 883104

Antwort

Result-Set 1 · Wenn eine Prüfung fehlschlägt (alle Fehler außer Error04)

Eine Zeile mit dem Fehlertext; es wird nichts geändert.

Spalte Typ Beschreibung
ERROR nvarchar
string

Fehlermeldung.

Result-Set 2 · Bei Error04 (Suche über ExternalCode, Artikel nicht auf der Bestellung)

Eine Zeile mit dem Fehlertext in einer Spalte ohne Alias; der Spaltenname in der Antwort ist im Code nicht festgelegt.

Spalte Typ Beschreibung
(unnamed) varchar
string

Text Error04: Item not found on Purchase Order.

Result-Set 3 · Bei Erfolg

Die aktualisierte Lieferposition, wie von GOS_SDelDetailInsertOrUpdate zurückgegeben.

Spalte Typ Beschreibung
SDelDkey int

Schlüssel der Lieferposition.

SDelDHref int

Schlüssel des Lieferungskopfs.

SDelDItemRef int

Artikelschlüssel.

SDelDItemName
Kann leer sein
string

Artikelname.

SDelDqtyDelivered money
decimal

Gelieferte Menge.

SDelDqtyOrdered money
decimal

Bestellte Menge.

SDelDsorderlineRef
Kann leer sein
int

Referenz auf die Bestellposition.

SDelDsPrice
Kann leer sein
money
decimal

Einkaufspreis.

SDelDsDiscount
Kann leer sein
money
decimal

Rabatt.

SDelDsFinalPrice
Kann leer sein
money
decimal

Endpreis.

SDelDcreateDate
Kann leer sein
datetime
dateTime

Erstellungsdatum der Position.

SDelDcreateEmp
Kann leer sein
string

Benutzer, der die Position angelegt hat.

SDelDupdateDate
Kann leer sein
datetime
dateTime

Datum der letzten Änderung.

SDelDupdateEmp
Kann leer sein
string

Benutzer der letzten Änderung.

SDelDsAddDiscount
Kann leer sein
money
decimal

Zusatzrabatt.

SDelDsMidPrice
Kann leer sein
money
decimal

Mittelpreis.

BatchNumber
Kann leer sein
varchar(50)
string

Chargennummer.

BestBeforeDate
Kann leer sein
datetime
dateTime

Mindesthaltbarkeitsdatum.

BuyingMatchQty decimal

Summe der BuyingMatch-Mengen dieser Position mit Bestellpositionsreferenz.

OpenCustomersCountForItem int

Anzahl der Kunden mit aktiven Auftragspositionen für den Artikel im Lager der Lieferung.

OpenOrdersCountForItem int

Anzahl der Aufträge mit aktiven Auftragspositionen für den Artikel im Lager der Lieferung.

OpenQTYSforItem
Kann leer sein
decimal

Gesamtmenge aktiver Auftragspositionen für den Artikel im Lager der Lieferung.

ItemNrSuppl
Kann leer sein
string

Lieferanten-Artikelnummer aus AddItems (Lieferant der Lieferung, sonst MGS).

ItemNrInt
Kann leer sein
string

Interne Artikelnummer aus AddItems.

EANUPC
Kann leer sein
string

EAN/UPC aus AddItems für den Lieferanten und die IntLinkNR1 des Artikels.

Fehlermeldungen

Status Meldung Ursache
ERROR You must provide Delivery referenc or Delivery number. Weder `SDelHKey` noch `DeliveryNumber` angegeben (oder 0).
ERROR You must provide item EAN or ItemNrInternal. Weder `EANUPC` noch `ItemNrInternal` angegeben.
ERROR For given parameters (@SDelHKey, @SDelHNr, @SDelHSupplNr) no delivery document found. Keine Lieferung passt zu Schlüssel, Nummer und Lieferantennummer.
ERROR You cant update items from closed or invoiced deliveries. Die Lieferung hat den Status `CLS` oder `INV`.
ERROR Delivery is locked by picco Die Lieferung ist durch Picco gesperrt und `PiccoUser` entspricht nicht dem sperrenden Benutzer.
ERROR Item with EANUPC {EANUPC} does not exist. Kein scanbarer Artikelcode entspricht der angegebenen EAN.
ERROR Item with ItemNrInternal {ItemNrInternal} does not exist. Kein scanbarer Artikelcode entspricht `ItemNrInternal` (und keine EAN angegeben).
ERROR Error01: External Code belongs to multiple Purchase orders Suche über `ExternalCode`: Der Code existiert auf mehreren Bestellungen des Lieferanten der Lieferung. Stattdessen `InternalNumber` verwenden.
ERROR Error02: Purchase order belongs to a different supplier Eine über `InternalNumber`/`ExternalCode` gefundene Bestellung gehört zu einem anderen Lieferanten als die Lieferung.
ERROR Error03: No Purchase Order match for External Code Keine Bestellung mit dem angegebenen `ExternalCode` vorhanden.
ERROR Error04: Item not found on Purchase Order Suche über `ExternalCode`: Die Bestellung (in zulässigem Status) enthält keine Position für den Artikel. Wird ohne Spaltenalias zurückgegeben.
ERROR Error05: Item not found on Purchase Order Suche über `InternalNumber`: Die Bestellung (in zulässigem Status) enthält keine Position für den Artikel.
ERROR Error06: Purchase Order is not on proper status Der Bestellstatus ist laut Einstellung `ConfirmOrderedDocumentOnDelivery` für die Lieferung nicht zulässig.
ERROR Error07: No Purchase Order match for Internal Number Keine Bestellung mit der angegebenen `InternalNumber` vorhanden.
ERROR Item not exist on delivery Die Lieferung enthält keine Position für den Artikel (bzw. für die angegebene `SdelDkey`). Neue Positionen können mit diesem Aufruf nicht angelegt werden.
ERROR Multiple rows for this item exist, you must provide SdelDkey (delivery item line ID) Der Artikel kommt auf mehreren Positionen der Lieferung vor; `SdelDkey` angeben.
ERROR Purchase Order item with InternalNumber or ExternalCode reference does not exist on Delivery. Die gefundene Bestellposition wird von keiner Position dieser Lieferung für den Artikel referenziert.

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:pixiUpdateDeliveryItem>
      <!-- <SDelHKey>10452</SDelHKey> -->
      <!-- <DeliveryNumber>2024117</DeliveryNumber> -->
      <!-- <UserName>API</UserName> -->
      <!-- <ItemNrInternal>ART-100234</ItemNrInternal> -->
      <!-- <EANUPC>4006381333931</EANUPC> -->
      <!-- <SDelHSupplNr>LIEF</SDelHSupplNr> -->
      <!-- <DeliverdQty>24</DeliverdQty> -->
      <!-- <SupplPrice>12.50</SupplPrice> -->
      <!-- <PiccoUser>picco01</PiccoUser> -->
      <!-- <InternalNumber>5871</InternalNumber> -->
      <!-- <ExternalCode>PO-2024-0815</ExternalCode> -->
      <!-- <BatchNumber>CH-2024-07</BatchNumber> -->
      <!-- <BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate> -->
      <!-- <SdelDkey>883104</SdelDkey> -->
    </ns1:pixiUpdateDeliveryItem>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

SDelHeader · Lesen SDelDetail · Schreiben Suppliers · Lesen SupplierOrderStatus · Lesen SupplierOrder · Lesen SupplierOrderLine · Lesen ItemCode · Lesen ItemCodeType · Lesen Settings · Lesen Items · Lesen AddItems · Schreiben BuyingMatch · Lesen Customers · Lesen Orderlines · Lesen OrderStates · Lesen OrderHeader · Lesen
SQL-Objekt:
dbo.pipiUpdateDeliveryItem
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben