pixiGetHistoricalSupplierPriceMatching
Liefert FIFO-zugeordnete Lieferanten-Einkaufspreise und Verkaufspreise für Lagerbewegungen eines oder aller Artikel in einem Zeitraum von bis zu 31 Tagen.
Liefert die historische FIFO-Zuordnung zwischen Lagerzugängen (mit Lieferantenpreis) und Lagerabgängen (mit Verkaufspreis) auf Basis des Lagerplatz-Artikelprotokolls.
Parameterprüfung
DateFromundDateTomüssen beide übergeben werden, obwohl sie mit dem StandardwertNULLdeklariert sind.- Beide Werte werden auf den Datumsanteil reduziert. Das Ende des Zeitraums ist
DateTo+ 1 Tag. - Der Zeitraum von
DateFrombisDateTo+ 1 Tag darf 31 Tage nicht überschreiten. DateTodarf höchstens der gestrige Tag sein; Daten für den aktuellen Tag können nicht abgefragt werden.
Auswahl
- Wird
ItemKeyübergeben, wird nur dieser Artikel geliefert, andernfalls alle Artikel. - Ein Zugang wird berücksichtigt, wenn sein Erstelldatum oder das Änderungsdatum seines Lieferantenpreis-Datensatzes zwischen
DateFromundDateTo+ 1 Tag liegt (beide Grenzen inklusive, Vergleich als Datum um Mitternacht). - Zugänge werden auf zwei Arten mit Abgängen verknüpft, die Ergebnisse beider Wege werden zusammengeführt:
- Abgänge, die direkt auf den Zugangsdatensatz verweisen,
- Abgänge, die über Artikel und FIFO-Zeilennummer zum Zugang passen.
- Für jede Zuordnung werden Lieferantenpreis, Verkaufspreis, die Herkunftsbeschreibungen beider Preise, die Lieferung (eigene oder zugewiesene Lieferung) und die Verkaufsbelegzeile (Rechnungsposition oder POS-Position) ermittelt.
Ausgabe
- Wurden keine Zeilen gefunden, wird eine einzelne Zeile mit
Staus=Warninggeliefert. - Andernfalls werden die Datenzeilen sortiert nach
InvBinItemLogIdgeliefert. Die Lieferscheinnummer des Lieferanten stammt aus der Lieferantenlieferung; Datum und Nummer des Verkaufsbelegs stammen aus der Rechnung oder, falls keine vorhanden ist, aus dem POS-Beleg. - Jeder Fehler, auch die Prüfungsfehler, wird als Zeile mit
Staus=Errorund dem Fehlertext inMessagegeliefert.
Hinweise
- Die Statusspalte heißt
Staus(nichtStatus), sowohl in der Warnungs- als auch in der Fehlerzeile. - Fehler werden nie als
SqlMessagegeliefert; dieRAISERROR-Aufrufe werden abgefangen und als normale Zeile zurückgegeben. Anhand des ersten Spaltennamens lassen sich Daten- und Statuszeilen unterscheiden. - Die Obergrenze gilt inklusive Mitternacht von
DateTo+ 1 Tag, daher werden auch Datensätze mit Zeitpunkt genau 00:00 am Folgetag berücksichtigt. - Liegt
DateFromnachDateTo, tritt kein Prüfungsfehler auf; es wird lediglich dieWarning-Zeile geliefert. - Ein Paar aus Zugang und Abgang kann doppelt erscheinen, wenn es über beide Verknüpfungswege (direkter Verweis sowie Artikel + Zeilennummer) passt; es erfolgt keine Duplikatbereinigung.
- Alle Tabellen werden mit
NOLOCKgelesen, daher können nicht festgeschriebene Daten geliefert werden. - Die temporäre Tabelle wird über
util.TempTableDropgelöscht, dessen Definition nicht beigefügt ist.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Schlüssel des Artikels, auf den das Ergebnis beschränkt wird. Beispiel: |
DateFrom
|
datetime dateTime |
NULL |
Beginn des Zeitraums (nur Datumsanteil). Faktisch Pflicht: Fehlt der Wert, wird eine Fehlerzeile geliefert. Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Ende des Zeitraums (nur Datumsanteil, inklusive). Darf höchstens der gestrige Tag sein, und der Zeitraum von Beispiel: |
Antwort
Result-Set 1 · Wenn passende Datensätze gefunden wurden
FIFO-Zuordnungen von Lagerzugängen und -abgängen mit Lieferanten- und Verkaufspreisen, sortiert nach InvBinItemLogId.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvBinItemLogId
|
int |
Schlüssel des Protokolleintrags für den Lagerzugang. |
ItemID
|
int |
Schlüssel des Artikels. |
DatePutToStock
Kann leer sein |
dateTime |
Datum der Einlagerung (Aktualisierungsdatum des Protokolleintrags). |
Quantity
Kann leer sein |
int |
Menge des diesem Zugang zugeordneten Abgangs. |
SupplierPrice
Kann leer sein |
decimal |
Lieferanten-Einkaufspreis des Zugangs. |
SupplierId
Kann leer sein |
int |
Schlüssel des Lieferanten. |
RefTypeSupplierPrice
Kann leer sein |
string |
Beschreibung der Quelle, aus der der Lieferantenpreis ermittelt wurde. |
RefDocumentNumberSupplierPrice
Kann leer sein |
string |
Lieferscheinnummer der Lieferantenlieferung ( |
SellDocumentDate
Kann leer sein |
dateTime |
Datum der Rechnung oder, falls keine vorhanden, Erstelldatum des POS-Belegs. |
SellingPrice
Kann leer sein |
decimal |
Verkaufspreis des Abgangs. |
RefTypeSellingPrice
Kann leer sein |
string |
Beschreibung der Quelle, aus der der Verkaufspreis ermittelt wurde. |
RefDocumentNumberSellingPrice
Kann leer sein |
string |
Rechnungsnummer oder, falls keine vorhanden, POS-Belegnummer. |
Result-Set 2 · Wenn keine passenden Datensätze gefunden wurden
Einzelne Warnungszeile.
| Spalte | Typ | Beschreibung |
|---|---|---|
Staus
|
varchar(7) string |
Immer |
Message
|
nvarchar(46) string |
Warnungstext. |
Result-Set 3 · Bei Prüfungsfehler oder sonstigem Fehler
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-03-04T09:15:22</DatePutToStock>
<Quantity>2</Quantity>
<SupplierPrice>12.50</SupplierPrice>
<SupplierId>17</SupplierId>
<RefTypeSupplierPrice>Supplier delivery</RefTypeSupplierPrice>
<RefDocumentNumberSupplierPrice>LS-2024-0815</RefDocumentNumberSupplierPrice>
<SellDocumentDate>2024-03-12T14:02:10</SellDocumentDate>
<SellingPrice>24.90</SellingPrice>
<RefTypeSellingPrice>Invoice</RefTypeSellingPrice>
<RefDocumentNumberSellingPrice>RE240312001</RefDocumentNumberSellingPrice>
</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` + 1 Tag überschreitet 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 in der Zukunft. Höchstens das gestrige Datum verwenden. |
| Warning | No records found based on specified paramters. | Für Artikel und Zeitraum existieren keine passenden Zugangs-/Abgangsdatensätze. |
| Error | {ERROR_MESSAGE()} | Sonstiger SQL-Fehler während der Ausführung; der ursprüngliche SQL-Server-Fehlertext wird geliefert. |
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:pixiGetHistoricalSupplierPriceMatching>
<!-- <ItemKey>4711</ItemKey> -->
<!-- <DateFrom>2024-03-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-03-30T00:00:00</DateTo> -->
</ns1:pixiGetHistoricalSupplierPriceMatching>
</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:pixiGetHistoricalSupplierPriceMatching>
<!-- <ItemKey>4711</ItemKey> -->
<!-- <DateFrom>2024-03-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-03-30T00:00:00</DateTo> -->
</ns1:pixiGetHistoricalSupplierPriceMatching>
</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-03-01T00:00:00',
// 'DateTo' => '2024-03-30T00:00:00',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetHistoricalSupplierPriceMatching', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetHistoricalSupplierPriceMatching