Postman-Collection
Items Schreiben

pixiCreateItemSupplier

Legt eine neue Lieferantenzuordnung (AddItems-Datensatz) für einen bestehenden Artikel an, optional mit eigener EAN und als bevorzugter Lieferant.

Ordnet einem Artikel einen Lieferanten zu, indem ein Datensatz in AddItems eingefügt wird. Der Aufruf liefert genau eine Statuszeile (Status, Message).

Ablauf:

  1. Lieferantenprüfung: SupplNr ist Pflicht; ein Leerstring gilt als nicht angegeben. Der Lieferant muss in Suppliers existieren.
  2. Artikelidentifikation: Der Artikel wird über pixi.ItemCode ermittelt, und zwar anhand von ItemKey, EAN (Barcode, Codetyp 1) und/oder ItemNrInt (Shop-Artikelnummer, Codetyp 2). Mindestens ein Wert ist erforderlich. Werden mehrere Werte angegeben, müssen alle auf denselben Artikel zeigen. Jeder angegebene Wert muss gefunden werden.
  3. Prüfung NewEAN: Wird NewEAN angegeben, darf dieser Code bei keinem anderen Artikel unter einem scanbaren Codetyp existieren.
  4. EAN des neuen Datensatzes: Gespeichert wird NewEAN. Fehlt dieser Wert, wird EAN verwendet. Fehlen beide, wird die EANUPC des Artikels aus items übernommen. Aus dem Artikel übernommen werden außerdem ItemNrInt (falls nicht angegeben), IntLinkNR1, IntLinkNR und der Verkaufspreis Price.
  5. Dublettenprüfung: Existiert für den Artikel in pixi.ItemCode bereits ein Barcode-Eintrag mit dieser EAN für diesen Lieferanten, bricht der Aufruf mit einem Fehler ab.
  6. Bevorzugter Lieferant: Bei PreferredSupplier = 1 wird zuerst der bisherige bevorzugte Lieferantendatensatz des Artikels (ein Datensatz, TOP (1)) auf PreferredSupplier = 0 gesetzt.
  7. Einfügen: Ein neuer AddItems-Datensatz wird angelegt. Er erhält SupplPrice, ItemNrSuppl, SupplDeliveryTime (= ItemDeliveryTime), MinOrderQty, OrderOnlyPackageUnits (= OnlyPU), Active (= IsActive) und PreferredSupplier. AutoPrice wird auf 0 gesetzt, CreateDate auf den aktuellen Zeitpunkt.

Bei Erfolg lautet der Status New record inserted. Die Meldung enthält den gespeicherten Lieferantenpreis, die Lieferantenartikelnummer und die EAN.

Hinweise

  • Alle Fehler werden als normale Zeile mit Status = Error zurückgegeben; es wird kein RAISERROR verwendet.
  • Das Zurücksetzen des alten bevorzugten Lieferanten und das Einfügen laufen in einer Transaktion. Läuft bereits eine Transaktion, wird stattdessen ein Savepoint gesetzt.
  • Bei einer Ausnahme wird die Transaktion zurückgerollt und der Fehler über log.InsertError protokolliert. Der SQL-Fehlertext wird anschließend in Message geliefert.
  • Die Abfragen verwenden NOLOCK; nicht festgeschriebene Daten können gelesen werden.
  • Die Dublettenprüfung liest pixi.ItemCode, nicht AddItems. Ob pixi.ItemCode mit AddItems synchron gehalten wird (z. B. per Trigger), ist aus diesem Code nicht ersichtlich.
  • Lässt sich keine EAN ermitteln (kein NewEAN, kein EAN, Artikel ohne EANUPC), greift die Dublettenprüfung nie. Der Datensatz wird dann ohne EAN angelegt.
  • NewEAN setzt nur die EAN des neuen Lieferantendatensatzes. Die Haupt-EAN des Artikels in items bleibt unverändert.
  • ItemNrInt wird nicht von Leerstring auf NULL normalisiert. Ein leer übergebenes ItemNrInt zusammen mit einem anderen Identifikator führt zu einer leeren ItemNrInt im neuen Datensatz.
  • ItemDeliveryTime wird bei explizit übergebenem NULL nicht durch 0 ersetzt.
  • Es wird nur ein bisher bevorzugter Datensatz (TOP (1)) zurückgesetzt. Weitere als bevorzugt markierte Datensätze bleiben unverändert.

Parameter

Parameter Typ Standardwert Beschreibung
ItemKey
int NULL

Artikelschlüssel zur Identifikation des Artikels. 0 gilt als nicht angegeben.

Beispiel: 10452

ItemNrInt
varchar(50)
string
NULL

Shop-Artikelnummer zur Identifikation des Artikels (Codetyp 2). Fehlt sie, wird die ItemNrInt des Artikels im neuen Datensatz gespeichert.

Beispiel: SHOP-10452

EAN
varchar(13)
string
NULL

Barcode zur Identifikation des Artikels (Codetyp 1). Er wird auch als EAN des neuen Datensatzes verwendet, wenn NewEAN leer ist.

Beispiel: 4006381333931

NewEAN
varchar(13)
string
NULL

EAN, die im neuen Lieferantendatensatz gespeichert wird. Sie darf nicht als scanbarer Code bei einem anderen Artikel existieren.

Beispiel: 4006381333948

SupplNr
Pflicht
varchar(4)
string
–

Lieferantennummer (Pflicht); muss in Suppliers existieren.

Beispiel: L001

SupplPrice
money
decimal
0

Einkaufspreis beim Lieferanten; NULL wird zu 0.

Beispiel: 12.50

ItemNrSuppl
varchar(50)
string
NULL

Artikelnummer des Lieferanten; ein Leerstring wird als NULL gespeichert.

Beispiel: SUP-4711

PreferredSupplier
bit
boolean
0

Markiert den neuen Datensatz als bevorzugten Lieferanten; der bisherige bevorzugte Datensatz wird zuvor zurückgesetzt.

Erlaubte Werte

  • 0 – Nicht bevorzugt
  • 1 – Bevorzugter Lieferant; setzt den bisherigen bevorzugten Datensatz zurück

Beispiel: 1

MinOrderQty
int 0

Mindestbestellmenge; NULL wird zu 0.

Beispiel: 10

OnlyPU
bit
boolean
0

Nur in Verpackungseinheiten bestellen (gespeichert in OrderOnlyPackageUnits).

Erlaubte Werte

  • 0 – Keine Einschränkung
  • 1 – Nur Verpackungseinheiten bestellen

Beispiel: 0

ItemDeliveryTime
int 0

Lieferzeit des Lieferanten (gespeichert in SupplDeliveryTime).

Beispiel: 5

IsActive
bit
boolean
1

Gibt an, ob der Lieferantendatensatz aktiv ist; NULL wird zu 1.

Erlaubte Werte

  • 1 – Aktiv
  • 0 – Inaktiv

Beispiel: 1

Antwort

Result-Set 1 · Immer (genau eine Zeile: Erfolg oder Fehler)

Statuszeile des Aufrufs.

Spalte Typ Beschreibung
Status varchar(19)
string

New record inserted bei Erfolg, sonst Error.

Message
Kann leer sein
nvarchar(4000)
string

Bei Erfolg gespeicherter Lieferantenpreis, Lieferantenartikelnummer und EAN; sonst der Fehlertext.

Fehlermeldungen

Status Meldung Ursache
Error Parameter @SupplNr is mandatory. `SupplNr` fehlt oder ist leer.
Error Supplier with SupplNr:{SupplNr} does not exist. In `Suppliers` existiert kein Lieferant mit dieser Nummer.
Error Please specify at least one parameter. Weder `ItemKey` noch `EAN` noch `ItemNrInt` wurde angegeben.
Error No items found with given parameters. ItemKey: {ItemKey} not found. Für den angegebenen `ItemKey` gibt es keinen Eintrag in `pixi.ItemCode`.
Error No items found with given parameters. EAN: {EAN} not found. Die angegebene `EAN` ist bei keinem Artikel als Barcode (Codetyp 1) hinterlegt.
Error No items found with given parameters. ItemNrInt: {ItemNrInt} not found. Die angegebene `ItemNrInt` ist bei keinem Artikel als Shop-Artikelnummer (Codetyp 2) hinterlegt.
Error More than one item was identified with the given parameters. Die angegebenen Identifikatoren gehören zu verschiedenen Artikeln. Es sind Identifikatoren desselben Artikels zu übergeben.
Error The @NewEAN code {NewEAN} already exists on another scannable item. `NewEAN` ist bereits als scanbarer Code bei einem anderen Artikel vergeben.
Error Item with EANUPC: {EAN} and Supplier number "{SupplNr}" already exists. Für den Artikel ist diese EAN bei diesem Lieferanten bereits hinterlegt.
Error {ERROR_MESSAGE()} Beim Aktualisieren oder Einfügen in `AddItems` ist ein SQL-Fehler aufgetreten (z. B. Constraint-Verletzung). 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:pixiCreateItemSupplier>
      <!-- <ItemKey>10452</ItemKey> -->
      <!-- <ItemNrInt>SHOP-10452</ItemNrInt> -->
      <!-- <EAN>4006381333931</EAN> -->
      <!-- <NewEAN>4006381333948</NewEAN> -->
      <SupplNr>L001</SupplNr>
      <!-- <SupplPrice>12.50</SupplPrice> -->
      <!-- <ItemNrSuppl>SUP-4711</ItemNrSuppl> -->
      <!-- <PreferredSupplier>1</PreferredSupplier> -->
      <!-- <MinOrderQty>10</MinOrderQty> -->
      <!-- <OnlyPU>0</OnlyPU> -->
      <!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
      <!-- <IsActive>1</IsActive> -->
    </ns1:pixiCreateItemSupplier>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Suppliers · Lesen ItemCode · Lesen ItemCodeType · Lesen items · Lesen AddItems · Schreiben
SQL-Objekt:
dbo.pipiCreateItemSupplier
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben