Postman-Collection
Stock Schreiben

pixiSetStock

Setzt den Bestand eines Artikels auf einem Lagerplatz auf einen absoluten Wert, indem die Differenz als Einbuchung oder Ausbuchung gebucht wird.

Setzt die Menge eines Artikels auf einem Lagerplatz auf NewStockQty. Die Menge wird nicht direkt überschrieben. Es wird die Differenz zur aktuellen Menge berechnet und als Lagerbewegung gebucht.

Ablauf:

  1. Prüft die Einstellung API_Stock_Movements. Ist sie nicht aktiviert, wird eine Statuszeile mit Status = ERROR geliefert und die Verarbeitung beendet.
  2. Prüft, ob SMORef eine Lagerbewegungsoperation (StockMovementOperations.SMOKey) mit Application = API ist. Andernfalls wird ein Fehler ausgelöst.
  3. Sucht den Artikel über EANUPC = EanUpc.
  4. Ermittelt, ob der Artikel Chargennummern bzw. Mindesthaltbarkeitsdaten benötigt (Artikel-Tags -6 und -7). Benötigt der Artikel sie nicht, werden BatchNumber und BestBeforeDate ignoriert. Benötigt er sie, müssen sie gefüllt sein; sonst wird nichts gebucht.
  5. Sucht den Lagerplatz über BinName. Ist LocId angegeben, werden nur Lagerplätze dieses Lagers berücksichtigt; sonst wird der erste Lagerplatz mit diesem Namen in einem beliebigen Lager verwendet und dessen Lager für die Buchung übernommen.
  6. Berechnet die Differenz: NewStockQty minus Summe von BinItemQTY des Artikels auf diesem Lagerplatz (alle Zeilen, unabhängig von Charge oder MHD).
    • Differenz > 0: Einbuchung (Pixi_InvBinScanIn) der Differenz.
    • Differenz < 0: Ausbuchung (Pixi_InvBinTakeOut) der absoluten Differenz.
    • Differenz = 0: keine Buchung.
  7. Vor der Buchung muss die Kombination aus SMORef und SMTref in StockMovementMatching existieren; sonst wird ein Fehler protokolliert und ausgelöst.
    • Ist SMTref nicht angegeben, werden beide Werte ersetzt: bei Einbuchung die API-Operation PutToStock mit Bewegungstyp 0201, bei Ausbuchung die API-Operation TakeOut mit Bewegungstyp 0301.
    • Ist SMTref angegeben, werden die übergebenen Werte SMORef und SMTref verwendet.
  8. Abschließend wird der Artikel zur Bestandsneuberechnung und zum Shop-Export eingereiht (Pixi_ExportItemChangesToShop), auch wenn nichts gebucht wurde.

Die Prozedur liefert einen Rückgabewert: 0 = verarbeitet, 1 = Artikel nicht gefunden oder benötigte Charge/MHD fehlt, 2 = Lagerplatz nicht gefunden. Im Erfolgsfall wird keine Ergebnismenge geliefert.

Hinweise

  • SMORef hat den Standardwert NULL, der Aufruf scheitert ohne diesen Parameter aber immer mit SMO is not assigned to API. Es muss der Schlüssel einer API-Lagerbewegungsoperation übergeben werden.
  • Die Rückgabewerte 1 und 2 sind nur Rückgabewerte der Prozedur; es wird keine Statuszeile geliefert. Je nach Client sieht ein fehlender Artikel oder Lagerplatz daher wie ein Erfolg aus.
  • Wird SMTref weggelassen, dient das übergebene SMORef nur der Eingangsprüfung und wird anschließend durch die Operation PutToStock/TakeOut ersetzt.
  • Die Differenz wird über alle Chargen und MHDs auf dem Lagerplatz berechnet, aber mit der angegebenen BatchNumber/BestBeforeDate gebucht. Bei Artikeln mit Chargen kann das Ergebnis je Charge von der Erwartung abweichen.
  • BestBeforeDate hat den Standardwert '', den SQL Server in 1900-01-01 umwandelt. Dieser Wert gilt als leer; Artikel mit MHD-Tag benötigen ein echtes Datum.
  • Ohne LocId wird der Lagerplatz per TOP 1 ohne ORDER BY gewählt; existiert der Name in mehreren Lagern, ist die Auswahl nicht deterministisch.
  • Abfragen verwenden NOLOCK.
  • Die aufgerufenen Prozeduren Pixi_InvBinScanIn/Pixi_InvBinTakeOut lehnen Mengen über der Einstellung MaxStockOperationLimit ab und laufen in einer eigenen Transaktion; ihre Basisprozeduren liegen nicht vor. Fehler in den Basisprozeduren werden über log.InsertError protokolliert und erreichen den Aufrufer möglicherweise nicht.
  • Fehler aus den aufgerufenen Prozeduren landen im CATCH-Block dieses Aufrufs, der einen Eintrag in LogTable schreibt und einen Fehler mit dem Inhalt der internen Fehlervariablen auslöst. Bei Fehlern, die nicht von dieser Prozedur selbst stammen, ist diese Meldung leer; der ursprüngliche Fehlertext geht verloren.
  • Beim Fehler SMT is not matched entstehen zwei Einträge in LogTable (einer vor dem Auslösen, einer im CATCH-Block).
  • Jeder Aufruf, der die Eingangsprüfungen besteht, legt eine Zeile in pixi.ItemRecalculateStockQueue an, auch wenn nichts gebucht oder der Artikel nicht gefunden wurde.

Parameter

Parameter Typ Standardwert Beschreibung
EanUpc
Pflicht
varchar(13)
string
–

EAN/UPC des Artikels (Items.EANUPC).

Beispiel: 4012345678901

BinName
Pflicht
varchar(50)
string
–

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

Beispiel: A-01-02

LocId
varchar(3)
string
NULL

Lager-ID des Lagerplatzes. Bei NULL wird der erste Lagerplatz mit dem Namen in einem beliebigen Lager verwendet.

Beispiel: 001

NewStockQty
Pflicht
int –

Zielmenge des Artikels auf dem Lagerplatz.

Beispiel: 25

Username
varchar(50)
string
pipiSetStock

Benutzername, der für die Lagerbewegung gespeichert wird.

Beispiel: ShopSync

SMORef
int NULL

Schlüssel der Lagerbewegungsoperation (StockMovementOperations.SMOKey). Muss zur Anwendung API gehören; faktisch Pflicht. Wird durch PutToStock/TakeOut ersetzt, wenn SMTref fehlt.

Beispiel: 12

SMTref
int NULL

Schlüssel des Lagerbewegungstyps (StockMovementTypes.SMTKey). Muss in StockMovementMatching mit SMORef verknüpft sein. Bei NULL wird Typ 0201 (Einbuchung) bzw. 0301 (Ausbuchung) verwendet.

Beispiel: 5

BatchNumber
varchar(50)
string
–

Chargennummer. Pflicht bei Artikeln mit Chargen-Tag, sonst ignoriert.

Beispiel: CH-2024-001

BestBeforeDate
datetime
dateTime
–

Mindesthaltbarkeitsdatum. Pflicht bei Artikeln mit MHD-Tag, sonst ignoriert. Der Standardwert '' entspricht 1900-01-01 und gilt als leer.

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

Antwort

Result-Set 1 · Nur wenn die Einstellung API_Stock_Movements nicht aktiviert ist.

Statuszeile mit dem Fehler. Im Erfolgsfall liefert der Aufruf keine Ergebnismenge.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer ERROR.},{

StatusMessage varchar(72)
string

Fehlertext.

Fehlermeldungen

Status Meldung Ursache
ERROR Setting "API Calls Stock Movements" (API_Stock_Movements) is not enabled. Die Einstellung `API_Stock_Movements` ist nicht auf 1 gesetzt. Sie muss in den Pixi-Einstellungen aktiviert werden.
RAISERROR Error Message: API pipiSetStockMultiple: SMO is not assigned to API! `SMORef` fehlt oder ist keine Lagerbewegungsoperation der Anwendung `API`. Es muss der Schlüssel einer API-Operation übergeben werden.
RAISERROR API pipiSetStock Error message: SMT is not matched to SMO - please check Control Center - Stock Movements matching table! Die für die Buchung verwendete Kombination aus Operation und Bewegungstyp existiert nicht in `StockMovementMatching`. Die Zuordnung muss im Control Center gepflegt oder ein passendes `SMTref` übergeben werden.

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:pixiSetStock>
      <EanUpc>4012345678901</EanUpc>
      <BinName>A-01-02</BinName>
      <!-- <LocId>001</LocId> -->
      <NewStockQty>25</NewStockQty>
      <!-- <Username>ShopSync</Username> -->
      <!-- <SMORef>12</SMORef> -->
      <!-- <SMTref>5</SMTref> -->
      <!-- <BatchNumber>CH-2024-001</BatchNumber> -->
      <!-- <BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate> -->
    </ns1:pixiSetStock>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Settings · Lesen StockMovementOperations · Lesen StockMovementMatching · Lesen StockMovementTypes · Lesen Items · Lesen TagMatch · Lesen InvBin · Lesen InvBinItem · Lesen LogTable · Schreiben ItemRecalculateStockQueue · Schreiben
SQL-Objekt:
dbo.pipiSetStock
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben