pixiGetHistoricalSupplierPrices
Liefert die FIFO-Lieferantenpreise von Einlagerungsbewegungen für einen oder alle Artikel in einem Zeitraum von höchstens 31 Tagen.
Liefert die Lieferantenpreise, die Pixi den Einlagerungsbewegungen zugeordnet hat (FIFO-Preise), zusammen mit Artikel, Menge, Lieferant und Referenzbeleg.
Prüfungen (bei Fehler wird eine einzelne Error-Zeile geliefert, siehe Fehler):
DateFromundDateTosind Pflicht, obwohl sie den StandardwertNULLhaben.- Beide Werte werden auf das Datum reduziert. Das Ende des Zeitraums ist der Tag nach
DateTo,DateToist also inklusive. - Der Zeitraum von
DateFrombisDateTodarf höchstens 31 Kalendertage (inklusive) umfassen. DateTodarf höchstens gestern sein; Daten für den aktuellen Tag können nicht abgefragt werden.
Auswahl:
- Ist
ItemKeyangegeben, werden nur Bewegungen dieses Artikels geliefert, sonst alle Artikel. - Ein Datensatz wird geliefert, wenn entweder das Einlagerungsdatum der Bewegung (
DatePutToStock) oder das letzte Änderungsdatum des zugehörigen Preisdatensatzes im Zeitraum liegt. Datensätze, deren Preis im Zeitraum neu berechnet wurde, erscheinen also auch dann, wenn die Einlagerung früher erfolgte. RefTypebeschreibt die Quelle, aus der der Preis stammt;RefDocumentNumberist die Nummer der verknüpften Lieferantenlieferung (direkt zugeordnete Lieferung, ersatzweise die nachträglich zugeordnete), sofern vorhanden.
Ergebnis: Die Zeilen sind nach InvBinItemLogId sortiert. Gibt es keine Treffer, wird stattdessen eine einzelne Warning-Zeile geliefert.
Hinweise
- Alle Tabellen werden mit
NOLOCKgelesen, nicht festgeschriebene Daten können daher erscheinen. - Fehler werden nicht als
SqlMessagegeliefert: Prüffehler und alle anderen Laufzeitfehler werden abgefangen und als normale Zeile mit den SpaltenStaus(sic, falsch geschrieben) undMessagezurückgegeben. Vor dem Auswerten der Datenzeilen sollte auf eine SpalteStausgeprüft werden. - Liegt
DateFromnachDateTo, entsteht kein Prüffehler; es wird lediglich dieWarning-Zeile geliefert. - Das Ende des Zeitraums wird mit
<=gegen Mitternacht des Folgetags vonDateToverglichen, Datensätze mit genau diesem Zeitstempel werden daher ebenfalls geliefert. - Ob eine Einlagerungsbewegung mehrere Preisdatensätze haben kann (und damit in mehreren Zeilen erscheint), hängt von den Daten in
InvBinItemLog_In_Priceab und ist aus dem Code nicht ersichtlich.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interner Artikelschlüssel ( Beispiel: |
DateFrom
|
datetime dateTime |
NULL |
Beginn des Zeitraums (inklusive, Uhrzeit wird ignoriert). Faktisch Pflicht: Fehlt der Wert, wird eine Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Ende des Zeitraums (inklusive, Uhrzeit wird ignoriert). Faktisch Pflicht; darf höchstens gestern sein und höchstens 31 Tage (inklusive) nach Beispiel: |
Antwort
Result-Set 1 · Wenn die Prüfungen bestanden sind und mindestens ein Datensatz passt
Einlagerungsbewegungen mit ihren FIFO-Lieferantenpreisen, sortiert nach InvBinItemLogId.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvBinItemLogId
|
int |
Schlüssel der Lagerbewegung ( |
ItemID
|
int |
Interner Artikelschlüssel. |
DatePutToStock
Kann leer sein |
dateTime |
Datum und Uhrzeit der Lagerbewegung ( |
Quantity
Kann leer sein |
decimal |
Menge der Lagerbewegung. |
SupplierPrice
Kann leer sein |
decimal |
Der Bewegung zugeordneter Lieferantenpreis. |
SupplierId
Kann leer sein |
int |
Schlüssel des Lieferanten, von dem der Preis stammt. |
RefType
Kann leer sein |
string |
Beschreibung der Quelle, aus der der Preis ermittelt wurde ( |
RefDocumentNumber
Kann leer sein |
string |
Nummer der verknüpften Lieferantenlieferung ( |
Result-Set 2 · Wenn die Prüfungen bestanden sind, aber kein Datensatz passt
Einzelne Warnzeile.
| Spalte | Typ | Beschreibung |
|---|---|---|
Staus
|
varchar(7) string |
Immer |
Message
|
nvarchar(46) string |
Warnungstext. |
Result-Set 3 · Wenn eine Prüfung fehlschlägt oder ein anderer Fehler auftritt
Einzelne Fehlerzeile mit der Fehlermeldung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Staus
|
varchar(5) string |
Immer |
Message
Kann leer sein |
nvarchar(4000) string |
Fehlermeldung ( |
Beispielantwort
<SqlRowSet1>
<row>
<InvBinItemLogId>1583321</InvBinItemLogId>
<ItemID>4711</ItemID>
<DatePutToStock>2024-05-06T09:14:22</DatePutToStock>
<Quantity>24</Quantity>
<SupplierPrice>12.50</SupplierPrice>
<SupplierId>17</SupplierId>
<RefType>Supplier delivery</RefType>
<RefDocumentNumber>LS-2024-00871</RefDocumentNumber>
</row>
<row>
<InvBinItemLogId>1583402</InvBinItemLogId>
<ItemID>4711</ItemID>
<DatePutToStock>2024-05-08T14:02:10</DatePutToStock>
<Quantity>6</Quantity>
<SupplierPrice>12.80</SupplierPrice>
<SupplierId>17</SupplierId>
<RefType>Last purchase price</RefType>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Paramters @DateFrom and @DateTo are mandatory. | `DateFrom` oder `DateTo` wurde nicht übergeben oder ist `NULL`. Beide Datumswerte immer übergeben. |
| Error | Maximum date range peroid is limited to 31 days. | Der Zeitraum von `DateFrom` bis `DateTo` (inklusive) umfasst mehr als 31 Tage. Die Abfrage in kleinere Zeiträume aufteilen. |
| Error | It is not possible to get data for current day. Max value for paramter @DateTo is: "current date -1". | `DateTo` ist heute oder liegt in der Zukunft. Gestern oder ein früheres Datum verwenden. |
| Error | {ERROR_MESSAGE()} | Jeder andere Laufzeitfehler (z. B. ungültige Datumskonvertierung) wird abgefangen und mit der Originalmeldung geliefert. |
| Warning | No records found based on specified paramters. | Keine Lagerbewegung bzw. kein Preisdatensatz passt zu Artikel und Zeitraum, oder `DateFrom` liegt nach `DateTo`. |
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:pixiGetHistoricalSupplierPrices>
<!-- <ItemKey>4711</ItemKey> -->
<!-- <DateFrom>2024-05-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-05-31T00:00:00</DateTo> -->
</ns1:pixiGetHistoricalSupplierPrices>
</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:pixiGetHistoricalSupplierPrices>
<!-- <ItemKey>4711</ItemKey> -->
<!-- <DateFrom>2024-05-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-05-31T00:00:00</DateTo> -->
</ns1:pixiGetHistoricalSupplierPrices>
</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 = [
// 'ItemKey' => '4711',
// 'DateFrom' => '2024-05-01T00:00:00',
// 'DateTo' => '2024-05-31T00:00:00',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetHistoricalSupplierPrices', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetHistoricalSupplierPrices