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.
- Das XML in
Itemswird ausgewertet: Jeder Knoten/ITEMS/ITEMliefertItemNrSupplundQuantity. - Der Lagerplatz wird in
InvBinüberLocation(BinLocID) undBinNamegesucht. Wird kein Lagerplatz gefunden, wird eine einzelne Zeile mitCode=500undMessage=Bin Not Foundgeliefert; sonst geschieht nichts. - Die zu ändernden Artikel werden ermittelt:
- Artikel aus dem XML, deren
ItemNrSupplzu einemAddItems-Eintrag des LieferantenSupplNrpasst, 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
Enabledwird hier nicht geprüft.
- Artikel aus dem XML, deren
- Für jeden dieser Artikel wird
pixiSetStockmit derEANUPCdes Artikels, demBinName, der Zielmenge undUsernameausgeführt. - 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ürSupplNr.
Hinweise
- Der Bestand wird in der Praxis nicht geändert. Laut einem Kommentar im Code schlägt der Aufruf von
pixiSetStockimmer fehl, weil keinSMORefübergeben wird.pixiSetStocklöstError Message: API pipiSetStockMultiple: SMO is not assigned to API!aus, sobaldSMORefNULL ist, schreibt einen Eintrag inLogTableund 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 alsSqlMessage-Einträge neben der abschließenden Ergebnismenge. - Ist die Einstellung
API_Stock_Movementsdeaktiviert, liefertpixiSetStockfü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 derSqlRowSet. pixiSetStockwird ohne Lager aufgerufen. Der Lagerplatz wird dort nur überBinNamegesucht; existiert derselbe Name in mehreren Lagern, kann ein anderer Lagerplatz als der hier geprüfte verwendet werden.- Artikel werden über
EANUPCanpixiSetStockübergeben. Artikel ohne EAN oder mit doppelter EAN lassen sich nicht zuverlässig ansprechen. - Fehlt in einem
ITEMdes XML dieItemNrSuppl, liefert dieNOT IN-Prüfung keine Zeilen, und es werden keine Artikel vom Lagerplatz entfernt. - Artikel mit fehlender oder nicht numerischer
Quantitywerden 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 Beispiel:
|
SupplNr
|
varchar(4) string |
MGS |
Lieferantennummer ( Beispiel: |
Location
|
varchar(3) string |
001 |
Lager-ID ( Beispiel: |
BinName
Pflicht
|
varchar(50) string |
– |
Name des Lagerplatzes ( Beispiel: |
Username
|
varchar(50) string |
pipiSetSupplierStockMultiple |
Benutzername, der für die Lagerbewegungen an Beispiel: |
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 ( |
Quantity
Kann leer sein |
int |
Gesamtmenge des Artikels auf dem Lagerplatz ( |
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 |
Message
|
varchar(13) string |
Immer |
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 |
StatusMessage
|
varchar(73) string |
Fehlertext zur deaktivierten Einstellung. |
Beispielantwort
<SqlRowSet1>
<row>
<ItemNrSuppl>mad566</ItemNrSuppl>
<Quantity>50</Quantity>
</row>
<row>
<ItemNrSuppl>mad602</ItemNrSuppl>
<Quantity>30</Quantity>
</row>
</SqlRowSet1>
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>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'Items' => '<ITEMS><ITEM><ItemNrSuppl>mad566</ItemNrSuppl><Quantity>50</Quantity></ITEM><ITEM><ItemNrSuppl>mad602</ItemNrSuppl><Quantity>30</Quantity></ITEM></ITEMS>',
// 'SupplNr' => 'MGS',
// 'Location' => '001',
'BinName' => 'A-10-A-1',
// 'Username' => 'shopsync',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetSupplierStockMultiple', $soapArguments);
Verwandte Calls
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetSupplierStockMultiple