pixiGetRelocations
Liefert Umlagerungen von Artikeln zwischen Lagern (Auslagerung und Einlagerung) aus dem Lagerplatz-Artikel-Log für einen Zeitraum von höchstens 31 Tagen, mit Paging.
Liefert die Lagerbewegungen, die beim Umlagern von Artikeln von einem Lager in ein anderes entstehen.
- Standardwerte und Bereinigung: Ist
ChangeDateFromleer, wird der Beginn des aktuellen Monats (00:00) verwendet; istChangeDateToleer, das Ende des aktuellen Tages (23:59:59.997).FromLocationundToLocationwerden getrimmt; leere Zeichenketten gelten als "kein Filter". - Prüfung: Liegen zwischen
ChangeDateFromundChangeDateTomehr als 31 Tage (gezählt als Tagesgrenzen), wird eine einzelne Statuszeile mitStatus=Errorzurückgegeben und der Aufruf beendet. - Kandidaten: Aus dem Lagerplatz-Artikel-Log werden alle Einträge mit
UpdateDateim Zeitraum in zwei Gruppen gelesen:- Auslagerungen (
SMTRef= 19,SMORef= 11), - Einlagerungen (
SMTRef= 11,SMORef= 12). Jede Gruppe wird getrennt in der Reihenfolge des Log-Schlüssels nummeriert.
- Auslagerungen (
- Zuordnung: Der n-te Auslagerungseintrag wird mit dem n-ten Einlagerungseintrag verknüpft. Zurückgegeben werden nur Paare, bei denen ein Einlagerungseintrag existiert und der Artikel des Auslagerungseintrags im Artikelstamm vorhanden ist.
FromLocationist das Lager des Auslagerungseintrags,ToLocationdas Lager des Einlagerungseintrags. - Lagerfilter:
FromLocationfiltert auf das Quelllager,ToLocationauf das Ziellager; beide sind kombinierbar. - Paging: Die verbleibenden Zeilen werden erneut (in Reihenfolge des Log-Schlüssels) in
RowNumbernummeriert. Zurückgegeben werden höchstensRowCountZeilen mitRowNumber>Offset, sortiert nachRowNumber.
Qty ist die Menge des Auslagerungseintrags multipliziert mit -1, also die umgelagerte Menge als positive Zahl.
Hinweise
- Aus- und Einlagerungseinträge werden nur über die Position verknüpft (n-te Auslagerung mit n-ter Einlagerung in Reihenfolge des Log-Schlüssels), nicht über Artikel oder Umlagerungsbeleg. Weicht die Anzahl der Aus- und Einlagerungen im Zeitraum voneinander ab oder liegt eine Umlagerung über der Zeitraumgrenze, können Paare verschoben sein und
ToLocationzu einer anderen Bewegung gehören. - Die Bedeutung der Codes
SMTRef/SMORef(19/11 und 11/12) ist im Code nicht dokumentiert; die Deutung als Aus-/Einlagerung stammt aus den Namen der temporären Tabellen. - Wird
ChangeDateToals Datum ohne Uhrzeit übergeben, gilt Mitternacht zu Beginn dieses Tages; spätere Bewegungen dieses Tages fehlen dann. - Alle Lesezugriffe verwenden
NOLOCK, nicht festgeschriebene Daten können daher erscheinen. - Die Hilfsprozeduren
util.IndexCreateundutil.TempTableDropwerden nur für temporäre Tabellen genutzt; ihre Definitionen liegen nicht vor. RowNumberwird nach den Lagerfiltern berechnet, Paging überOffsetist daher bei gleichen Filterwerten konsistent.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
FromLocation
|
varchar(3) string |
NULL |
Quelllager (Lager-ID des Auslagerungseintrags). Leer oder NULL bedeutet alle Quelllager. Beispiel: |
ToLocation
|
varchar(3) string |
NULL |
Ziellager (Lager-ID des Einlagerungseintrags). Leer oder NULL bedeutet alle Ziellager. Beispiel: |
ChangeDateFrom
|
datetime dateTime |
NULL |
Beginn des Zeitraums (inklusive) auf Beispiel: |
ChangeDateTo
|
datetime dateTime |
NULL |
Ende des Zeitraums (inklusive) auf Beispiel: |
Offset
|
int | 0 |
Anzahl zu überspringender Zeilen; zurückgegeben werden Zeilen mit Beispiel: |
RowCount
|
int | 1000 |
Maximale Anzahl zurückgegebener Zeilen. Beispiel: |
Antwort
Result-Set 1 · Wenn der Zeitraum zwischen ChangeDateFrom und ChangeDateTo 31 Tage überschreitet
Fehler-Statuszeile; es werden keine Daten geliefert.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
|
varchar(34) string |
Fehlertext. |
Result-Set 2 · Wenn der Zeitraum höchstens 31 Tage umfasst
Eine Zeile pro Umlagerung (Paar aus Aus- und Einlagerung), seitenweise nach Offset und RowCount, sortiert nach RowNumber.
| Spalte | Typ | Beschreibung |
|---|---|---|
RowNumber
|
bigint long |
Laufende Nummer der Zeile im gefilterten Ergebnis, für Paging. |
ItemKey
|
int |
Interner Schlüssel des Artikels. |
UpdateDate
Kann leer sein |
datetime dateTime |
Zeitstempel des Auslagerungs-Logeintrags. |
EANUPC
Kann leer sein |
string |
EAN/UPC des Artikels. |
ItemName
Kann leer sein |
string |
Name des Artikels. |
FromLocation
Kann leer sein |
string |
Lager-ID des Auslagerungseintrags (Quelllager). |
ToLocation
Kann leer sein |
string |
Lager-ID des zugeordneten Einlagerungseintrags (Ziellager). |
Qty
Kann leer sein |
int |
Umgelagerte Menge (Menge des Auslagerungseintrags multipliziert mit -1). |
Beispielantwort
<SqlRowSet1>
<row>
<RowNumber>1</RowNumber>
<ItemKey>10452</ItemKey>
<UpdateDate>2024-05-03T10:15:22.473</UpdateDate>
<EANUPC>4006381333931</EANUPC>
<ItemName>Ballpoint pen blue</ItemName>
<FromLocation>001</FromLocation>
<ToLocation>002</ToLocation>
<Qty>25</Qty>
</row>
<row>
<RowNumber>2</RowNumber>
<ItemKey>10987</ItemKey>
<UpdateDate>2024-05-03T11:02:05.110</UpdateDate>
<EANUPC>4006381333948</EANUPC>
<ItemName>Notebook A5</ItemName>
<FromLocation>001</FromLocation>
<ToLocation>003</ToLocation>
<Qty>10</Qty>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Time period is limited to 31 days. | Die Differenz zwischen `ChangeDateFrom` und `ChangeDateTo` (bzw. deren Standardwerten) beträgt mehr als 31 Tage. Die Abfrage in Zeiträume von höchstens 31 Tagen aufteilen. |
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:pixiGetRelocations>
<!-- <FromLocation>001</FromLocation> -->
<!-- <ToLocation>002</ToLocation> -->
<!-- <ChangeDateFrom>2024-05-01T00:00:00</ChangeDateFrom> -->
<!-- <ChangeDateTo>2024-05-31T23:59:59</ChangeDateTo> -->
<!-- <Offset>0</Offset> -->
<!-- <RowCount>1000</RowCount> -->
</ns1:pixiGetRelocations>
</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:pixiGetRelocations>
<!-- <FromLocation>001</FromLocation> -->
<!-- <ToLocation>002</ToLocation> -->
<!-- <ChangeDateFrom>2024-05-01T00:00:00</ChangeDateFrom> -->
<!-- <ChangeDateTo>2024-05-31T23:59:59</ChangeDateTo> -->
<!-- <Offset>0</Offset> -->
<!-- <RowCount>1000</RowCount> -->
</ns1:pixiGetRelocations>
</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 = [
// 'FromLocation' => '001',
// 'ToLocation' => '002',
// 'ChangeDateFrom' => '2024-05-01T00:00:00',
// 'ChangeDateTo' => '2024-05-31T23:59:59',
// 'Offset' => '0',
// 'RowCount' => '1000',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetRelocations', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetRelocations