pixiGetChangedItemStock
Liefert Artikel, deren Bestand sich in einem Zeitraum geändert hat, mit physischem und verfügbarem Bestand, offener Lieferantenbestellmenge und Meldebestand, seitenweise.
Erstellt eine Delta-Liste von Bestandsänderungen für einen Bestandsexport.
Zeitraum und Lager
SincebisDateTodefiniert den Zeitraum.DateToist standardmäßig die aktuelle Zeit; Werte bis1990-01-01werden ebenfalls durch die aktuelle Zeit ersetzt.LocIDschränkt auf ein Lager ein; leer bedeutet alle Lager.
Kandidaten
- Nicht-Bundle-Artikel mit Einträgen in
InvBinItemLogim Zeitraum in den gewählten Lagern.StockChangeist die Summe der protokollierten Mengen,UpdateDatedas letzte Protokolldatum. - Bei
IncludeOrderLineChanges= 1 werden Artikel mit im Zeitraum geänderten Auftragspositionen in den gewählten Lagern ergänzt (sofern nicht bereits Kandidat). Sie benötigen mindestens einenInvBinItemLog-Eintrag;StockChangeist dann die Summe aller protokollierten Mengen in den Lagern,UpdateDateistitems.LastCalculateStockDate(Ersatz: letztes Protokolldatum, dann jetzt). - Für jeden Kandidaten, der Bestandteil eines Bundles ist (
BundleItems), wird auch der Bundle-Artikel ergänzt, mitStockChange= Änderung des Bestandteils ganzzahlig geteilt durch die Bestandteilmenge.
Sortierung und Paging
Die Kandidaten werden nach UpdateDate aufsteigend, dann nach dem letzten InvBinItemLog-Schlüssel nummeriert. Es werden Zeilen mit Nummer >= Start + 1 übernommen, höchstens Rowcount. Bundle-Artikel ohne Bundle-Kennzeichen sowie nicht mehr in items vorhandene Artikel werden übersprungen. Die gelieferte RowNr wird innerhalb der Seite ab 1 neu nummeriert.
Bestandswerte
PhysicalStock=items.Quantity.MinStockQty= Summe der nicht negativenItemLocationSpecific.MinStockQtyfür das Lager (oder alle Lager).- Für Nicht-Bundles:
AvailableStock= Summe vonItemLocationSpecific.LocationQuantityüber alle Lager ohne Sonderbestand, abzüglich je nach Einstellung entweder offener Auftragsmengen (ANG-Positionen plusHAL-Positionen nicht älter alsHalOrdersActiveDaysTage) oder der Anzahl Reservierungen auf nicht finalen Auftragspositionen (ohne StatusEIN,FUT,FUS).OpenSupplierOrderQTYist die offene Menge der Lieferantenbestellpositionen mit vollständig offenem Status;EstimatedDeliverystammt ausItem_EstimatedDelivery.ExportEstimatedDelivery. - Für Bundles:
AvailableStockbleibtitems.Quantity,OpenSupplierOrderQTY0,EstimatedDeliveryNULL.
Ausgeschlossene Lagerplatzgruppen
Ist ExcludeBinGroups angegeben (kommagetrennt), wird die bis DateTo protokollierte Menge auf Lagerplätzen dieser Gruppen (Lager ohne Sonderbestand) von AvailableStock, PhysicalStock und StockChange abgezogen; bei Bundles über die Bestandteilmenge abgeleitet. PhysicalStockLoc ist dann die Lagerplatzmenge in den gewählten Lagern außerhalb dieser Gruppen. Ohne ExcludeBinGroups ist PhysicalStockLoc die Summe von ItemLocationSpecific.LocationQuantity in den gewählten Lagern für Nicht-Bundles (0 für Bundles).
Hinweise
- Nur lesend; alle permanenten Tabellen werden mit
NOLOCKgelesen, Werte können daher nicht festgeschriebene Daten enthalten. - Wird
1900-01-01(Wert 0) alsSinceübergeben, wird es zu NULL; der Zeitraumfilter trifft dann nichts und das Ergebnis ist leer. - Zur Laufzeit gelesene Einstellungen:
StockExportUsePhysicalStock(ungleich0: keine Auftrags- oder Reservierungsmengen abgezogen),ReservePrepaymentOrdersundExportAvailableStock_WhenReservationsAreEnabled(Wahl zwischen offenen Auftragsmengen und Reservierungsanzahl),HalOrdersActiveDays(0 bedeutet 7; fehlt die Einstellung, werdenHAL-Positionen nicht gezählt).ExportStock_locationswird gelesen, aber nicht verwendet. - Reservierungsanzahlen werden aufgrund der Verknüpfung der Zwischenergebnisse nur bei Artikeln berücksichtigt, die auch offene
ANG/HAL-Auftragspositionen haben. AvailableStockfür Nicht-Bundles berücksichtigt alle Lager ohne Sonderbestand unabhängig vonLocID; nurPhysicalStockLoc,MinStockQtyund die Kandidatenauswahl beachtenLocID.- Für die nächste Seite
StartumRowcounterhöhen; die gelieferteRowNrbeginnt immer bei 1. Da nachUpdateDateaufsteigend sortiert wird, können neue Änderungen während des Pagings Positionen verschieben.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Since
Pflicht
|
datetime dateTime |
– |
Beginn des Änderungszeitraums (inklusive). Beispiel: |
Rowcount
|
int | 1000 |
Maximale Anzahl Zeilen pro Seite. Beispiel: |
LocID
|
varchar(3) string |
– |
Lager-ID zur Einschränkung; leer oder NULL für alle Lager. Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Ende des Änderungszeitraums (inklusive). NULL oder ein Datum bis 1990-01-01 bedeutet die aktuelle Zeit. Beispiel: |
Start
|
int | 0 |
Anzahl zu überspringender Kandidatenzeilen (Paging-Offset). Beispiel: |
ExcludeBinGroups
|
varchar(max) string |
NULL |
Kommagetrennte Liste von Lagerplatzgruppen, deren Mengen von den Bestandswerten abgezogen werden. Beispiel: |
IncludeOrderLineChanges
|
smallint int |
0 |
Bei 1 werden auch Artikel mit im Zeitraum geänderten Auftragspositionen geliefert. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Immer (ggf. leer).
Eine Zeile je geändertem Artikel, sortiert nach Änderungsdatum.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Artikelschlüssel. |
ItemNrInt
Kann leer sein |
varchar(50) string |
Interne Artikelnummer. |
EANUPC
Kann leer sein |
varchar(13) string |
EAN/UPC des Artikels. |
ItemNrSuppl
Kann leer sein |
varchar(50) string |
Lieferantenartikelnummer. |
PhysicalStock
Kann leer sein |
int |
Artikelmenge ( |
AvailableStock
Kann leer sein |
int |
Verfügbarer Bestand nach Abzug von Auftrags- bzw. Reservierungsmengen und ausgeschlossenen Lagerplatzgruppen. |
StockChange
Kann leer sein |
int |
Summe der protokollierten Bestandsbewegungen des Artikels. |
EstimatedDelivery
Kann leer sein |
datetime dateTime |
Voraussichtliches Lieferdatum für den Export; NULL bei Bundles. |
MinStockQty
|
int |
Meldebestand (Summe über Lager). |
Enabled
Kann leer sein |
bit boolean |
Ob der Artikel aktiv ist. |
OpenSupplierOrderQTY
|
int |
Offene Menge in offenen Lieferantenbestellungen. |
UpdateDate
Kann leer sein |
datetime dateTime |
Datum der letzten Änderung; Sortierschlüssel. |
OriginalUpdateDate
Kann leer sein |
datetime dateTime |
Letztes Bestandsberechnungsdatum des Artikels ( |
BundleItem
|
bit boolean |
1, wenn die Zeile ein Bundle-Artikel ist. |
RowNr
|
bigint long |
Zeilennummer innerhalb der gelieferten Seite, beginnend bei 1. |
PhysicalStockLoc
Kann leer sein |
int |
Physischer Bestand in den gewählten Lagern. |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>4711</ItemKey>
<ItemNrInt>ART-1001</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
<ItemNrSuppl>SUP-55</ItemNrSuppl>
<PhysicalStock>25</PhysicalStock>
<AvailableStock>21</AvailableStock>
<StockChange>-3</StockChange>
<EstimatedDelivery>2024-05-10T00:00:00</EstimatedDelivery>
<MinStockQty>5</MinStockQty>
<Enabled>true</Enabled>
<OpenSupplierOrderQTY>50</OpenSupplierOrderQTY>
<UpdateDate>2024-05-01T08:15:00</UpdateDate>
<OriginalUpdateDate>2024-05-01T08:20:00</OriginalUpdateDate>
<BundleItem>false</BundleItem>
<RowNr>1</RowNr>
<PhysicalStockLoc>25</PhysicalStockLoc>
</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:pixiGetChangedItemStock>
<Since>2024-05-01T00:00:00</Since>
<!-- <Rowcount>500</Rowcount> -->
<!-- <LocID>001</LocID> -->
<!-- <DateTo>2024-05-02T00:00:00</DateTo> -->
<!-- <Start>0</Start> -->
<!-- <ExcludeBinGroups>RETURNS,QUARANTINE</ExcludeBinGroups> -->
<!-- <IncludeOrderLineChanges>1</IncludeOrderLineChanges> -->
</ns1:pixiGetChangedItemStock>
</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:pixiGetChangedItemStock>
<Since>2024-05-01T00:00:00</Since>
<!-- <Rowcount>500</Rowcount> -->
<!-- <LocID>001</LocID> -->
<!-- <DateTo>2024-05-02T00:00:00</DateTo> -->
<!-- <Start>0</Start> -->
<!-- <ExcludeBinGroups>RETURNS,QUARANTINE</ExcludeBinGroups> -->
<!-- <IncludeOrderLineChanges>1</IncludeOrderLineChanges> -->
</ns1:pixiGetChangedItemStock>
</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 = [
'Since' => '2024-05-01T00:00:00',
// 'Rowcount' => '500',
// 'LocID' => '001',
// 'DateTo' => '2024-05-02T00:00:00',
// 'Start' => '0',
// 'ExcludeBinGroups' => 'RETURNS,QUARANTINE',
// 'IncludeOrderLineChanges' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetChangedItemStock', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetChangedItemStock