pixiGetItemStock
Liefert verfügbaren und physischen Bestand, Lieferantenpreis und offene Auftragspositionsmengen für einen oder mehrere Artikel, optional je Lager.
Sucht Artikel und liefert deren Bestandswerte.
Artikelidentifikation
- Leere Zeichenketten werden als
NULLbehandelt;ItemKey = 0gilt alsNULL. - Mindestens einer der Parameter
ItemKey,EAN,ItemNrSuppl,ItemNrIntoderItemXMList erforderlich, sonst wird eine Fehlerzeile geliefert. - Die Einzelparameter werden mit ODER gegen
pixi.ItemCodeverknüpft:EANentspricht Codetyp 1 (Barcode),ItemNrIntCodetyp 2 (Shop-Artikelnr.),ItemNrSupplCodetyp 4 (Lieferanten-Artikelnr.),ItemKeyder Artikel-ID einer beliebigen Codezeile. ItemXMLergänzt weitere Artikel: Jedes Element/ITEMS/ITEMkannITEMKEY(direkt übernommen),ITEMNRINT,ITEMNRSUPPLoderEANenthalten (Abgleich mititems.ItemNrInt,items.ItemNrSupplunditems.EANUPC).- Wird kein Kandidat gefunden, wird eine Fehlerzeile geliefert.
Bestandsberechnung (je Artikel aus items)
AvailableStock=ItemQtyIBIExportStock_locationsabzüglich – bei Nicht-Bundle-Artikeln und wenn die EinstellungStockExportUsePhysicalStock0ist –ItemQtyOpenOrderLines, wenn Reservierungen (ReservePrepaymentOrders) deaktiviert sind oderExportAvailableStock_WhenReservationsAreEnabled= 1 ist,- sonst
ItemQtyOpenReservations, wenn Reservierungen aktiv sind, - andernfalls wird nichts abgezogen.
PhysicalStock= Bestand außerhalb von Sonderlagern,PhysicalStockAllLocations= inklusive Sonderlager.OnlyEnabledItems = 1beschränkt die Ausgabe auf aktive Artikel.
Ausschluss von Lagerplatzgruppen
Ist ExcludeBinGroups (kommagetrennte Liste) angegeben, werden die Mengen auf Lagerplätzen (InvBin/InvBinItemLog) dieser Gruppen je Artikel summiert und von AvailableStock, PhysicalStock und PhysicalStockAllLocations abgezogen. Für Bundles mit solchen Komponenten wird zusätzlich eine abgeleitete Menge (Minimum über die Komponenten aus ausgeschlossener Menge geteilt durch Komponentenmenge, aufgerundet) abgezogen.
Aufschlüsselung nach Lager
Mit LocationStock = 1 werden zwei zusätzliche Textspalten geliefert:
Locations:All:<Menge>; <LocID>:<Menge>; …mit Gesamtmenge und Menge je Lager.OpenOrderlineSumLocations:<LocID>:<Menge>; …; All:<Menge>;mit offenen Kundenauftragsmengen (ANG/FUT sowie aktuelle HAL-Aufträge) je Lager und gesamt, berechnet durchpixi.ItemInfoStockPerLocation.
Je gefundenem Artikel wird eine Zeile geliefert; eine explizite Sortierung erfolgt nicht.
Hinweise
- Nur lesend; alle Tabellen werden
WITH (NOLOCK)gelesen, Werte können daher nicht festgeschriebene Daten enthalten. - Bei Fehlern liefert die Prozedur zusätzlich zur Statuszeile den Rückgabewert
1. ItemKeyals Einzelparameter trifft nur, wenn der Artikel mindestens eine Zeile inpixi.ItemCodebesitzt.ITEMKEY-Werte ausItemXMLwerden nicht geprüft; unbekannte Schlüssel gelten als gefunden, erzeugen aber keine Ausgabezeile, sodass das Ergebnis ohne Fehlerzeile leer sein kann.- Ein Artikel, der sowohl über Einzelparameter als auch über
ItemXMLgefunden wird, kann doppelt im Ergebnis erscheinen. EANinItemXMLwird alsvarchar(13)gelesen; längere Werte werden abgeschnitten.- Wird
OnlyEnabledItemsexplizit als NULL übergeben, werden keine Zeilen geliefert. - Der Ausschluss von Lagerplatzgruppen wirkt nur auf Artikel mit Shop-Artikelnr. (Codetyp 2), deren
ItemNrIntdiesem Code entspricht. - Die Reihenfolge der Einträge in
LocationsundOpenOrderlineSumLocationsist nicht garantiert. pixi.ItemInfoStockPerLocationwird auch ausgeführt, wennLocationStocknicht 1 ist; bei vielen Artikeln werden dabei Auftragspositionen und Lieferantenbestellungen aggregiert, was aufwendig sein kann. Das Ergebnis hängt von den EinstellungenHalOrdersActiveDaysundInclude_FUT_StatusInOpenOrdersForSupplierOrderingab.- Ungültiges XML in
ItemXMLführt zu einem SQL-Fehler aussp_xml_preparedocument.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interner Artikelschlüssel. Beispiel: |
EAN
|
varchar(50) string |
NULL |
Barcode des Artikels (Codetyp 1). Beispiel: |
ItemNrSuppl
|
varchar(50) string |
NULL |
Lieferanten-Artikelnummer (Codetyp 4). Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Shop-Artikelnummer (Codetyp 2). Beispiel: |
LocationStock
|
bit boolean |
NULL |
Bei 1 enthält das Ergebnis zusätzlich die Spalten Erlaubte Werte
Beispiel: |
OnlyEnabledItems
|
bit boolean |
0 |
Beschränkt das Ergebnis auf aktive Artikel. Erlaubte Werte
Beispiel: |
ExcludeBinGroups
|
varchar(max) string |
NULL |
Kommagetrennte Liste von Lagerplatzgruppen, deren Mengen von den Bestandswerten abgezogen werden. Beispiel: |
ItemXML
|
varchar(max) xml |
NULL |
XML-Liste weiterer Artikel. Jedes Element Beispiel:
|
Antwort
Result-Set 1 · Wenn kein identifizierender Parameter angegeben oder kein Artikelkandidat gefunden wird
Fehler-Statuszeile; die Verarbeitung endet.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
|
varchar(52) string |
Fehlertext. |
Result-Set 2 · Bei Erfolg mit LocationStock = 1
Eine Zeile je gefundenem Artikel inklusive Zeichenketten je Lager.
| Spalte | Typ | Beschreibung |
|---|---|---|
AvailableStock
Kann leer sein |
int |
Verfügbarer Bestand für den Export, abhängig von Einstellungen um offene Auftragspositionen oder Reservierungen sowie um ausgeschlossene Lagerplatzgruppen reduziert. |
PhysicalStock
Kann leer sein |
int |
Physischer Bestand ohne Sonderlager ( |
PhysicalStockAllLocations
Kann leer sein |
int |
Physischer Bestand inklusive Sonderlager. |
SupplPrice
Kann leer sein |
money decimal |
Lieferanten-Einkaufspreis des Artikels. |
ItemKey
|
int |
Interner Artikelschlüssel. |
EANUPC
Kann leer sein |
varchar(50) string |
EAN/UPC des Artikels. |
ItemNrSuppl
Kann leer sein |
varchar(50) string |
Lieferanten-Artikelnummer. |
ItemNrInt
Kann leer sein |
varchar(50) string |
Shop-Artikelnummer. |
Locations
Kann leer sein |
varchar(4000) string |
Mengen als |
OpenOrderlineSum
Kann leer sein |
int |
Menge in offenen Auftragspositionen ( |
OpenOrderlineSumLocations
Kann leer sein |
varchar(max) string |
Offene Kundenauftragsmengen (ANG/FUT und aktuelle HAL) als |
Result-Set 3 · Bei Erfolg mit LocationStock ungleich 1 (0 oder NULL)
Eine Zeile je gefundenem Artikel ohne Spalten je Lager.
| Spalte | Typ | Beschreibung |
|---|---|---|
AvailableStock
Kann leer sein |
int |
Verfügbarer Bestand für den Export (siehe oben). |
PhysicalStock
Kann leer sein |
int |
Physischer Bestand ohne Sonderlager. |
PhysicalStockAllLocations
Kann leer sein |
int |
Physischer Bestand inklusive Sonderlager. |
SupplPrice
Kann leer sein |
money decimal |
Lieferanten-Einkaufspreis. |
ItemKey
|
int |
Interner Artikelschlüssel. |
EANUPC
Kann leer sein |
varchar(50) string |
EAN/UPC des Artikels. |
ItemNrSuppl
Kann leer sein |
varchar(50) string |
Lieferanten-Artikelnummer. |
ItemNrInt
Kann leer sein |
varchar(50) string |
Shop-Artikelnummer. |
OpenOrderlineSum
Kann leer sein |
int |
Menge in offenen Auftragspositionen. |
Beispielantwort
<SqlRowSet1>
<row>
<AvailableStock>18</AvailableStock>
<PhysicalStock>25</PhysicalStock>
<PhysicalStockAllLocations>27</PhysicalStockAllLocations>
<SupplPrice>12.5000</SupplPrice>
<ItemKey>1234</ItemKey>
<EANUPC>4006381333931</EANUPC>
<ItemNrSuppl>SUP-55012</ItemNrSuppl>
<ItemNrInt>A-1001</ItemNrInt>
<Locations>All:27; 001:20; 002:7; </Locations>
<OpenOrderlineSum>7</OpenOrderlineSum>
<OpenOrderlineSumLocations>001:5; 002:2; All:7; </OpenOrderlineSumLocations>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Specify at least one parameter to identify the item. | Keiner der Parameter `ItemKey`, `EAN`, `ItemNrSuppl`, `ItemNrInt`, `ItemXML` wurde angegeben (oder alle leer bzw. 0). Mindestens ein Identifikationsmerkmal übergeben. |
| Error | No items found with given parameters. | Kein Artikelcode bzw. XML-Eintrag passte zu einem Artikel. Identifikationsmerkmale und Codetypen prüfen. |
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:pixiGetItemStock>
<!-- <ItemKey>1234</ItemKey> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <ItemNrSuppl>SUP-55012</ItemNrSuppl> -->
<!-- <ItemNrInt>A-1001</ItemNrInt> -->
<!-- <LocationStock>1</LocationStock> -->
<!-- <OnlyEnabledItems>0</OnlyEnabledItems> -->
<!-- <ExcludeBinGroups>RETURNS,DAMAGED</ExcludeBinGroups> -->
<!-- <ItemXML><![CDATA[<ITEMS><ITEM><ITEMKEY>1234</ITEMKEY><ITEMNRINT>A-1001</ITEMNRINT><ITEMNRSUPPL>SUP-55012</ITEMNRSUPPL><EAN>4006381333931</EAN></ITEM><ITEM><ITEMKEY>1240</ITEMKEY><ITEMNRINT>A-1002</ITEMNRINT><ITEMNRSUPPL>SUP-55013</ITEMNRSUPPL><EAN>4006381333948</EAN></ITEM></ITEMS>]]></ItemXML> -->
</ns1:pixiGetItemStock>
</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:pixiGetItemStock>
<!-- <ItemKey>1234</ItemKey> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <ItemNrSuppl>SUP-55012</ItemNrSuppl> -->
<!-- <ItemNrInt>A-1001</ItemNrInt> -->
<!-- <LocationStock>1</LocationStock> -->
<!-- <OnlyEnabledItems>0</OnlyEnabledItems> -->
<!-- <ExcludeBinGroups>RETURNS,DAMAGED</ExcludeBinGroups> -->
<!-- <ItemXML><![CDATA[<ITEMS><ITEM><ITEMKEY>1234</ITEMKEY><ITEMNRINT>A-1001</ITEMNRINT><ITEMNRSUPPL>SUP-55012</ITEMNRSUPPL><EAN>4006381333931</EAN></ITEM><ITEM><ITEMKEY>1240</ITEMKEY><ITEMNRINT>A-1002</ITEMNRINT><ITEMNRSUPPL>SUP-55013</ITEMNRSUPPL><EAN>4006381333948</EAN></ITEM></ITEMS>]]></ItemXML> -->
</ns1:pixiGetItemStock>
</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 = [
// 'ItemKey' => '1234',
// 'EAN' => '4006381333931',
// 'ItemNrSuppl' => 'SUP-55012',
// 'ItemNrInt' => 'A-1001',
// 'LocationStock' => '1',
// 'OnlyEnabledItems' => '0',
// 'ExcludeBinGroups' => 'RETURNS,DAMAGED',
// 'ItemXML' => '<ITEMS><ITEM><ITEMKEY>1234</ITEMKEY><ITEMNRINT>A-1001</ITEMNRINT><ITEMNRSUPPL>SUP-55012</ITEMNRSUPPL><EAN>4006381333931</EAN></ITEM><ITEM><ITEMKEY>1240</ITEMKEY><ITEMNRINT>A-1002</ITEMNRINT><ITEMNRSUPPL>SUP-55013</ITEMNRSUPPL><EAN>4006381333948</EAN></ITEM></ITEMS>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetItemStock', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetItemStock