Postman-Collection
Suppliers Schreiben

pixiCreateDeliveryItem

Legt eine neue Artikelposition in einer offenen Lieferantenlieferung an, die über Lieferungs-Key oder -Nummer bestimmt wird, und liefert die angelegte Position zurück.

Legt eine neue Position (SDelDetail) in einer Lieferantenlieferung (SDelHeader) an.

  1. Normalisierung: Leere Werte gelten als nicht übergeben. Bei den numerischen Parametern zählt dadurch auch 0 als leer: SDelHKey = 0 und SDelHNr = 0 werden zu NULL. Nicht übergebene Mengen und Preise werden zu 0.
  2. Pflichtangaben: Es muss entweder SDelHKey oder SDelHNr sowie entweder EANUPC oder ItemNrInternal gesetzt sein.
  3. Artikelsuche: Der Artikel wird über COALESCE(EANUPC, ItemNrInternal) unter den scanbaren Artikelcodes gesucht (pixi.ItemCode verknüpft mit ItemCodeType, Scannable = 1). Ist EANUPC gesetzt, wird ItemNrInternal ignoriert.
  4. Lieferungssuche: Ist SDelHKey leer, wird der Key der ersten Lieferung mit SDelHNr verwendet. Sind beide angegeben, hat SDelHKey Vorrang.
  5. Prüfungen:
    • Die Lieferung muss existieren und darf nicht den Status CLS (abgeschlossen) oder INV (berechnet) haben.
    • Die Lieferung darf nicht durch Picco gesperrt sein (LockedByPicco = 'Y').
    • LocID muss leer sein, oder es muss mindestens eine Lieferantenlieferung mit SDelHLocationID = LocID existieren.
  6. Anlage: Der Artikelname wird aus items übernommen, der Lieferant aus dem Lieferungskopf. Es wird immer eine neue Position eingefügt, mit bestellter und gelieferter Menge, Einkaufspreis, Endpreis, Charge und Mindesthaltbarkeitsdatum. Ein Bestellpositionsbezug wird nicht gesetzt. Rabatte und Mittelpreis werden auf 0 gesetzt.
  7. Preis-Fallback: Ist SupplPrice 0 oder nicht übergeben und hat die Lieferung einen Lieferanten, wird der Einkaufspreis aus dem Lieferantenartikel (AddItems.SupplPrice) übernommen. Dieser Wert gilt für Preis, Mittelpreis und Endpreis. Ein übergebener SupplFinalPrice wird in diesem Fall ebenfalls überschrieben.
  8. Ergebnis: Die neu angelegte Lieferposition wird mit Zusatzinformationen zurückgegeben:
    • auf Lieferantenbestellpositionen zugeordnete Menge
    • offene Kunden, offene Aufträge und offene Menge zum Artikel im Lager der Lieferung
    • Lieferanten-Artikelnummer und interne Artikelnummer aus dem Lieferantenartikel

Alle Fehler werden per RAISERROR (Schweregrad 16) ausgelöst. In diesem Fall wird keine Position angelegt.

Hinweise

  • SDelHSupplNr und PiccoUser werden angenommen, aber nicht verwendet; SDelHSupplNr ist im Code als ungenutzt markiert (DEV-4203). Der Lieferant stammt immer aus dem Lieferungskopf.
  • Lagerprüfung: Die Prüfung von LocID vergleicht nicht mit dem Lager der Ziel-Lieferung. Es wird nur geprüft, ob irgendeine Lieferantenlieferung mit dieser Lager-ID existiert.
  • Doppelte Positionen: Ein erneuter Aufruf für denselben Artikel legt eine weitere Position an. Bestehende Positionen werden nie aktualisiert; der Fehlertext verweist für Änderungen auf pixiUpdateDeliveryItem.
  • Anlage von Lieferantenartikeln: Ist die Einstellung InsertAddItemOnSOrdersDragDrop auf 1 und existiert für Lieferant und Artikel kein Lieferantenartikel (AddItems), wird die interne Prozedur Pixi_InsertAddItemOnDelivery aufgerufen. Diese Prozedur liegt nicht vor, daher sind ihre genauen Auswirkungen hier nicht dokumentiert; vermutlich legt sie einen solchen Eintrag an.
  • Preis kann NULL sein: Beim Preis-Fallback wird der Preis NULL, wenn für den Artikel beim Lieferanten kein Lieferantenartikel existiert.
  • Doppelter Fehlertext: Fehlt nur die Lieferungsreferenz, verkettet die Prüflogik die Meldung doppelt, sodass der Fehlertext zweimal erscheint.
  • Benutzername: Wird UserName als leerer String übergeben, wird er zu NULL und als NULL für Anleger/Bearbeiter gespeichert.
  • Lesezugriffe erfolgen mit NOLOCK. Es wird keine explizite Transaktion verwendet.

Parameter

Parameter Typ Standardwert Beschreibung
SDelHKey
int NULL

Interner Key der Lieferantenlieferung. Hat Vorrang vor SDelHNr; 0 gilt als nicht übergeben.

Beispiel: 5321

SDelHNr
int NULL

Lieferungsnummer. Wird nur verwendet, wenn SDelHKey leer ist. Dieser Parameter oder SDelHKey ist Pflicht.

Beispiel: 10452

UserName
varchar(50)
string
API

Benutzername, der als Anleger und letzter Bearbeiter der Position gespeichert wird.

Beispiel: API

ItemNrInternal
varchar(50)
string
NULL

Artikelcode für die Suche, falls EANUPC leer ist. Er wird gegen die scanbaren Artikelcodes geprüft.

Beispiel: ART-10045

EANUPC
varchar(13)
string
NULL

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

Beispiel: 4006381333931

SupplPrice
money
decimal
NULL

Einkaufspreis der Position. Bei 0 oder ohne Angabe wird der Preis aus dem Lieferantenartikel übernommen.

Beispiel: 12.50

SupplFinalPrice
money
decimal
NULL

Endpreis im Einkauf. Er wird durch den Fallback-Preis überschrieben, wenn SupplPrice 0 ist.

Beispiel: 12.50

SDelHSupplNr
varchar(4)
string
NULL

Wird nicht verwendet (DEV-4203). Der Lieferant wird aus dem Lieferungskopf übernommen.

OrderdQty
money
decimal
0

Bestellte Menge der Position.

Beispiel: 10

DeliverdQty
money
decimal
0

Gelieferte Menge der Position.

Beispiel: 10

LocID
varchar(255)
string
NULL

Optionale Lager-ID. Ist sie gesetzt, muss mindestens eine Lieferantenlieferung mit dieser Lager-ID existieren, sonst wird ein Fehler ausgelöst.

Beispiel: 001

PiccoUser
varchar(59)
string
NULL

Wird im Code nicht verwendet.

BatchNumber
varchar(50)
string
NULL

Charge, die an der Lieferposition gespeichert wird.

Beispiel: CH-2024-0815

BestBeforeDate
datetime
dateTime
NULL

Mindesthaltbarkeitsdatum, das an der Lieferposition gespeichert wird.

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

Antwort

Result-Set 1 · Bei Erfolg (alle Prüfungen bestanden, Position angelegt)

Die neu angelegte Lieferantenlieferposition mit Zusatzinformationen.

Spalte Typ Beschreibung
SDelDkey int

Key der neuen Lieferposition.

SDelDHref int

Key der Lieferantenlieferung.

SDelDItemRef int

Artikel-Key.

SDelDItemName
Kann leer sein
string

Artikelname aus dem Artikelstamm.

SDelDqtyDelivered
Kann leer sein
money
decimal

Gelieferte Menge.

SDelDqtyOrdered
Kann leer sein
money
decimal

Bestellte Menge.

SDelDsorderlineRef
Kann leer sein
int

Bezug zu einer Lieferantenbestellposition; bei über diesen Aufruf angelegten Positionen immer NULL.

SDelDsPrice
Kann leer sein
money
decimal

Einkaufspreis.

SDelDsDiscount
Kann leer sein
money
decimal

Rabatt (immer 0).

SDelDsFinalPrice
Kann leer sein
money
decimal

Endpreis im Einkauf.

SDelDcreateDate
Kann leer sein
datetime
dateTime

Anlagedatum.

SDelDcreateEmp
Kann leer sein
varchar(50)
string

Anlegender Benutzer.

SDelDupdateDate
Kann leer sein
datetime
dateTime

Datum der letzten Änderung.

SDelDupdateEmp
Kann leer sein
varchar(50)
string

Benutzer der letzten Änderung.

SDelDsAddDiscount
Kann leer sein
money
decimal

Zusatzrabatt (immer 0).

SDelDsMidPrice
Kann leer sein
money
decimal

Mittelpreis: 0, oder der Preis des Lieferantenartikels, wenn der Preis-Fallback greift.

BatchNumber
Kann leer sein
varchar(50)
string

Charge.

BestBeforeDate
Kann leer sein
datetime
dateTime

Mindesthaltbarkeitsdatum.

BuyingMatchQty decimal

Summe der dieser Position zugeordneten Mengen zu Lieferantenbestellpositionen (BuyingMatch), 0 falls keine.

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

Summe der Mengen aktiver Auftragspositionen für den Artikel im Lager der Lieferung; NULL, wenn keine vorhanden sind.

ItemNrSuppl
Kann leer sein
string

Lieferanten-Artikelnummer aus AddItems für den Lieferanten der Lieferung (MGS, falls die Lieferung keinen Lieferanten hat).

ItemNrInt
Kann leer sein
string

Interne Artikelnummer aus AddItems für den Lieferanten der Lieferung (MGS, falls die Lieferung keinen Lieferanten hat).

EANUPC
Kann leer sein
string

EAN/UPC aus dem Lieferantenartikel des Lieferanten der Lieferung, zugeordnet über IntLinkNR1.

Fehlermeldungen

Status Meldung Ursache
RAISERROR You must provide Delivery reference or Delivery number. Weder `SDelHKey` noch `SDelHNr` ist angegeben (oder beide sind 0/leer). Einen der beiden Werte übergeben. Der Text kann wegen der Verkettung doppelt erscheinen.
RAISERROR You must provide item EAN or ItemNrInternal. Weder `EANUPC` noch `ItemNrInternal` ist angegeben. Einen der beiden Werte übergeben.
RAISERROR Item with EANUPC {EANUPC} does not exist. Kein scanbarer Artikelcode entspricht der übergebenen `EANUPC`.
RAISERROR Item with ItemNrInternal {ItemNrInternal} does not exist. `EANUPC` ist leer und kein scanbarer Artikelcode entspricht `ItemNrInternal`.
RAISERROR You cant add items to closed or invoiced deliveries. Die Lieferung existiert nicht (z. B. unbekannte `SDelHNr`) oder hat den Status `CLS` oder `INV`.
RAISERROR Delivery is locked! Die Lieferung ist durch Picco gesperrt (`LockedByPicco = 'Y'`). Nach Aufhebung der Sperre erneut versuchen.
RAISERROR Error: You cant add the item to the delivery, you have enter an invalid Location ID. For Updating use pixiUpdateDeliveryItem. `LocID` ist gesetzt, aber es existiert keine Lieferantenlieferung mit dieser Lager-ID. `LocID` leer lassen oder eine gültige Lager-ID übergeben.

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:pixiCreateDeliveryItem>
      <!-- <SDelHKey>5321</SDelHKey> -->
      <!-- <SDelHNr>10452</SDelHNr> -->
      <!-- <UserName>API</UserName> -->
      <!-- <ItemNrInternal>ART-10045</ItemNrInternal> -->
      <!-- <EANUPC>4006381333931</EANUPC> -->
      <!-- <SupplPrice>12.50</SupplPrice> -->
      <!-- <SupplFinalPrice>12.50</SupplFinalPrice> -->
      <!-- <SDelHSupplNr>?</SDelHSupplNr> -->
      <!-- <OrderdQty>10</OrderdQty> -->
      <!-- <DeliverdQty>10</DeliverdQty> -->
      <!-- <LocID>001</LocID> -->
      <!-- <PiccoUser>?</PiccoUser> -->
      <!-- <BatchNumber>CH-2024-0815</BatchNumber> -->
      <!-- <BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate> -->
    </ns1:pixiCreateDeliveryItem>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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