pixiReport_ItemsOnStockWithBatchManagement
Liefert den Bestand je Artikel, Lagerplatz, Chargennummer und MHD für Artikel mit Chargenverwaltung auf Basis des pixi*-Reports "Items on stock with BN/BBD".
Stellt den pixi*-Report Items on stock with BN/BBD (Chargennummer / Mindesthaltbarkeitsdatum) als API-Call bereit.
- Normalisierung: Leere Zeichenketten werden bei allen Textfiltern als
NULLbehandelt.ItemTag=0gilt alsNULL. FehlenBestBeforeDateFromoderBestBeforeDateTo(oder sind sie1900-01-01), werden Beginn bzw. Ende des aktuellen Tages verwendet. - Vorprüfungen: Jeder angegebene Filter wird geprüft. Der Aufruf endet mit einer
Error-Zeile, wenn:LocIdnicht inLocationexistiert,ItemTagnicht-6oder-7ist,Eankein Barcode (Codetyp 1) inpixi.ItemCodeist,ItemNrIntkeine Shop-Artikelnummer (Codetyp 2) inpixi.ItemCodeist,BinGroupnicht inInvBinexistiert,SupplierNrnicht inSuppliersexistiert,Categoryweder zuTontrArtnoch zuTontrTextinTontrArtenpasst,BatchNumbernicht inInvBinItemexistiert.
- Report: Die interne Report-Prozedur
Report_ItemsOnStockWithBatchManagementwird ausgeführt:- Berücksichtigt werden nur Artikel mit dem Tag
-6(Chargennummer) oder-7(MHD). - Der Lagerplatzbestand aus
InvBinItemwird je Artikel, Lagerplatz, Charge und MHD summiert (QtyInBin). - Der MHD-Filter wird immer angewendet. Enthalten sind Zeilen, deren
BestBeforeDatezwischen den beiden Daten liegt, sowie Zeilen ohne MHD. - Optionale Filter:
BatchNumber: exakte Chargennummer.LocId: Lager des Lagerplatzes.Ean: Barcode des Artikels.ItemNrInt: Shop-Artikelnummer.ItemTag: Der Artikel muss diesen Tag tragen.SupplierNr: Der Artikel ist diesem Lieferanten inAddItemszugeordnet.BinGroup: Lagerplatzgruppe.Category:ConfigTypedes Artikels, abgeglichen über Code oder Text.
- Berücksichtigt werden nur Artikel mit dem Tag
- Die Zeilen werden nach
ItemNameund dannBinNamesortiert zurückgegeben.
Hinweise
- Standard-Datumsbereich ist nur der heutige Tag. Ohne
BestBeforeDateFrom/BestBeforeDateTowird nur Bestand mit MHD heute oder ohne MHD geliefert. Für alle Chargen einen weiten Zeitraum übergeben. - Die Daten werden an den internen Report als
DATEübergeben, die Uhrzeit entfällt. EinBestBeforeDateam Endtag mit Uhrzeit nach Mitternacht kann dadurch herausfallen. - Die Vorprüfungen prüfen nur, ob irgendwo ein passender Datensatz existiert. So akzeptiert etwa die
Ean-Prüfung jeden vorhandenen Barcode, nicht nur Barcodes chargenverwalteter Artikel. Ohne Filterwert verlangen sie trotzdem mindestens eine Zeile in der jeweiligen Tabelle. Eine leere Datenbank oder leere Tabelle führt daher zum entsprechenden Fehler mit leerem Wert. - Der interne Report baut seine
WHERE-Klausel als dynamisches SQL auf. SQL-Fehler daraus werden abgefangen und alsError-Zeile mit dem Originaltext zurückgegeben. - Alle Lesezugriffe verwenden
NOLOCK, daher können nicht festgeschriebene Daten erscheinen. - Der Report erzeugt intern zusätzliche Parameter-Spalten (
ParamBatchNumberusw.). Diese werden nicht an den Aufrufer zurückgegeben.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
BatchNumber
|
varchar(50) string |
NULL |
Filter auf exakte Chargennummer. Muss in Beispiel: |
BestBeforeDateFrom
|
datetime dateTime |
NULL |
Beginn des MHD-Zeitraums. Standard ist der Beginn des aktuellen Tages; nur der Datumsteil wird verwendet. Beispiel: |
BestBeforeDateTo
|
datetime dateTime |
NULL |
Ende des MHD-Zeitraums. Standard ist das Ende des aktuellen Tages; nur der Datumsteil wird verwendet. Beispiel: |
LocId
|
varchar(3) string |
NULL |
Lager-ID. Nur Lagerplätze dieses Lagers werden berücksichtigt. Muss in Beispiel: |
Ean
|
varchar(13) string |
NULL |
Barcode (Artikelcode-Typ 1) des Artikels. Muss in Beispiel: |
ItemTag
|
int | NULL |
Beschränkt auf Artikel mit diesem Tag. Erlaubte Werte
Beispiel: |
SupplierNr
|
varchar(4) string |
NULL |
Lieferantennummer. Nur diesem Lieferanten zugeordnete Artikel ( Beispiel: |
BinGroup
|
varchar(20) string |
NULL |
Lagerplatzgruppe. Nur Lagerplätze dieser Gruppe werden berücksichtigt. Muss in Beispiel: |
Category
|
varchar(50) string |
NULL |
Artikelkategorie, als Code ( Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Shop-Artikelnummer (Artikelcode-Typ 2). Muss in Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg (alle Vorprüfungen bestanden, kein Fehler im Report)
Bestand je Artikel, Lagerplatz, Charge und MHD, sortiert nach Artikelname und Lagerplatzname.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Artikelschlüssel |
ItemNrSuppl
Kann leer sein |
varchar(50) string |
Lieferantenartikelnummer |
ItemNrInt
Kann leer sein |
varchar(50) string |
Shop-Artikelnummer |
EANUPC
Kann leer sein |
varchar(13) string |
EAN/UPC aus dem Artikelstamm |
ItemName
Kann leer sein |
varchar(120) string |
Artikelbezeichnung |
BatchNumber
Kann leer sein |
varchar(50) string |
Chargennummer |
BestBeforeDate
Kann leer sein |
datetime dateTime |
Mindesthaltbarkeitsdatum |
BinName
|
varchar(50) string |
Lagerplatzname |
BinGroup
|
varchar(20) string |
Lagerplatzgruppe |
QtyInBin
Kann leer sein |
int |
Summierte Menge auf dem Lagerplatz für diese Charge/dieses MHD |
Result-Set 2 · Wenn eine Vorprüfung fehlschlägt oder der Report einen Fehler auslöst
Einzelne Statuszeile mit Fehlerbeschreibung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
|
varchar string |
Fehlermeldung |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>4711</ItemKey>
<ItemNrSuppl>SUP-998</ItemNrSuppl>
<ItemNrInt>100234</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
<ItemName>Bio Honig 500g</ItemName>
<BatchNumber>L2024-0815</BatchNumber>
<BestBeforeDate>2025-06-30T00:00:00</BestBeforeDate>
<BinName>A-01-03</BinName>
<BinGroup>FOOD</BinGroup>
<QtyInBin>24</QtyInBin>
</row>
<row>
<ItemKey>4711</ItemKey>
<ItemNrSuppl>SUP-998</ItemNrSuppl>
<ItemNrInt>100234</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
<ItemName>Bio Honig 500g</ItemName>
<BatchNumber>L2024-0901</BatchNumber>
<BestBeforeDate>2025-09-15T00:00:00</BestBeforeDate>
<BinName>A-01-04</BinName>
<BinGroup>FOOD</BinGroup>
<QtyInBin>12</QtyInBin>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Location "{LocId}" does not exist. | `LocId` ist in `Location` nicht vorhanden. Eine existierende Lager-ID übergeben. |
| Error | Only item tag with ID -6 and -7 are allowed. | `ItemTag` hat einen anderen Wert als `-6`, `-7`, `0` oder leer. |
| Error | Item with EAN: "{Ean}" does not exist. | Kein Barcode (Codetyp 1) mit dem Wert `Ean` in `pixi.ItemCode` vorhanden. |
| Error | Item with Shop item number: "{ItemNrInt}" does not exist. | Keine Shop-Artikelnummer (Codetyp 2) mit dem Wert `ItemNrInt` in `pixi.ItemCode` vorhanden. |
| Error | Bin group with number: "{BinGroup}" does not exist. | Kein Lagerplatz mit dieser `BinGroup` in `InvBin` vorhanden. |
| Error | Supplier with supplier number: "{SupplierNr}" does not exist. | `SupplierNr` ist in `Suppliers` nicht vorhanden. |
| Error | Category with ID: "{Category}" does not exist. | `Category` passt weder zu `TontrArt` noch zu `TontrText` in `TontrArten`. |
| Error | Batch number: "{BatchNumber}" does not exist. | Keine Lagerplatzbestandszeile mit dieser Chargennummer in `InvBinItem` vorhanden. |
| Error | Unexpected error while getting the report values. ({ERROR_MESSAGE}) | Beim Ausführen des internen Reports (z. B. im dynamischen SQL) trat ein SQL-Fehler auf. Der Originalfehlertext ist enthalten. |
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:pixiReport_ItemsOnStockWithBatchManagement>
<!-- <BatchNumber>L2024-0815</BatchNumber> -->
<!-- <BestBeforeDateFrom>2025-01-01T00:00:00</BestBeforeDateFrom> -->
<!-- <BestBeforeDateTo>2025-12-31T23:59:59</BestBeforeDateTo> -->
<!-- <LocId>001</LocId> -->
<!-- <Ean>4006381333931</Ean> -->
<!-- <ItemTag>-6</ItemTag> -->
<!-- <SupplierNr>0012</SupplierNr> -->
<!-- <BinGroup>FOOD</BinGroup> -->
<!-- <Category>Lebensmittel</Category> -->
<!-- <ItemNrInt>100234</ItemNrInt> -->
</ns1:pixiReport_ItemsOnStockWithBatchManagement>
</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:pixiReport_ItemsOnStockWithBatchManagement>
<!-- <BatchNumber>L2024-0815</BatchNumber> -->
<!-- <BestBeforeDateFrom>2025-01-01T00:00:00</BestBeforeDateFrom> -->
<!-- <BestBeforeDateTo>2025-12-31T23:59:59</BestBeforeDateTo> -->
<!-- <LocId>001</LocId> -->
<!-- <Ean>4006381333931</Ean> -->
<!-- <ItemTag>-6</ItemTag> -->
<!-- <SupplierNr>0012</SupplierNr> -->
<!-- <BinGroup>FOOD</BinGroup> -->
<!-- <Category>Lebensmittel</Category> -->
<!-- <ItemNrInt>100234</ItemNrInt> -->
</ns1:pixiReport_ItemsOnStockWithBatchManagement>
</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 = [
// 'BatchNumber' => 'L2024-0815',
// 'BestBeforeDateFrom' => '2025-01-01T00:00:00',
// 'BestBeforeDateTo' => '2025-12-31T23:59:59',
// 'LocId' => '001',
// 'Ean' => '4006381333931',
// 'ItemTag' => '-6',
// 'SupplierNr' => '0012',
// 'BinGroup' => 'FOOD',
// 'Category' => 'Lebensmittel',
// 'ItemNrInt' => '100234',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReport_ItemsOnStockWithBatchManagement', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReport_ItemsOnStockWithBatchManagement