pixiReportStockSalesOverview
Liefert pro Artikel eine Übersicht über aktuellen Bestand, Lagerbewegungen, fakturierte Verkäufe und Retouren seit einem Stichtag, mit Paging über den Artikelschlüssel.
Erstellt einen Bestands- und Verkaufsbericht für alle Artikel aus Items.
Pro Artikel werden berechnet:
- Durchschnittlicher Lieferanten-EK (
SupplPrice): Durchschnitt vonSupplPriceausAddItemsfür dieIntLinkNr1des Artikels. LieferantMGSsowie leere Preise und Nullpreise werden ignoriert. Wird kein Preis gefunden, ist der Wert0. - Aktueller Bestand (
StockQty): Summe vonBinItemQtyüber alle Lagerplätze inInvBinItem,0ohne Lagerplatzeintrag. - Zugänge / Abgänge (
StockInc,StockDec): Summe der positiven bzw. negativen Mengen im LagerplatzprotokollInvBinItemLogmitUpdateDate >= @StatDateFrom. - Erste Einlagerung (
FirstPutToStock): frühester Protokolleintrag mit positiver Menge. Dieser Wert berücksichtigt@StatDateFromnicht. - Verkaufte / retournierte Menge (
ItemQtySold,ItemQtyReturned): Summe der positiven bzw. negativenItemQtyaus Rechnungspositionen (InvLines) mitCreateDate >= @StatDateFrom. - Letztes Verkaufsdatum (
LastSaleDate): spätesteCreateDatedieser Rechnungspositionen.
Der Kategorietext stammt aus TontrArten und wird über den ConfigType des Artikels zugeordnet.
Filter:
@StatDateFrom: Beginn des Auswertungszeitraums. BeiNULLwird1970-01-01verwendet, also die gesamte Historie.@ItemKeyStart: nur Artikel mitItemKey >= @ItemKeyStart.NULLbedeutet keine Untergrenze.@OnlyItemsOnStock = 1: nur Artikel mit aktuellem Bestand größer 0.
Sortierung nach ItemKey aufsteigend. SET ROWCOUNT @RowCount begrenzt die Zeilenanzahl. Für Paging wird im nächsten Aufruf der zuletzt gelieferte ItemKey + 1 als @ItemKeyStart übergeben.
Hinweise
- Alle Tabellen werden mit
NOLOCKgelesen. Die Werte können daher nicht festgeschriebene Daten enthalten. - Die Aggregationen in den CTEs laufen über alle Artikel. Die Filter
@ItemKeyStartund@OnlyItemsOnStockgreifen erst im abschließendenSELECT. Je nach Optimizer kann der Aufruf bei großen Datenbeständen langsam sein. Zusätzlich wird die SkalarfunktionfPixi_GetAverageSupplPricepro Artikel ausgewertet. StockDecundItemQtyReturnedsind negative Werte oder0.LastSaleDateistNULL, wenn im Zeitraum keine Rechnungspositionen vorhanden sind.FirstPutToStockistNULL, wenn der Artikel nie eingelagert wurde.@RowCount = 0hebt die Zeilenbegrenzung auf, daSET ROWCOUNT 0so arbeitet.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
StatDateFrom
|
datetime dateTime |
NULL |
Beginn des Auswertungszeitraums für Lagerbewegungen und Rechnungspositionen. Bei Beispiel: |
ItemKeyStart
|
int | NULL |
Liefert nur Artikel mit Beispiel: |
OnlyItemsOnStock
|
bit boolean |
0 |
Beschränkt das Ergebnis auf Artikel mit aktuellem Bestand größer 0. Erlaubte Werte
Beispiel: |
RowCount
|
int | 1000 |
Maximale Anzahl gelieferter Zeilen, umgesetzt über Beispiel: |
Antwort
Result-Set 1 · Immer
Eine Zeile pro Artikel, sortiert nach ItemKey.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Artikelschlüssel |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer |
ItemNrSuppl
Kann leer sein |
string |
Lieferantenartikelnummer |
SupplNr
Kann leer sein |
string |
Lieferantennummer des Artikels |
ItemName
Kann leer sein |
string |
Artikelbezeichnung |
Category
Kann leer sein |
string |
Text aus |
Price
Kann leer sein |
decimal |
Artikelpreis aus |
SupplPrice
|
money decimal |
Durchschnittlicher Lieferanten-EK aus |
StockQty
|
int |
Aktueller Bestand, summiert über alle Lagerplätze |
StockInc
|
int |
Summe der Lagerzugänge seit |
StockDec
|
int |
Summe der Lagerabgänge seit |
ItemQtySold
Kann leer sein |
int |
Fakturierte Menge (positive Rechnungspositionen) seit |
ItemQtyReturned
Kann leer sein |
int |
Retournierte Menge (negative Rechnungspositionen) seit |
FirstPutToStock
Kann leer sein |
datetime dateTime |
Datum des ersten Lagerzugangs im Protokoll, unabhängig von |
LastSaleDate
Kann leer sein |
datetime dateTime |
Erstelldatum der letzten Rechnungsposition seit |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>1001</ItemKey>
<ItemNrInt>A-10045</ItemNrInt>
<ItemNrSuppl>SUP-778</ItemNrSuppl>
<SupplNr>LIEF01</SupplNr>
<ItemName>Trekking Rucksack 40L</ItemName>
<Category>Standardartikel</Category>
<Price>89.9000</Price>
<SupplPrice>41.5000</SupplPrice>
<StockQty>23</StockQty>
<StockInc>60</StockInc>
<StockDec>-37</StockDec>
<ItemQtySold>39</ItemQtySold>
<ItemQtyReturned>-2</ItemQtyReturned>
<FirstPutToStock>2021-03-15T10:22:00</FirstPutToStock>
<LastSaleDate>2024-05-28T14:03:11</LastSaleDate>
</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:pixiReportStockSalesOverview>
<!-- <StatDateFrom>2024-01-01T00:00:00</StatDateFrom> -->
<!-- <ItemKeyStart>1001</ItemKeyStart> -->
<!-- <OnlyItemsOnStock>1</OnlyItemsOnStock> -->
<!-- <RowCount>500</RowCount> -->
</ns1:pixiReportStockSalesOverview>
</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:pixiReportStockSalesOverview>
<!-- <StatDateFrom>2024-01-01T00:00:00</StatDateFrom> -->
<!-- <ItemKeyStart>1001</ItemKeyStart> -->
<!-- <OnlyItemsOnStock>1</OnlyItemsOnStock> -->
<!-- <RowCount>500</RowCount> -->
</ns1:pixiReportStockSalesOverview>
</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 = [
// 'StatDateFrom' => '2024-01-01T00:00:00',
// 'ItemKeyStart' => '1001',
// 'OnlyItemsOnStock' => '1',
// 'RowCount' => '500',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReportStockSalesOverview', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReportStockSalesOverview