Postman-Collection
Stock Schreiben

pixiSetSupplierStockMultiple

Gleicht den Bestand der Artikel eines Lieferanten auf einem Lagerplatz mit einer Liste aus Lieferanten-Artikelnummern und Mengen ab und liefert den resultierenden Bestand.

Übernimmt eine Liste aus Lieferanten-Artikelnummern mit Zielmengen und versucht, den Bestand des angegebenen Lagerplatzes daran anzugleichen.

  1. Das XML in Items wird ausgewertet: Jeder Knoten /ITEMS/ITEM liefert ItemNrSuppl und Quantity.
  2. Der Lagerplatz wird in InvBin über Location (BinLocID) und BinName gesucht. Wird kein Lagerplatz gefunden, wird eine einzelne Zeile mit Code = 500 und Message = Bin Not Found geliefert; sonst geschieht nichts.
  3. Die zu ändernden Artikel werden ermittelt:
    • Artikel aus dem XML, deren ItemNrSuppl zu einem AddItems-Eintrag des Lieferanten SupplNr passt, deren Artikel aktiv ist (Items.Enabled = 1) und deren Zielmenge von der aktuellen Gesamtmenge auf dem Lagerplatz abweicht (fehlender Bestand zählt als 0).
    • Artikel desselben Lieferanten, die aktuell Bestand auf dem Lagerplatz haben, aber nicht im XML enthalten sind. Ihre Zielmenge ist 0, sie sollen also vom Lagerplatz entfernt werden. Das Flag Enabled wird hier nicht geprüft.
  4. Für jeden dieser Artikel wird pixiSetStock mit der EANUPC des Artikels, dem BinName, der Zielmenge und Username ausgeführt.
  5. Abschließend wird je Artikel eine Zeile mit Lieferanten-Artikelnummer und der nun auf dem Lagerplatz vorhandenen Gesamtmenge geliefert, beschränkt auf Artikel mit AddItems-Eintrag für SupplNr.

Hinweise

  • Der Bestand wird in der Praxis nicht geändert. Laut einem Kommentar im Code schlägt der Aufruf von pixiSetStock immer fehl, weil kein SMORef übergeben wird. pixiSetStock löst Error Message: API pipiSetStockMultiple: SMO is not assigned to API! aus, sobald SMORef NULL ist, schreibt einen Eintrag in LogTable und löst den Fehler erneut aus. Die äußere Prozedur hat keine Fehlerbehandlung. Sie fährt mit dem nächsten Artikel fort, und die Fehlermeldungen erreichen den Aufrufer als SqlMessage-Einträge neben der abschließenden Ergebnismenge.
  • Ist die Einstellung API_Stock_Movements deaktiviert, liefert pixiSetStock für jeden zu ändernden Artikel eine zusätzliche Statuszeile (Status/StatusMessage), statt einen Fehler auszulösen. Diese Zeilen kommen als zusätzliche Ergebnismengen vor der abschließenden Bestandsliste und verschieben die Nummerierung der SqlRowSet.
  • pixiSetStock wird ohne Lager aufgerufen. Der Lagerplatz wird dort nur über BinName gesucht; existiert derselbe Name in mehreren Lagern, kann ein anderer Lagerplatz als der hier geprüfte verwendet werden.
  • Artikel werden über EANUPC an pixiSetStock übergeben. Artikel ohne EAN oder mit doppelter EAN lassen sich nicht zuverlässig ansprechen.
  • Fehlt in einem ITEM des XML die ItemNrSuppl, liefert die NOT IN-Prüfung keine Zeilen, und es werden keine Artikel vom Lagerplatz entfernt.
  • Artikel mit fehlender oder nicht numerischer Quantity werden bei der Aktualisierung ignoriert.
  • Alle Lesezugriffe verwenden NOLOCK. Um die Schleife liegt keine Transaktion.

Parameter

Parameter Typ Standardwert Beschreibung
Items
Pflicht
xml –

Liste der Lieferanten-Artikelnummern mit Zielmengen für den Lagerplatz. Wurzel ITEMS, je Artikel ein ITEM mit ItemNrSuppl und Quantity (Ganzzahl).

Beispiel:

<ITEMS>
  <ITEM>
    <ItemNrSuppl>mad566</ItemNrSuppl>
    <Quantity>50</Quantity>
  </ITEM>
  <ITEM>
    <ItemNrSuppl>mad602</ItemNrSuppl>
    <Quantity>30</Quantity>
  </ITEM>
</ITEMS>
SupplNr
varchar(4)
string
MGS

Lieferantennummer (AddItems.SupplNr), über die die Lieferanten-Artikelnummern aufgelöst und die Artikel auf dem Lagerplatz eingeschränkt werden.

Beispiel: MGS

Location
varchar(3)
string
001

Lager-ID (InvBin.BinLocID), über die der Lagerplatz gesucht wird. Sie wird nicht an pixiSetStock weitergegeben.

Beispiel: 001

BinName
Pflicht
varchar(50)
string
–

Name des Lagerplatzes (InvBin.BinName), dessen Bestand abgeglichen wird.

Beispiel: A-10-A-1

Username
varchar(50)
string
pipiSetSupplierStockMultiple

Benutzername, der für die Lagerbewegungen an pixiSetStock übergeben wird.

Beispiel: shopsync

Antwort

Result-Set 1 · Wenn der Lagerplatz gefunden wurde (nach allen Aktualisierungsversuchen).

Aktueller Bestand auf dem Lagerplatz, eine Zeile je Artikel mit AddItems-Eintrag für SupplNr.

Spalte Typ Beschreibung
ItemNrSuppl
Kann leer sein
string

Lieferanten-Artikelnummer des Artikels (MAX(AddItems.ItemNrSuppl) je Artikel).Uploaded

Quantity
Kann leer sein
int

Gesamtmenge des Artikels auf dem Lagerplatz (SUM(InvBinItem.BinItemQTY)).

Result-Set 2 · Wenn im Lager Location kein Lagerplatz mit BinName existiert.

Fehlerzeile. Es wird kein Bestand verarbeitet.

Spalte Typ Beschreibung
Code varchar(3)
string

Immer 500.

Message varchar(13)
string

Immer Bin Not Found.

Result-Set 3 · Einmal je zu änderndem Artikel vor der Bestandsliste, wenn die Einstellung API_Stock_Movements deaktiviert ist (von pixiSetStock geliefert).

Statuszeile des verschachtelten Aufrufs von pixiSetStock, die meldet, dass API-Lagerbewegungen deaktiviert sind.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer ERROR.

StatusMessage varchar(73)
string

Fehlertext zur deaktivierten Einstellung.

Fehlermeldungen

Status Meldung Ursache
500 Bin Not Found Im Lager `Location` existiert kein Lagerplatz mit dem angegebenen `BinName`. Lagerplatzname und Lager-ID prüfen.
ERROR Setting "API Calls Stock Movements" (API_Stock_Movements) is not enabled. Wird vom verschachtelten Aufruf von `pixiSetStock` je zu änderndem Artikel geliefert, wenn die Einstellung `API_Stock_Movements` deaktiviert ist. Einstellung in Pixi aktivieren.
RAISERROR Error Message: API pipiSetStockMultiple: SMO is not assigned to API! Wird vom verschachtelten Aufruf von `pixiSetStock` je zu änderndem Artikel ausgelöst, wenn die Einstellung aktiv ist, weil diese Prozedur nie einen `SMORef` übergibt. Der Fehler wird in `LogTable` protokolliert. Über diesen Aufruf lässt er sich nicht vermeiden; stattdessen `pixiSetStock` direkt mit gültigem `SMORef` verwenden.

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:pixiSetSupplierStockMultiple>
      <Items><![CDATA[<ITEMS><ITEM><ItemNrSuppl>mad566</ItemNrSuppl><Quantity>50</Quantity></ITEM><ITEM><ItemNrSuppl>mad602</ItemNrSuppl><Quantity>30</Quantity></ITEM></ITEMS>]]></Items>
      <!-- <SupplNr>MGS</SupplNr> -->
      <!-- <Location>001</Location> -->
      <BinName>A-10-A-1</BinName>
      <!-- <Username>shopsync</Username> -->
    </ns1:pixiSetSupplierStockMultiple>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

InvBin · Lesen InvBinItem · Lesen AddItems · Lesen Items · Lesen LogTable · Schreiben
SQL-Objekt:
dbo.pipiSetSupplierStockMultiple
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben