pixiReport_StockValue
Liefert den Lagerwertbericht: Bestand je Artikel und Lager zu einem Stichtag mit VK brutto/netto, EK, Rohertrag und Summenwerten.
Wrapper um die interne Berichtsprozedur Report_StockValue. Alle Parameter werden unverändert weitergereicht.
Ablauf
- Der Stichtag wird auf das Tagesende von
ParamDategesetzt. OhneParamDategilt das Ende des aktuellen Tages. - Der Bestand wird aus dem Lagerbewegungsprotokoll
InvBinItemLogrekonstruiert. Alle Bewegungen mitUpdateDatebis zum Stichtag werden je Lager (LocID) und Artikel summiert. Nur Kombinationen mit einer Summe ungleich 0 bleiben erhalten, negative Bestände sind also enthalten. - Ist
LocIDangegeben und nicht leer, werden nur Bewegungen dieses Lagers berücksichtigt. Andernfalls werden alle Lager einbezogen. - Jede Bestandszeile wird mit dem Artikel (
Items) verknüpft. Zeilen ohne existierenden Artikel entfallen. - Je Artikel wird die zum Stichtag letzte gültige Lieferanteninformation ermittelt. Sie liefert den Verkaufspreis
Price, den EinkaufspreisSupplPriceund die Lieferantennummer. Der Lieferantenname stammt ausSuppliers, der Kategorietext überItems.ConfigTypeausTontrArten. - Der Mehrwertsteuersatz wird für das Standardland und den Stichtag anhand von
MwStSatzdes Artikels bestimmt:1= voller Satz2= ermäßigter Satz- jeder andere Wert = keine MwSt.; der Preis gilt als netto.
- Filter:
- Ist
SupplNrangegeben und nicht leer, werden nur Artikel geliefert, deren letzter Lieferant dieser Lieferant ist. - Ist
Categoryangegeben und nicht leer, werden nur Artikel mitConfigType=Categorygeliefert.
- Ist
- Es wird eine Zeile je Artikel und Lager geliefert, sortiert nach dem internen Artikelschlüssel.
Berechnete Werte
VK_Netto= Bruttopreis geteilt durch (1 + MwSt.-Satz)Rohertrag=VK_Netto−EKje StückSum_*= Bestandsmenge × Stückwert
Die Spalten par_* geben die wirksamen Filterwerte zurück. Nicht gesetzte Filter erscheinen als -alle-.
Hinweise
- Nur lesend. Die meisten Tabellen werden
WITH (NOLOCK)gelesen, das Ergebnis kann daher nicht festgeschriebene Daten enthalten.Itemswird ohne Hinweis gelesen. - Der Bestand wird aus dem gesamten Bewegungsprotokoll bis zum Stichtag neu berechnet. Bei großer Historie kann das langsam sein; Filter nach Möglichkeit verwenden.
- Von
ParamDatezählt nur das Datum, da die Uhrzeit immer auf das Tagesende gesetzt wird. - Die Lagerspalte der internen Zwischentabelle ist
varchar(3), obwohlLocIDbis zu 10 Zeichen annimmt. - Ist
SupplNrgesetzt, entfallen Artikel ohne Lieferanteninformation. Ohne Filter werden sie mit NULL-Preisen geliefert. Rohertrah(sic, abweichend vonRohertraggeschrieben) ist der Gesamt-Rohertrag. Er ist0für Artikel, derenMwStSatzweder 1 noch 2 ist, währendRohertragfür diese Artikel trotzdem berechnet wird.- Die Ausgabespalte
MwStSatzenthält den MwSt.-Satz in Prozent, nicht den Steuerschlüssel des Artikels. - Die Hilfsfunktionen
fPixi_GetLatestSupplierInfo,fPixi_GetVATRate,fPixi_GetDefaultCountryCode,fPixi_GetDateEndOfDayundpixi.GetDatabaseCurrencyliegen nicht vor. Ihre genaue Logik, etwa wie die "letzte" Lieferanteninformation gewählt wird, und die Datentypen der Preisspalten sind daher hier nicht dokumentiert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ParamDate
|
datetime dateTime |
NULL |
Stichtag des Berichts. Bestand und Preise werden zum Ende dieses Tages ermittelt. NULL = heute. Beispiel: |
LocID
|
varchar(10) string |
NULL |
Filter auf das Lager. NULL oder leer = alle Lager. Beispiel: |
Category
|
varchar(10) string |
NULL |
Filter auf die Artikelkategorie, verglichen mit Beispiel: |
SupplNr
|
varchar(10) string |
NULL |
Filter auf den Lieferanten der zum Stichtag letzten Lieferanteninformation. NULL oder leer = alle Lieferanten. Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein)
Eine Zeile je Artikel und Lager mit Bestand ungleich 0 zum Stichtag, sortiert nach internem Artikelschlüssel.
| Spalte | Typ | Beschreibung |
|---|---|---|
LieferantenArtikelnummer
Kann leer sein |
string |
Lieferantenartikelnummer ( |
Artikelnummer
Kann leer sein |
string |
Interne Artikelnummer ( |
Barcode
Kann leer sein |
string |
EAN/UPC-Barcode des Artikels. |
Artikelname
Kann leer sein |
string |
Artikelname. |
Kategorie
Kann leer sein |
string |
Kategorietext aus |
SupplName
Kann leer sein |
string |
Name des Lieferanten aus der letzten Lieferanteninformation. |
LocID
|
varchar(3) string |
Lager-ID. |
Bestand
|
int |
Bestand zum Stichtag (Summe der Bewegungen, kann negativ sein). |
VK_Brutto
Kann leer sein |
decimal |
Verkaufspreis brutto je Stück. |
VK_Netto
Kann leer sein |
decimal |
Verkaufspreis netto je Stück (Bruttopreis ohne MwSt.). |
EK
Kann leer sein |
decimal |
Einkaufspreis je Stück. |
Rohertrag
Kann leer sein |
decimal |
Rohertrag je Stück ( |
Sum_VK_Netto
Kann leer sein |
decimal |
Bestand × VK netto. |
Sum_VK_Brutto
Kann leer sein |
decimal |
Bestand × VK brutto. |
Sum_EK
Kann leer sein |
decimal |
Bestand × EK (Lagerwert zum Einkaufspreis). |
MwStSatz
Kann leer sein |
decimal |
Angewandter MwSt.-Satz in Prozent (0, wenn der Artikel weder vollen noch ermäßigten Satz hat). |
Rohertrah
Kann leer sein |
decimal |
Gesamt-Rohertrag (Bestand × ( |
CurrencyCode
Kann leer sein |
varchar(3) string |
Währungscode der Datenbank. |
par_paramdate
|
datetime dateTime |
Wirksamer Stichtag (Tagesende). |
par_LocID
|
varchar(10) string |
Lagerfilter wie übergeben oder |
par_Category
|
varchar(10) string |
Kategoriefilter wie übergeben oder |
par_SupplNR
|
varchar(10) string |
Lieferantenfilter wie übergeben oder |
Beispielantwort
<SqlRowSet1>
<row>
<LieferantenArtikelnummer>SUP-4711</LieferantenArtikelnummer>
<Artikelnummer>100234</Artikelnummer>
<Barcode>4006381333931</Barcode>
<Artikelname>Notizbuch A5 kariert</Artikelname>
<Kategorie>Standard</Kategorie>
<SupplName>Papierwaren GmbH</SupplName>
<LocID>001</LocID>
<Bestand>25</Bestand>
<VK_Brutto>11.9000</VK_Brutto>
<VK_Netto>10.0000</VK_Netto>
<EK>4.5000</EK>
<Rohertrag>5.5000</Rohertrag>
<Sum_VK_Netto>250.0000</Sum_VK_Netto>
<Sum_VK_Brutto>297.5000</Sum_VK_Brutto>
<Sum_EK>112.5000</Sum_EK>
<MwStSatz>19.00</MwStSatz>
<Rohertrah>137.5000</Rohertrah>
<CurrencyCode>EUR</CurrencyCode>
<par_paramdate>2024-03-31T23:59:59.997</par_paramdate>
<par_LocID>001</par_LocID>
<par_Category>-alle-</par_Category>
<par_SupplNR>-alle-</par_SupplNR>
</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:pixiReport_StockValue>
<!-- <ParamDate>2024-03-31T00:00:00</ParamDate> -->
<!-- <LocID>001</LocID> -->
<!-- <Category>1</Category> -->
<!-- <SupplNr>L100</SupplNr> -->
</ns1:pixiReport_StockValue>
</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:pixiReport_StockValue>
<!-- <ParamDate>2024-03-31T00:00:00</ParamDate> -->
<!-- <LocID>001</LocID> -->
<!-- <Category>1</Category> -->
<!-- <SupplNr>L100</SupplNr> -->
</ns1:pixiReport_StockValue>
</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 = [
// 'ParamDate' => '2024-03-31T00:00:00',
// 'LocID' => '001',
// 'Category' => '1',
// 'SupplNr' => 'L100',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReport_StockValue', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReport_StockValue