pixiReportInventoryItemsToRefillMinStock
Liefert eine Pickliste der Artikel, die von einem Quell- an einen Ziellagerort umzulagern sind, mit Menge je Quell-Lagerplatz nach einem von drei Auffüllmodi.
Der Aufruf gibt alle Parameter unverändert an die interne Report-Prozedur Report_InventoryItemsToRefillMinStock weiter und liefert deren Ergebnis.
Schritt 1 – Kandidaten-Artikel
Ein Artikel ist nur dann ein Kandidat, wenn:
FromLocIDundToLocIDverschieden sind,- der Artikel für
FromLocIDundToLocIDje einenItemLocationSpecific-Datensatz hat, - der Artikel mindestens einem Lagerplatz (
InvBinItem/InvBin) inFromLocIDzugeordnet ist, - die berechnete Fehlmenge größer als 0 ist.
Offene Auftragsmengen werden aus den Orderlines des Artikels an einem Auftragslagerort summiert. Dieser ist ToLocID bei Type 1 und 3, sonst FromLocID. Die Status ANG, BES und BOR zählen als offene Kundenaufträge, HAL als angehaltene Aufträge. Steht die Einstellung InventoryItemsToRefill_NoHAL auf 1, bleiben angehaltene Mengen in den Berechnungen unberücksichtigt.
Der verfügbare Bestand am Quelllagerort ist der Lagerortbestand in FromLocID, abzüglich:
- des Mindestbestands von
FromLocID(nur beiMinStock= 1 undType= 2), - der offenen Kundenauftragsmenge (nur wenn der Auftragslagerort
FromLocIDist), - der angehaltenen Menge (sofern die Einstellung sie nicht ausschließt).
Die Fehlmenge am zusätzlichen Lagerort ist Mindestbestand minus Lagerortbestand in AdditionalLocID. Liegt der Bestand nicht unter dem Mindestbestand, ist sie 0.
Die Fehlmenge hängt von Type ab:
1: Bedarf = offene Kundenaufträge inToLocID+ angehaltene Menge + Mindestbestand vonToLocID(nur beiMinStock= 1). Passt der Bedarf in den verfügbaren Bestand, ist das Ziel die Fehlmenge am zusätzlichen Lagerort plus Bedarf, sonst der verfügbare Bestand. Ergebnis ist Ziel minus aktueller Bestand inToLocID, mindestens 0.2: Fehlmenge am zusätzlichen Lagerort, begrenzt auf den verfügbaren Bestand am Quelllagerort.3: Nur wenn alle folgenden Bedingungen erfüllt sind: Mindestbestand inToLocIDist 0, Bestand inAdditionalLocIDist 0, Bestand inFromLocIDist größer 0 und es gibt offene Kundenaufträge inToLocID. Ergebnis ist der kleinere Wert aus offenen Kundenaufträgen und Bestand inFromLocID.
Schritt 2 – Verteilung auf Lagerplätze
Je Kandidat werden die InvBinItem-Datensätze des Artikels auf Lagerplätzen in FromLocID nach InvBinItemKey nummeriert. Verwendet werden nur die ersten n Datensätze, wobei n die Fehlmenge ist. Die Zeilen werden je Quell-Lagerplatz gruppiert. MissingQty in der Ausgabe ist die Anzahl dieser Datensätze auf dem jeweiligen Lagerplatz. Das entspricht einer Stückzahl, wenn jeder Lagerplatz-Datensatz für ein Stück steht. Zusätzlich wird ein Lagerplatz in ToLocID als Ziel-Lagerplatz ausgegeben, falls vorhanden.
Sortierung
Bei SortBy = 1 wird nach der Sortiernummer des Ziel-Lagerplatzes sortiert, sonst nach der des Quell-Lagerplatzes. Innerhalb davon wird nach ItemName sortiert.
Hinweise
- Der Kopfkommentar der Wrapper-Prozedur beschreibt sie als Aufruf des 1SS-Reports zu Abrechnungszwecken.
Typeist im Wrapper standardmäßigNULL. BeiNULLoder einem anderen Wert als 1, 2 oder 3 ist die FehlmengeNULLund es werden keine Zeilen geliefert.Typesollte daher immer übergeben werden.- Die Fehlmenge am zusätzlichen Lagerort stammt aus einer Outer-Verknüpfung. Ist
AdditionalLocIDNULLoder hat der Artikel dort keinenItemLocationSpecific-Datensatz, ist der WertNULLstatt 0:Type2 undType3 liefern dann für den Artikel keine Zeile.Type1 liefert nur dann eine Zeile, wenn der Bedarf den verfügbaren Bestand übersteigt.
- Der Ziel-Lagerplatz wird per
TOP 1ohneORDER BYermittelt. Bei mehreren Lagerplätzen inToLocIDist der angezeigte Lagerplatz nicht deterministisch. - Der Wert der Einstellung
InventoryItemsToRefill_NoHALwird zur Laufzeit überfPIXI_GetSettinggelesen; diese Funktion liegt nicht vor. - Alle Lesezugriffe erfolgen mit
NOLOCK, daher können nicht festgeschriebene Daten enthalten sein. - Der Aufruf liest nur Daten. Intern wird eine temporäre Tabelle verwendet.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
FromLocID
Pflicht
|
varchar(3) string |
– |
Quelllagerort, aus dem entnommen wird. Der Artikel muss hier Lagerplätze und einen Beispiel: |
MinStock
|
bit boolean |
1 |
Steuert, ob der Mindestbestand berücksichtigt wird. Bei Erlaubte Werte
Beispiel: |
ToLocID
Pflicht
|
varchar(3) string |
– |
Ziellagerort, der aufgefüllt werden soll. Muss sich von Beispiel: |
AdditionalLocID
|
varchar(3) string |
NULL |
Zusätzlicher Lagerort, dessen Unterschreitung des Mindestbestands einbezogen wird ( Beispiel: |
SortBy
|
varchar(1) string |
NULL |
Sortierung des Ergebnisses. Der Wert wird auch in der Spalte Erlaubte Werte
Beispiel: |
Type
|
int | NULL |
Berechnungsmodus für die Fehlmenge. Ohne gültigen Wert werden keine Zeilen geliefert. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Immer; leer, wenn kein Artikel qualifiziert, FromLocID = ToLocID oder Type nicht 1, 2 oder 3 ist
Eine Zeile je Artikel und Quell-Lagerplatz mit der von dort umzulagernden Menge.
| Spalte | Typ | Beschreibung |
|---|---|---|
FromLocIDbinName
|
string |
Name des Quell-Lagerplatzes in |
FromLocIDbinSortNum
Kann leer sein |
int |
Sortiernummer des Quell-Lagerplatzes |
ToLocIDbinName
Kann leer sein |
string |
Name eines Lagerplatzes des Artikels in |
ToLocIDbinSortNum
Kann leer sein |
int |
Sortiernummer des Ziel-Lagerplatzes |
EanUpc
Kann leer sein |
string |
EAN/UPC des Artikels |
ItemName
Kann leer sein |
string |
Artikelname |
ToLocQty
|
int |
Aktueller Lagerortbestand in |
FromLocQty
Kann leer sein |
int |
Aktueller Lagerortbestand in |
MinStockQty
Kann leer sein |
int |
Mindestbestand von |
SupplPrice
Kann leer sein |
decimal |
Lieferantenpreis des Artikels ( |
OpenCustOrdersQty
|
int |
Menge in Auftragspositionen mit Status |
OrdersOnHoldQty
|
int |
Menge in Auftragspositionen mit Status |
ParFromLocID
|
varchar(3) string |
Wert des Parameters |
ParToLocID
|
varchar(3) string |
Wert des Parameters |
SortBy
Kann leer sein |
varchar(1) string |
Wert des Parameters |
MissingQty
|
int |
Anzahl der Lagerplatz-Datensätze des Artikels auf diesem Quell-Lagerplatz, die zur Deckung der Fehlmenge verwendet werden |
FromBinqty
Kann leer sein |
int |
Gesamtmenge des Artikels auf diesem Quell-Lagerplatz (Summe von |
PicLinkSmall
Kann leer sein |
string |
Link zum kleinen Artikelbild |
PicLinkLarge
Kann leer sein |
string |
Link zum großen Artikelbild |
Beispielantwort
<SqlRowSet1>
<row>
<FromLocIDbinName>A-01-03</FromLocIDbinName>
<FromLocIDbinSortNum>103</FromLocIDbinSortNum>
<ToLocIDbinName>S-12-01</ToLocIDbinName>
<ToLocIDbinSortNum>1201</ToLocIDbinSortNum>
<EanUpc>4012345678901</EanUpc>
<ItemName>Trinkflasche 750 ml</ItemName>
<ToLocQty>2</ToLocQty>
<FromLocQty>40</FromLocQty>
<MinStockQty>5</MinStockQty>
<SupplPrice>3.20</SupplPrice>
<OpenCustOrdersQty>4</OpenCustOrdersQty>
<OrdersOnHoldQty>0</OrdersOnHoldQty>
<ParFromLocID>002</ParFromLocID>
<ParToLocID>001</ParToLocID>
<SortBy>1</SortBy>
<MissingQty>7</MissingQty>
<FromBinqty>12</FromBinqty>
<PicLinkSmall>https://shop.example.com/img/s/4711.jpg</PicLinkSmall>
<PicLinkLarge>https://shop.example.com/img/l/4711.jpg</PicLinkLarge>
</row>
</SqlRowSet1>
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:pixiReportInventoryItemsToRefillMinStock>
<FromLocID>002</FromLocID>
<!-- <MinStock>1</MinStock> -->
<ToLocID>001</ToLocID>
<!-- <AdditionalLocID>003</AdditionalLocID> -->
<!-- <SortBy>1</SortBy> -->
<!-- <Type>1</Type> -->
</ns1:pixiReportInventoryItemsToRefillMinStock>
</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:pixiReportInventoryItemsToRefillMinStock>
<FromLocID>002</FromLocID>
<!-- <MinStock>1</MinStock> -->
<ToLocID>001</ToLocID>
<!-- <AdditionalLocID>003</AdditionalLocID> -->
<!-- <SortBy>1</SortBy> -->
<!-- <Type>1</Type> -->
</ns1:pixiReportInventoryItemsToRefillMinStock>
</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 = [
'FromLocID' => '002',
// 'MinStock' => '1',
'ToLocID' => '001',
// 'AdditionalLocID' => '003',
// 'SortBy' => '1',
// 'Type' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReportInventoryItemsToRefillMinStock', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReportInventoryItemsToRefillMinStock