pixiGetChangedItemStock2
Liefert Artikel, deren Bestand sich in einem Zeitraum geändert hat, mit physischem, verfügbarem und lagerbezogenem Bestand, Meldebestand und offener Lieferantenbestellmenge, mit Paging.
Delta-Export von Bestandsänderungen, typischerweise zum Abgleich der Shop-Bestände.
1. Lager. Alle Lager oder nur LocID, falls gesetzt.
2. Geänderte Artikel. Nicht-Bundle-Artikel mit Einträgen im Lagerplatz-Log (InvBinItemLog), deren UpdateDate zwischen Since und DateTo liegt, in den gewählten Lagern.
StockChangeist die Summe der protokollierten Mengen im Zeitraum.UpdateDateist das letzte Log-Datum.OriginalUpdateDateistLastCalculateStockDatedes Artikels, ersatzweise das letzte Log-Datum.
3. Auftragspositions-Änderungen. Bei IncludeOrderLineChanges = 1 werden Artikel mit Auftragspositionen ergänzt, die im Zeitraum geändert wurden, sofern sie noch nicht enthalten sind. Die LocationID der Position muss zu den gewählten Lagern gehören, und der Artikel muss in diesen Lagern Log-Einträge haben.
- Für diese Artikel ist
StockChangedie Summe aller Log-Einträge in diesen Lagern, nicht nur der Einträge im Zeitraum. UpdateDateistLastCalculateStockDate, ersatzweise das letzte Log-Datum, ersatzweise die aktuelle Zeit.
4. Bundles. Zu jeder geänderten Komponente werden die Bundle-Artikel ergänzt, die sie enthalten (BundleItem = 1). Ihr StockChange ist die größte Komponentenänderung, ganzzahlig geteilt durch die Komponentenmenge im Bundle. Bundle-Kopfartikel werden nur als Bundle-Zeile geliefert.
5. Sortierung und Paging. Die Kandidaten werden nach UpdateDate aufsteigend nummeriert, danach nach dem höchsten Log-Schlüssel. Geliefert werden Zeilen mit einer Nummer ab Start + 1, höchstens Rowcount Stück.
6. Bestandswerte.
PhysicalStock:items.Quantity.MinStockQty: Summe der nicht negativenMinStockQty-Werte ausItemLocationSpecificfürLocIDbzw. für alle Lager.- Für Nicht-Bundles:
AvailableStock= Summe vonLocationQuantityüber alle Lager ohne Sonderbestand, abzüglich der reservierten Menge (siehe Hinweise).OpenSupplierOrderQTY= Summe vonQty - DeliveredQty - UndeliveredQtyüber Lieferantenbestellungen, deren StatusIsAllOpen = 1hat.EstimatedDeliverystammt ausItem_EstimatedDelivery.ExportEstimatedDelivery.
- Für Bundles bleibt
AvailableStock=items.Quantity,OpenSupplierOrderQTYist 0 undEstimatedDeliveryleer.
7. Ausgeschlossene Lagerplatzgruppen. Ist ExcludeBinGroups gesetzt, wird die Menge in Lagerplätzen dieser Gruppen von PhysicalStock, AvailableStock und StockChange abgezogen. Diese Menge ist die Summe aller Log-Einträge bis DateTo. Für Bundles wird sie aus den Komponenten abgeleitet. PhysicalStockLoc ist dann die Summe der Lagerplatzmengen in den gewählten Lagern ohne die ausgeschlossenen Gruppen.
Ohne ExcludeBinGroups ist PhysicalStockLoc die Summe von LocationQuantity in den gewählten Lagern, nur für Nicht-Bundles.
Das gelieferte RowNr wird innerhalb der Seite ab 1 neu nummeriert.
Hinweise
- Nur lesend. Alle Lesezugriffe verwenden
NOLOCK, daher können nicht festgeschriebene Daten enthalten sein.
Zur Laufzeit gelesene Einstellungen:
StockExportUsePhysicalStock: Nur bei0werden offene Auftragsmengen bzw. Reservierungen vonAvailableStockabgezogen.ReservePrepaymentOrdersundExportAvailableStock_WhenReservationsAreEnabled:- Sind Reservierungen aus oder beide Einstellungen
1, wird die Summe der Auftragspositionen im StatusANGabgezogen, dazuHAL-Positionen mit Auftragsdatum innerhalb der letztenHalOrdersActiveDaysTage (Standard 7). - Sonst wird die Anzahl der Reservierungen abgezogen, deren Auftragsposition einen nicht finalen Status außer
EIN,FUTundFUShat. Wegen des Joins zählen Reservierungen nur, wenn der Artikel auchANG/HAL-Positionen hat.
- Sind Reservierungen aus oder beide Einstellungen
ExportStock_locationswird gelesen, aber nicht verwendet.
Stolperfallen:
Sincemuss ein echtes Datum sein. Der Wert 0 (1900-01-01) wird zu NULL, dann passen keine Log-Einträge.DateTo-Werte bis 1990-01-01 werden durch die aktuelle Zeit ersetzt.- Die Basis für
AvailableStockumfasst alle Lager ohne Sonderbestand, auch wennLocIDgesetzt ist. - Der Ausschluss von Lagerplatzgruppen berücksichtigt Lagerplätze aller Lager.
- Für die nächste Seite
Startum die Anzahl gelieferter Zeilen erhöhen oder mit späteremSincefortfahren. Das gelieferteRowNrist seitenbezogen. - Laut Code-Kommentar nutzen Bundles
LocationQuantity, der Code aktualisiertPhysicalStockLocaber nur für Nicht-Bundles; für Bundles bleibt der Wert 0.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Since
Pflicht
|
datetime dateTime |
– |
Beginn des Änderungszeitraums. Lagerplatz-Log-Einträge und, falls aktiviert, Auftragspositions-Änderungen ab diesem Zeitpunkt werden berücksichtigt. Beispiel: |
Rowcount
|
int | 1000 |
Maximale Anzahl gelieferter Zeilen (Seitengröße). Beispiel: |
LocID
|
varchar(3) string |
– |
Lager-ID zur Einschränkung von Änderungen, Meldebestand und Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Ende des Änderungszeitraums. NULL, 0 oder ein Datum bis 1990-01-01 bedeutet aktuelle Zeit. Beispiel: |
Start
|
int | 0 |
Anzahl zu überspringender Kandidatenzeilen (Paging-Offset). 0 beginnt mit der ersten Zeile. Beispiel: |
ExcludeBinGroups
|
varchar(max) string |
NULL |
Kommagetrennte Liste von Lagerplatzgruppen, deren Mengen von den Bestandswerten abgezogen werden. Leer oder NULL deaktiviert den Ausschluss. 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 (kann leer sein)
Eine Zeile je geändertem Artikel bzw. betroffenem Bundle, 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 |
Lieferanten-Artikelnummer. |
PhysicalStock
Kann leer sein |
int |
Physischer Bestand aus |
AvailableStock
Kann leer sein |
int |
Verfügbarer Bestand: Lagermenge abzüglich offener Aufträge bzw. Reservierungen (Nicht-Bundles); |
StockChange
Kann leer sein |
int |
Netto-Bestandsänderung im Zeitraum (Summe der Lagerplatz-Log-Mengen). |
EstimatedDelivery
Kann leer sein |
datetime dateTime |
Voraussichtliches Lieferdatum für den Export; NULL bei Bundles oder wenn nicht gesetzt. |
MinStockQty
Kann leer sein |
int |
Meldebestand, summiert über das/die gewählte(n) Lager. |
Enabled
Kann leer sein |
bit boolean |
Ob der Artikel aktiv ist. |
OpenSupplierOrderQTY
Kann leer sein |
int |
Offene Menge in offenen Lieferantenbestellungen (0 bei Bundles). |
UpdateDate
Kann leer sein |
datetime dateTime |
Letztes Änderungsdatum, nach dem sortiert wird. |
OriginalUpdateDate
Kann leer sein |
datetime dateTime |
|
BundleItem
Kann leer sein |
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 im/in den gewählten Lager(n), ggf. ohne ausgeschlossene Lagerplatzgruppen; 0, wenn nicht ermittelt. |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>10452</ItemKey>
<ItemNrInt>ART-10452</ItemNrInt>
<EANUPC>4012345678901</EANUPC>
<ItemNrSuppl>SUP-889</ItemNrSuppl>
<PhysicalStock>25</PhysicalStock>
<AvailableStock>21</AvailableStock>
<StockChange>-3</StockChange>
<MinStockQty>5</MinStockQty>
<Enabled>true</Enabled>
<OpenSupplierOrderQTY>50</OpenSupplierOrderQTY>
<UpdateDate>2024-05-01T09:15:22</UpdateDate>
<OriginalUpdateDate>2024-05-01T09:16:00</OriginalUpdateDate>
<BundleItem>false</BundleItem>
<RowNr>1</RowNr>
<PhysicalStockLoc>25</PhysicalStockLoc>
</row>
<row>
<ItemKey>20877</ItemKey>
<ItemNrInt>SET-20877</ItemNrInt>
<EANUPC>4012345678918</EANUPC>
<ItemNrSuppl/>
<PhysicalStock>0</PhysicalStock>
<AvailableStock>4</AvailableStock>
<StockChange>-1</StockChange>
<MinStockQty>0</MinStockQty>
<Enabled>true</Enabled>
<OpenSupplierOrderQTY>0</OpenSupplierOrderQTY>
<UpdateDate>2024-05-01T09:15:22</UpdateDate>
<OriginalUpdateDate>2024-05-01T09:15:22</OriginalUpdateDate>
<BundleItem>true</BundleItem>
<RowNr>2</RowNr>
<PhysicalStockLoc>0</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:pixiGetChangedItemStock2>
<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,DEFECT</ExcludeBinGroups> -->
<!-- <IncludeOrderLineChanges>1</IncludeOrderLineChanges> -->
</ns1:pixiGetChangedItemStock2>
</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:pixiGetChangedItemStock2>
<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,DEFECT</ExcludeBinGroups> -->
<!-- <IncludeOrderLineChanges>1</IncludeOrderLineChanges> -->
</ns1:pixiGetChangedItemStock2>
</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,DEFECT',
// 'IncludeOrderLineChanges' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetChangedItemStock2', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetChangedItemStock2