pixiReportGetShippableOrdersV2
Liefert offene Aufträge bzw. Auftragspositionen, die mit dem aktuellen Bestand versendet werden können, als Details oder Summen, optional je Lager.
Ermittelt, welche offenen Aufträge mit dem aktuellen Bestand versendet werden können, und liefert sie als Positionsdetails oder als Summen.
1. Kandidaten-Aufträge
- Berücksichtigt werden nur Auftragspositionen im Status
ANGoderEIN(soweit inOrderStatesvorhanden) mitItemRefundQty > 0. Ersatzpositionen ohne Artikel entfallen. ShopId: nur Aufträge, deren KundeCustomerOf = @ShopIdhat. Ein Leerstring (Standard) bedeutet alle Shops.- Aufträge mit gesperrter Liefer- oder Rechnungsadresse (
ASlocked = 'Y') werden ausgeschlossen. - Aufträge mit gesperrtem Kopf (
OhSLocked = 'Y') werden ausgeschlossen. - Versanddatum: standardmäßig nur Aufträge ohne Versanddatum oder mit Versanddatum vor morgen. Mit
IncludeOrdersWithAnyShipDate = 1wird das Versanddatum ignoriert.
2. Bestandsprüfung
Für jede Kandidatenposition entscheidet die interne Prozedur pixi_CalculateStockForOrderLines, ob sie versandfähig ist. Verwendet wird der Bestand der Lager mit SpecialStock = 0. Frühere Reservierungen und ältere nicht reservierte Auftragspositionen (FIFO nach Reservierungsdatum bzw. Positionsschlüssel) werden vom Bestand abgezogen. Positionen im Status EIN gelten immer als versandfähig. UseFIFObyLocationV2 legt fest, ob je Lager der Position (1) oder über alle Lager summiert (0) geprüft wird. NULL bedeutet, dass der Wert der Einstellung UseFIFObyLocation gilt.
3. Filter Teillieferung
OnlyPartDelivery = 0,IncludePartDelivery = 0: alle Positionen von Aufträgen, bei denen jede Kandidatenposition versandfähig ist (nur vollständige Aufträge).OnlyPartDelivery = 0,IncludePartDelivery = 1: alle versandfähigen Positionen, unabhängig davon, ob der Auftrag vollständig ist.OnlyPartDelivery = 1: nur versandfähige Positionen von Aufträgen, die auch mindestens eine nicht versandfähige Position enthalten.IncludePartDeliverywird ignoriert.
4. Währung
Ist die Einstellung MultiCurrencyEnabled gleich 1, werden Price und ShipCost durch den Kurs der Datenbankwährungs-Kursquelle für Währung und Kursdatum des Auftrags geteilt. Das Ergebnis liegt in Datenbankwährung vor, dbCurrency enthält deren Code. Wird kein passender Kurs gefunden, bleiben die Beträge unverändert. Ohne Mehrwährung werden die Beträge wie gespeichert geliefert und dbCurrency ist NULL.
5. Ausgabe (genau eine Ergebnismenge, abhängig von ViewDetails und PerLocation)
ViewDetails = 1,PerLocation = 0: eine Zeile je Position, sortiert nachOrderNr,OrderlineRef.ViewDetails = 0,PerLocation = 0: eine Summenzeile mit Anzahl Aufträge, Auftragswert (Price * Qty), Versandkosten und Picks.ViewDetails = 1,PerLocation = 1: wie die Details, zusätzlich mit SpalteLocationId.ViewDetails = 0,PerLocation = 1: eine Summenzeile je Lager.
Hinweise
- Alle Lesezugriffe erfolgen mit
NOLOCK. Das Ergebnis kann nicht festgeschriebene Daten enthalten und ist nur eine Momentaufnahme; es wird nichts reserviert oder geändert. NULLfürViewDetails,IncludePartDelivery,OnlyPartDeliveryundPerLocationwird als0behandelt. Eine leereShopIdgilt als "alle Shops".NULLfürIncludeOrdersWithAnyShipDatewirkt wie0.- Einstellungen mit Einfluss auf das Verhalten:
MultiCurrencyEnabled: Währungsumrechnung und SpaltedbCurrency.HomeCurrencyundDatabaseCurrencyExchRateSourceId: verwendete Datenbankwährung und Kursquelle.UseFIFObyLocation: gilt, wennUseFIFObyLocationV2NULList.
- Ob ein Auftrag "vollständig" ist, wird nur anhand seiner
ANG/EIN-Positionen mit Artikel und positiver Menge beurteilt. Positionen in anderen Status werden ignoriert. ShipCostsind die Versandkosten aus dem Auftragskopf und stehen auf jeder Position. In den Summen werden sie einmal je Auftrag addiert. In den Summen je Lager werden sie einmal je Auftrag und Lager addiert; ein Auftrag über mehrere Lager zählt seine Versandkosten daher in jedem dieser Lager.- Bei der Gesamtsumme (
ViewDetails = 0,PerLocation = 0) wird immer eine Zeile geliefert. Ist nichts versandfähig, giltOrders= 0 undShipCost= 0,OrderTotal/PickssindNULL. Die Summen je Lager liefern in diesem Fall keine Zeilen. - Ein Kommentar im Code bezeichnet
PerLocationals "alte Variante". - Die interne Bestandsprozedur ruft
log.EventDurationInsertauf (Definition nicht beigefügt), das vermutlich einen Laufzeit-Logeintrag schreibt. - Der Aufruf durchsucht alle offenen
ANG/EIN-Positionen samt Reservierungen und kann bei großen Datenbanken aufwendig sein.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ViewDetails
|
bit boolean |
NULL |
Erlaubte Werte
Beispiel: |
IncludePartDelivery
|
bit boolean |
NULL |
Bei Erlaubte Werte
Beispiel: |
OnlyPartDelivery
|
bit boolean |
NULL |
Erlaubte Werte
Beispiel: |
ShopId
|
varchar(3) string |
– |
Shop-Kürzel. Es werden nur Aufträge von Kunden mit Beispiel: |
IncludeOrdersWithAnyShipDate
|
bit boolean |
0 |
Erlaubte Werte
Beispiel: |
PerLocation
|
bit boolean |
0 |
Erlaubte Werte
Beispiel: |
UseFIFObyLocationV2
|
bit boolean |
NULL |
Steuert die Bestandsprüfung: Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn ViewDetails = 1 und PerLocation = 0
Eine Zeile je versandfähiger Auftragsposition, sortiert nach OrderNr, OrderlineRef.
| Spalte | Typ | Beschreibung |
|---|---|---|
OrderlineRef
|
int |
Schlüssel der Auftragsposition |
OrderNr
Kann leer sein |
int |
Auftragsnummer |
Qty
Kann leer sein |
int |
Bestellmenge der Position |
ItemRef
Kann leer sein |
int |
Artikelreferenz |
Status
Kann leer sein |
varchar(3) string |
Positionsstatus ( |
ShipCost
Kann leer sein |
money decimal |
Versandkosten aus dem Auftragskopf, bei Mehrwährung in Datenbankwährung umgerechnet |
Price
Kann leer sein |
money decimal |
Einzelpreis der Position, bei Mehrwährung in Datenbankwährung umgerechnet |
Shippable
|
int |
Immer 1 |
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung bei aktivierter Mehrwährung, sonst NULL |
Result-Set 2 · Wenn ViewDetails = 0 und PerLocation = 0 (Standard)
Eine einzelne Zeile mit Summen über alle ermittelten Positionen.
| Spalte | Typ | Beschreibung |
|---|---|---|
Orders
|
int |
Anzahl unterschiedlicher Aufträge |
OrderTotal
Kann leer sein |
money decimal |
Summe aus |
ShipCost
|
money decimal |
Summe der Versandkosten, einmal je Auftrag |
Picks
Kann leer sein |
int |
Summe der Mengen |
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung bei aktivierter Mehrwährung, sonst NULL |
Result-Set 3 · Wenn ViewDetails = 1 und PerLocation = 1
Eine Zeile je versandfähiger Auftragsposition inklusive Lager, sortiert nach OrderNr, OrderlineRef.
| Spalte | Typ | Beschreibung |
|---|---|---|
OrderlineRef
|
int |
Schlüssel der Auftragsposition |
OrderNr
Kann leer sein |
int |
Auftragsnummer |
LocationId
Kann leer sein |
varchar(3) string |
Lager der Auftragsposition |
Qty
Kann leer sein |
int |
Bestellmenge der Position |
ItemRef
Kann leer sein |
int |
Artikelreferenz |
Status
Kann leer sein |
varchar(3) string |
Positionsstatus ( |
ShipCost
Kann leer sein |
money decimal |
Versandkosten aus dem Auftragskopf, bei Mehrwährung in Datenbankwährung umgerechnet |
Price
Kann leer sein |
money decimal |
Einzelpreis der Position, bei Mehrwährung in Datenbankwährung umgerechnet |
Shippable
|
int |
Immer 1 |
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung bei aktivierter Mehrwährung, sonst NULL |
Result-Set 4 · Wenn ViewDetails = 0 und PerLocation = 1
Eine Summenzeile je Lager; keine Zeilen, wenn nichts versandfähig ist.
| Spalte | Typ | Beschreibung |
|---|---|---|
Orders
|
int |
Anzahl unterschiedlicher Aufträge mit Positionen in diesem Lager |
LocationId
Kann leer sein |
varchar(3) string |
Lager |
OrderTotal
Kann leer sein |
money decimal |
Summe aus |
ShipCost
Kann leer sein |
money decimal |
Summe der Versandkosten, einmal je Auftrag in diesem Lager |
Picks
Kann leer sein |
int |
Summe der Mengen in diesem Lager |
dbCurrency
Kann leer sein |
varchar(3) string |
Code der Datenbankwährung bei aktivierter Mehrwährung, sonst NULL |
Beispielantwort
<SqlRowSet1>
<row>
<Orders>42</Orders>
<OrderTotal>3157.8000</OrderTotal>
<ShipCost>209.5000</ShipCost>
<Picks>118</Picks>
<dbCurrency>EUR</dbCurrency>
</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:pixiReportGetShippableOrdersV2>
<!-- <ViewDetails>1</ViewDetails> -->
<!-- <IncludePartDelivery>0</IncludePartDelivery> -->
<!-- <OnlyPartDelivery>0</OnlyPartDelivery> -->
<!-- <ShopId>HOH</ShopId> -->
<!-- <IncludeOrdersWithAnyShipDate>0</IncludeOrdersWithAnyShipDate> -->
<!-- <PerLocation>0</PerLocation> -->
<!-- <UseFIFObyLocationV2>1</UseFIFObyLocationV2> -->
</ns1:pixiReportGetShippableOrdersV2>
</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:pixiReportGetShippableOrdersV2>
<!-- <ViewDetails>1</ViewDetails> -->
<!-- <IncludePartDelivery>0</IncludePartDelivery> -->
<!-- <OnlyPartDelivery>0</OnlyPartDelivery> -->
<!-- <ShopId>HOH</ShopId> -->
<!-- <IncludeOrdersWithAnyShipDate>0</IncludeOrdersWithAnyShipDate> -->
<!-- <PerLocation>0</PerLocation> -->
<!-- <UseFIFObyLocationV2>1</UseFIFObyLocationV2> -->
</ns1:pixiReportGetShippableOrdersV2>
</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 = [
// 'ViewDetails' => '1',
// 'IncludePartDelivery' => '0',
// 'OnlyPartDelivery' => '0',
// 'ShopId' => 'HOH',
// 'IncludeOrdersWithAnyShipDate' => '0',
// 'PerLocation' => '0',
// 'UseFIFObyLocationV2' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReportGetShippableOrdersV2', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReportGetShippableOrdersV2