pixiReportStockValueHistEKPrice
Liefert alle Artikel mit einem bestimmten Artikel-Tag mit Bestand zum Stichtag, letztem bekannten EK-Preis, Rechnungsrabatten und resultierendem Lagerwert.
Erstellt einen Lagerwertbericht auf Basis historischer EK-Preise für alle Artikel, die einen bestimmten Artikel-Tag tragen.
Ablauf:
- Der Artikel-Tag
@ItemTag(Tag-Typ1) wird ermittelt und geprüft, ob der Shop@ShopIDexistiert. Fehlt eines davon, wird der FehlerTag or Shop does not existausgelöst (siehe Hinweise, die Ausführung wird nicht abgebrochen). - Alle Artikel, die mit dem Tag verknüpft sind, werden ausgewählt. Pro Artikel wird ermittelt:
- Anschaffungsdatum: das Datum des ersten Lagerplatz-Logeintrags mit positiver Menge (erste Einlagerung, unabhängig vom Datumsbereich).
- EK-Preis netto: der Endpreis der jüngsten Lieferantenlieferposition mit gelieferter Menge > 0 und Preis > 0; gibt es keine, wird der Lieferantenpreis des Artikels verwendet.
- Der Bestand wird als Summe aller Lagerplatzbewegungen des Artikels mit Änderungsdatum vor
@DateToberechnet (über alle Lager und Lagerplätze). - Die Rabatte aus Rechnungspositionen von Rechnungen des Shops
@ShopIDmit Rechnungsdatum von@DateFrom(inklusive) bis@DateTo(exklusive) werden summiert. Der Rabatt je Position ist Menge × Rabattwert, umgerechnet in einen Nettobetrag durch Division durch den hohen bzw. niedrigen MwSt-Satz der Rechnung je nach MwSt-Kennzeichen der Position (H/L).- Ist die Einstellung
MultiCurrencyEnabledgleich1, wird der Rabatt zusätzlich über den Wechselkurs der Kursquelle der Datenbankwährung (für Kursdatum und Währung der Rechnung) in die Datenbankwährung umgerechnet.
- Ist die Einstellung
- Pro getaggtem Artikel wird eine Zeile mit Preis, Menge, EK-Gesamtwert, Rabatten und resultierendem Gesamtwert (
EK Gesamt nettominusBewertungsabschläge) geliefert.
Das Ergebnis hat keine explizite Sortierung.
Hinweise
- Fehler bricht die Ausführung nicht ab: Auf
RAISERRORmit Schweregrad 16 folgt keinRETURN. Der Aufrufer erhält die Fehlermeldung, die Prozedur läuft jedoch weiter. Bei unbekanntem Tag ist die Ergebnismenge leer; bei unbekanntem Shop, aber gültigem Tag werden die Artikel trotzdem geliefert, nur ohne Rabatte. @ShopIDist faktisch Pflicht:NULLpasst nie zu einem existierenden Shop und löst den Fehler aus.@DateTound@DateFromsind faktisch Pflicht: Bei@DateTo=NULLwird kein Bestand berechnet und der Preis fällt immer auf den Lieferantenpreis des Artikels zurück; bei@DateFrom=NULLwerden keine Rabatte gefunden.- Fallstrick EK-Preis: Die Datumsbedingung für den letzten Lieferpreis vergleicht das Anlagedatum des Artikels mit
@DateTo, nicht das Lieferdatum. Der Preis ist daher der jüngste Lieferpreis insgesamt (auch Lieferungen nach@DateTo), sofern der Artikel vor@DateToangelegt wurde. - Der Bestand ist nicht auf Shop oder Lager eingeschränkt; alle Lagerplatzbewegungen werden summiert.
dbCurrencyenthält den Code der Datenbankwährung nur beiMultiCurrencyEnabled=1; sonst ist esNULLund die Beträge sind in der Originalwährung der Rechnung.- Alle Lesezugriffe nutzen
NOLOCK; Ergebnisse können nicht festgeschriebene Daten enthalten. - Spaltennamen enthalten Leerzeichen; im SOAP/DataSet-XML erscheinen sie kodiert, z. B.
EK-Preis_x0020_netto.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ShopID
|
varchar(3) string |
NULL |
Shop, dessen Rechnungen für die Rabattberechnung verwendet werden. Muss existieren, sonst wird ein Fehler ausgelöst. Beispiel: |
ItemTag
|
varchar(50) string |
NULL |
Name des Artikel-Tags (Tag-Typ 1). Nur mit diesem Tag verknüpfte Artikel werden berücksichtigt. Muss existieren, sonst wird ein Fehler ausgelöst. Beispiel: |
DateFrom
|
datetime dateTime |
NULL |
Beginn des Rechnungsdatumsbereichs für Rabatte (inklusive). Beispiel: |
DateTo
|
datetime dateTime |
NULL |
Stichtag (exklusive): Ende des Rechnungsdatumsbereichs und Datum, bis zu dem Lagerbewegungen summiert werden. Beispiel: |
Antwort
Result-Set 1 · Immer (leer, wenn der Tag nicht existiert oder keine Artikel hat)
Eine Zeile pro mit dem Tag verknüpftem Artikel mit Lagerbewertung nach historischem EK-Preis.
| Spalte | Typ | Beschreibung |
|---|---|---|
Artikel
Kann leer sein |
varchar(255) string |
Artikelname. |
Artikelnummer
Kann leer sein |
varchar(50) string |
Interne Artikelnummer. |
Anschaffungsdatum
|
varchar(20) string |
Datum der ersten Einlagerung im Format TT.MM.JJJJ; Leerstring, wenn unbekannt. |
EK-Preis netto
|
money decimal |
Letzter bekannter Netto-EK-Preis (jüngster Lieferpreis oder Lieferantenpreis des Artikels); 0, wenn keiner vorhanden. |
Anzahl
|
int |
Bestand vor |
EK Gesamt netto
|
money decimal |
EK-Preis × Bestand; 0, wenn nicht berechenbar. |
Bewertungsabschläge
|
money decimal |
Summe der Netto-Rabatte aus Rechnungspositionen im Zeitraum für den Shop; bei aktivierter Mehrwährung in Datenbankwährung. |
Gesamt
|
money decimal |
|
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung bei |
Beispielantwort
<SqlRowSet1>
<row>
<Artikel>Bluetooth Kopfhörer X200</Artikel>
<Artikelnummer>BT-X200</Artikelnummer>
<Anschaffungsdatum>14.03.2022</Anschaffungsdatum>
<EK-Preis_x0020_netto>24.5000</EK-Preis_x0020_netto>
<Anzahl>40</Anzahl>
<EK_x0020_Gesamt_x0020_netto>980.0000</EK_x0020_Gesamt_x0020_netto>
<Bewertungsabschläge>35.2100</Bewertungsabschläge>
<Gesamt>944.7900</Gesamt>
<dbCurrency>EUR</dbCurrency>
</row>
<row>
<Artikel>USB-C Ladekabel 1m</Artikel>
<Artikelnummer>USBC-1M</Artikelnummer>
<Anschaffungsdatum/>
<EK-Preis_x0020_netto>2.1000</EK-Preis_x0020_netto>
<Anzahl>0</Anzahl>
<EK_x0020_Gesamt_x0020_netto>0.0000</EK_x0020_Gesamt_x0020_netto>
<Bewertungsabschläge>0.0000</Bewertungsabschläge>
<Gesamt>0.0000</Gesamt>
<dbCurrency>EUR</dbCurrency>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| RAISERROR | Tag or Shop does not exist | Der Artikel-Tag `@ItemTag` (Typ 1) wurde nicht gefunden oder `@ShopID` existiert nicht (auch bei NULL). Die Ausführung läuft danach weiter. Einen existierenden Artikel-Tag-Namen und eine gültige Shop-ID übergeben. |
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:pixiReportStockValueHistEKPrice>
<!-- <ShopID>SHP</ShopID> -->
<!-- <ItemTag>Inventur2023</ItemTag> -->
<!-- <DateFrom>2023-01-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-01-01T00:00:00</DateTo> -->
</ns1:pixiReportStockValueHistEKPrice>
</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:pixiReportStockValueHistEKPrice>
<!-- <ShopID>SHP</ShopID> -->
<!-- <ItemTag>Inventur2023</ItemTag> -->
<!-- <DateFrom>2023-01-01T00:00:00</DateFrom> -->
<!-- <DateTo>2024-01-01T00:00:00</DateTo> -->
</ns1:pixiReportStockValueHistEKPrice>
</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 = [
// 'ShopID' => 'SHP',
// 'ItemTag' => 'Inventur2023',
// 'DateFrom' => '2023-01-01T00:00:00',
// 'DateTo' => '2024-01-01T00:00:00',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReportStockValueHistEKPrice', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReportStockValueHistEKPrice