Postman-Collection
Suppliers Schreiben

pixiUpdateItemSupplier

Aktualisiert einen Lieferantenartikel-Datensatz (AddItems) eines Artikels: EAN, Lieferantenpreis, Lieferanten-Artikelnummer, Hauptlieferant, Mindestmenge, Lieferzeit, Aktiv-Flag.

Aktualisiert genau einen Lieferantenartikel-Datensatz in AddItems. Ein Lieferantenartikel ist die Kombination aus Artikel, Lieferant und EAN (EANUPC).

Ablauf:

  1. SupplNr ist Pflicht. Ein Leerstring gilt als nicht angegeben. Der Lieferant wird in Suppliers über SupplNr gesucht; existiert er nicht, wird eine Fehlerzeile geliefert.
  2. Mindestens ein Änderungsparameter muss gesetzt sein: NewEAN, SupplPrice, ItemNrSuppl, PreferredSupplier, MinOrderQty, OnlyPU, ItemDeliveryTime oder IsActive. Bei NewEAN und ItemNrSuppl gilt ein Leerstring als nicht gesetzt.
  3. Der Artikel wird über ItemKey, EAN (Barcode, Codetyp 1) und/oder ItemNrInt (Shop-Artikelnummer, Codetyp 2) in pixi.ItemCode ermittelt. Jede übergebene Kennung muss existieren, und alle müssen auf denselben Artikel zeigen. ItemKey = 0 gilt als nicht gesetzt.
  4. Wird NewEAN übergeben, darf dieser Code nicht bereits als scanbarer Code eines anderen Artikels existieren.
  5. Alle Lieferantenartikel des Artikels werden geladen. Der zu ändernde Datensatz wird über den ermittelten Lieferanten und, falls EAN übergeben wurde, über EANUPC = EAN bestimmt. Es muss genau ein Datensatz passen. Hat der Lieferant mehrere EANs für den Artikel, ist EAN zur eindeutigen Auswahl anzugeben.
  6. Wird NewEAN übergeben, darf kein anderer Lieferantenartikel desselben Artikels diese EAN bereits für dieselbe SupplNr haben.
  7. Bei PreferredSupplier = 1 werden alle anderen derzeit bevorzugten Lieferantenartikel des Artikels auf PreferredSupplier = 0 gesetzt.
  8. Die Aktualisierung läuft in einer Transaktion.

Am Zieldatensatz werden nur die übergebenen Werte geändert. Nicht übergebene Werte behalten ihren bisherigen Inhalt. Zusätzlich gilt:

  • UpdateDate wird auf die aktuelle Zeit gesetzt.
  • RowVersion wird um 1 erhöht.
  • SupplPriceUpdateDate wird auf jetzt gesetzt, wenn sich der neue SupplPrice vom gespeicherten Preis unterscheidet.

Geliefert wird eine Statuszeile (Status, Message). Bei Erfolg ist Status gleich Record updated, und Message enthält den resultierenden Preis, die Lieferanten-Artikelnummer und die EAN des Zieldatensatzes.

Hinweise

  • Werte leeren ist nicht möglich. Parameter mit NULL sowie Leerstrings bei NewEAN und ItemNrSuppl behalten den bisherigen Wert. Ein Feld kann mit diesem Aufruf nicht auf NULL gesetzt werden.
  • EAN hat zwei Aufgaben. Die EAN identifiziert den Artikel: Sie muss als Barcode (Codetyp 1) in pixi.ItemCode existieren. Außerdem wählt sie den AddItems-Datensatz über EANUPC aus.
  • NewEAN ändert nur AddItems.EANUPC. Die Prozedur aktualisiert pixi.ItemCode nicht direkt. Ob Trigger den Code abgleichen, ist aus diesem Code nicht ersichtlich.
  • PreferredSupplier = 0 entfernt das Kennzeichen nur am Zieldatensatz. Kein anderer Lieferant wird zum Hauptlieferanten gemacht.
  • SupplPriceUpdateDate wird nicht aktualisiert, wenn der gespeicherte Preis NULL war, da der Vergleich SupplPrice <> @SupplPrice dann nicht zutrifft.
  • NULL-Meldungen. Wird kein Lieferantenartikel gefunden und wurde ItemKey nicht übergeben, ist die Fehler-Message wegen der String-Verkettung mit NULL selbst NULL. Dasselbe gilt für die Erfolgs-Message, wenn der resultierende SupplPrice NULL ist.
  • Sperren. Lesezugriffe auf Suppliers, pixi.ItemCode und AddItems erfolgen mit NOLOCK. Das Update verwendet ROWLOCK.
  • Transaktionen. Die Prozedur öffnet eine eigene Transaktion oder setzt einen Savepoint, wenn bereits eine Transaktion offen ist. Im Fehlerfall wird zurückgerollt, über log.InsertError (Definition nicht beigefügt) protokolliert und ERROR_MESSAGE() als Statuszeile geliefert.
  • Lieferantensuche. Sie verwendet TOP (1) auf Suppliers über SupplNr.

Parameter

Parameter Typ Standardwert Beschreibung
ItemKey
int NULL

Interne Artikel-ID zur Identifikation des Artikels. 0 gilt als nicht gesetzt.

Beispiel: 12345

ItemNrInt
varchar(50)
string
NULL

Shop-Artikelnummer (Codetyp 2 in pixi.ItemCode) zur Identifikation des Artikels.

Beispiel: ART-1001

EAN
varchar(13)
string
NULL

Aktuelle EAN. Identifiziert den Artikel (Codetyp 1) und wählt den Lieferantenartikel über EANUPC aus. Erforderlich, wenn der Lieferant mehrere EANs für den Artikel hat.

Beispiel: 4006381333931

NewEAN
varchar(13)
string
NULL

Neue EAN für EANUPC. Sie darf weder als scanbarer Code eines anderen Artikels noch bei einem anderen Lieferantenartikel desselben Artikels und Lieferanten existieren. Ein Leerstring behält den aktuellen Wert.

Beispiel: 4006381333948

SupplNr
Pflicht
varchar(4)
string
–

Lieferantennummer. Pflicht. Muss in Suppliers existieren.

Beispiel: L001

SupplPrice
money
decimal
NULL

Neuer Lieferanten-(Einkaufs-)Preis. Weicht er vom gespeicherten Preis ab, wird SupplPriceUpdateDate auf jetzt gesetzt.

Beispiel: 12.50

ItemNrSuppl
varchar(50)
string
NULL

Neue Lieferanten-Artikelnummer. Ein Leerstring behält den aktuellen Wert.

Beispiel: LF-4711

PreferredSupplier
bit
boolean
NULL

Setzt oder entfernt das Hauptlieferanten-Kennzeichen.

Erlaubte Werte

  • 1 – Als Hauptlieferant markieren; andere bevorzugte Lieferantenartikel des Artikels werden auf 0 gesetzt.
  • 0 – Kennzeichen nur an diesem Lieferantenartikel entfernen.

Beispiel: 1

MinOrderQty
int NULL

Neue Mindestbestellmenge.

Beispiel: 10

OnlyPU
bit
boolean
NULL

Neuer Wert für OrderOnlyPackageUnits (nur in Verpackungseinheiten bestellen).

Erlaubte Werte

  • 1 – Nur in Verpackungseinheiten bestellen.
  • 0 – Keine Einschränkung auf Verpackungseinheiten.

Beispiel: 0

ItemDeliveryTime
int NULL

Neue Lieferzeit des Lieferanten (SupplDeliveryTime).

Beispiel: 5

IsActive
bit
boolean
NULL

Setzt das Active-Kennzeichen des Lieferantenartikels.

Erlaubte Werte

  • 1 – Lieferantenartikel ist aktiv.
  • 0 – Lieferantenartikel ist inaktiv.

Beispiel: 1

Antwort

Result-Set 1 · Bei einem Validierungsfehler oder einem Fehler während der Aktualisierung (statt der Erfolgszeile)

Eine einzelne Statuszeile mit der Fehlerbeschreibung.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer Error.

Message
Kann leer sein
varchar
string

Fehlertext. Kann in einigen Fällen NULL sein (siehe Hinweise).

Result-Set 2 · Bei Erfolg

Eine Zeile für den aktualisierten Ziel-Lieferantenartikel.

Spalte Typ Beschreibung
Status varchar(14)
string

Immer Record updated.

Message
Kann leer sein
varchar
string

Resultierende Werte im Format SupplPrice:…, ItemNrSuppl:…, EANUPC:…. NULL, wenn der resultierende Preis NULL ist.

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 At least one update parameter must be provided (@NewEAN, @SupplPrice, @ItemNrSuppl, @PreferredSupplier, @MinOrderQty, @OnlyPU, @ItemDeliveryTime, or @IsActive). Es wurde kein zu ändernder Wert übergeben.
Error Please specify at least one parameter. Weder `ItemKey` noch `EAN` noch `ItemNrInt` wurde übergeben.
Error No items found with given parameters. ItemKey: {ItemKey} not found. `ItemKey` existiert nicht in `pixi.ItemCode`.
Error No items found with given parameters. EAN: {EAN} not found. `EAN` existiert nicht als Barcode (Codetyp 1).
Error No items found with given parameters. ItemNrInt: {ItemNrInt} not found. `ItemNrInt` existiert nicht als Shop-Artikelnummer (Codetyp 2).
Error More than one item was identified with the given parameters. Die übergebenen Kennungen zeigen auf verschiedene Artikel.
Error The @NewEAN code {NewEAN} already exists on another scannable item. `NewEAN` wird bereits als scanbarer Code eines anderen Artikels verwendet.
Error More than one supplier item found for ItemKey:{ItemId}, SupplNr: {SupplNr}. Use @EAN to identify the exact record. Der Lieferant hat mehrere Lieferantenartikel (EANs) für den Artikel. `EAN` zur Auswahl übergeben.
Error No supplier item found with given parameters. ItemKey:{ItemKey}, SupplNr: {SupplNr}, EAN: {EAN|not provided}. Für diesen Artikel, Lieferanten und (optional) diese EAN existiert kein `AddItems`-Datensatz. Die Meldung ist NULL, wenn `ItemKey` nicht übergeben wurde.
Error Item with EANUPC: {NewEAN} and Supplier number "{SupplNr}" already exists. Ein anderer Lieferantenartikel desselben Artikels hat `NewEAN` bereits für diesen Lieferanten.
Error {ERROR_MESSAGE()} Während der Aktualisierung trat ein SQL-Fehler auf. 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:pixiUpdateItemSupplier>
      <!-- <ItemKey>12345</ItemKey> -->
      <!-- <ItemNrInt>ART-1001</ItemNrInt> -->
      <!-- <EAN>4006381333931</EAN> -->
      <!-- <NewEAN>4006381333948</NewEAN> -->
      <SupplNr>L001</SupplNr>
      <!-- <SupplPrice>12.50</SupplPrice> -->
      <!-- <ItemNrSuppl>LF-4711</ItemNrSuppl> -->
      <!-- <PreferredSupplier>1</PreferredSupplier> -->
      <!-- <MinOrderQty>10</MinOrderQty> -->
      <!-- <OnlyPU>0</OnlyPU> -->
      <!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
      <!-- <IsActive>1</IsActive> -->
    </ns1:pixiUpdateItemSupplier>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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