pixiGetEKPriceHistory
Liefert die Historie der Einkaufs- (EK) und Verkaufspreise aus der Artikelhistorie, optional gefiltert nach Artikelnummer und Zeitraum, mit Paging.
Liest Preis-Historiensätze aus ItemsHist und liefert sie seitenweise.
Filter
ItemNrInternal: wenn nicht leer, werden nur Historiensätze geliefert, deren interne Artikelnummer (ItemNrInt) diesem Wert entspricht. Leer oderNULLliefert alle Artikel.FromDate/ToDate: Filter aufUpdateDate(an beiden Enden inklusive).- beide gesetzt:
UpdateDatezwischenFromDateundToDate - nur
FromDate:UpdateDate>=FromDate - nur
ToDate:UpdateDate<=ToDate - keiner: kein Datumsfilter
- beide gesetzt:
Sortierung und Paging
- Die Zeilen werden mit
RowNumber(ab 1) nummeriert, sortiert nachUpdateDate, dann Artikelschlüssel, dann Einkaufspreis, jeweils aufsteigend (älteste Änderung zuerst). - Geliefert werden nur Zeilen mit
RowNumberzwischenStartRowundStartRow + RowCount(beide inklusive), sortiert nachRowNumber. RowCount = 0wird als 100 behandelt.
Zu jedem Historiensatz wird die aktuelle Lieferantennummer (SupplNr) aus dem Artikelstamm Items ergänzt.
Hinweise
- Überlappung beim Paging: Der Seitenbereich ist an beiden Enden inklusive. Mit
StartRow = 0undRowCount = 100werden die Zeilen 1–100 geliefert, mitStartRow = 100die Zeilen 100–200 (101 Zeilen). Aufeinanderfolgende Seiten teilen sich daher eine Zeile, sofernStartRownicht umRowCount + 1erhöht wird. - Ein Kommentar im Code nennt einen Standard von 1000 Zeilen, tatsächlich verwendet der Code 100, wenn
RowCount0 ist. - Der Leerstring-Standard der Datumsparameter wird zu
1900-01-01konvertiert; genau dieses Datum wird als „kein Filter“ behandelt. ToDatewird inklusive Uhrzeit verglichen. Ein Datum ohne Uhrzeit (z. B.2024-06-30T00:00:00) schließt spätere Änderungen desselben Tages aus.- Historiensätze mit
NULLinUpdateDateoderItemNrIntwerden nie geliefert, da die Filterbedingungen immer ausgewertet werden. SupplNrist der aktuell inItemshinterlegte Lieferant, nicht der Lieferant zum Zeitpunkt der Änderung; er istNULL, wenn der Artikel nicht mehr existiert.- Es werden keine
NOLOCK-Hinweise verwendet. Ohne Artikelfilter läuft die Nummerierung über die gesamte Historientabelle, was bei großen Datenmengen langsam sein kann.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemNrInternal
|
varchar(250) string |
– |
Interne Artikelnummer als Filter ( Beispiel: |
FromDate
|
datetime dateTime |
– |
Untergrenze (inklusive) für Beispiel: |
ToDate
|
datetime dateTime |
– |
Obergrenze (inklusive, mit Uhrzeit) für Beispiel: |
RowCount
|
int | 100 |
Seitengröße bzw. Offset. Geliefert werden die Zeilen von Beispiel: |
StartRow
|
int | 0 |
Erste Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein)
Eine Zeile je passendem Preis-Historiensatz innerhalb der angeforderten Seite, sortiert nach RowNumber.
| Spalte | Typ | Beschreibung |
|---|---|---|
RowNumber
|
bigint long |
Laufende Nummer der Zeile über das gesamte gefilterte Ergebnis (sortiert nach Änderungsdatum, Artikelschlüssel, Einkaufspreis). |
ItemKey
Kann leer sein |
int |
Interner Artikelschlüssel ( |
SupplNr
Kann leer sein |
string |
Aktuell im Artikelstamm hinterlegte Lieferantennummer; |
ItemNrSuppl
Kann leer sein |
string |
Lieferanten-Artikelnummer aus dem Historiensatz. |
ItemNrInt
|
string |
Interne Artikelnummer. |
EANUPC
Kann leer sein |
string |
EAN/UPC des Artikels aus dem Historiensatz. |
Price
Kann leer sein |
decimal |
Im Historiensatz gespeicherter Verkaufspreis. |
EKPrice
Kann leer sein |
decimal |
Im Historiensatz gespeicherter Einkaufspreis ( |
UpdateDate
|
dateTime |
Datum und Uhrzeit der in der Historie erfassten Änderung. |
Beispielantwort
<SqlRowSet1>
<row>
<RowNumber>1</RowNumber>
<ItemKey>1523</ItemKey>
<SupplNr>70012</SupplNr>
<ItemNrSuppl>SUP-88213</ItemNrSuppl>
<ItemNrInt>4711-BLK</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
<Price>19.9900</Price>
<EKPrice>8.4500</EKPrice>
<UpdateDate>2024-02-14T09:31:22</UpdateDate>
</row>
<row>
<RowNumber>2</RowNumber>
<ItemKey>1523</ItemKey>
<SupplNr>70012</SupplNr>
<ItemNrSuppl>SUP-88213</ItemNrSuppl>
<ItemNrInt>4711-BLK</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
<Price>21.9900</Price>
<EKPrice>9.1000</EKPrice>
<UpdateDate>2024-05-03T14:05:10</UpdateDate>
</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:pixiGetEKPriceHistory>
<!-- <ItemNrInternal>4711-BLK</ItemNrInternal> -->
<!-- <FromDate>2024-01-01T00:00:00</FromDate> -->
<!-- <ToDate>2024-06-30T23:59:59</ToDate> -->
<!-- <RowCount>100</RowCount> -->
<!-- <StartRow>0</StartRow> -->
</ns1:pixiGetEKPriceHistory>
</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:pixiGetEKPriceHistory>
<!-- <ItemNrInternal>4711-BLK</ItemNrInternal> -->
<!-- <FromDate>2024-01-01T00:00:00</FromDate> -->
<!-- <ToDate>2024-06-30T23:59:59</ToDate> -->
<!-- <RowCount>100</RowCount> -->
<!-- <StartRow>0</StartRow> -->
</ns1:pixiGetEKPriceHistory>
</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 = [
// 'ItemNrInternal' => '4711-BLK',
// 'FromDate' => '2024-01-01T00:00:00',
// 'ToDate' => '2024-06-30T23:59:59',
// 'RowCount' => '100',
// 'StartRow' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetEKPriceHistory', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetEKPriceHistory