pixiReportShipOutPerTimeQuant
Liefert die Anzahl ausgescannter (versendeter) Rechnungen je Zeitabschnitt einstellbarer Länge in einem Zeitraum, optional für einen Shop.
Teilt den Zeitraum von startDateTime bis endDateTime in aufeinanderfolgende Abschnitte von timePeriod Stunden. Für jeden Abschnitt werden die Rechnungen gezählt, deren ScanOutdate (Ausscan-Zeitpunkt beim Versand) in den Abschnitt fällt. Je Abschnitt wird eine Zeile geliefert.
startDateTimeist standardmäßig der Beginn des aktuellen Tages (00:00),endDateTimestandardmäßig der aktuelle Zeitpunkt.timePeriodist die Abschnittslänge in Stunden und darf Nachkommastellen haben (z. B.0.5= 30 Minuten). Standard ist2. Wird ausdrücklichNULLübergeben, gilt1Stunde.- Der letzte Abschnitt endet bei
endDateTimeund kann kürzer als die übrigen sein. shopIDfiltert auf den Shop, zu dem der Kunde der Rechnung gehört (Customers.CustomerOf). Ein Leerstring (Standard) zählt die Rechnungen aller Shops.- Jeder Abschnitt erzeugt eine Zeile, auch Abschnitte mit der Anzahl
0. - Die Zeilen erscheinen in der Reihenfolge, in der die Abschnitte erzeugt wurden, also chronologisch. Die abschließende Abfrage hat allerdings kein explizites
ORDER BY.
Hinweise
- Liest
InvoicesundCustomersmitNOLOCK, die Zählungen können daher nicht festgeschriebene Daten enthalten. - Der Abschnittsfilter verwendet
BETWEEN, beide Grenzen sind also eingeschlossen. Eine Rechnung, die genau auf einer Abschnittsgrenze ausgescannt wurde, wird in zwei benachbarten Abschnitten gezählt. startTimePeriodundendTimePeriodsind Text im Standard-Datumsformat von SQL Server (z. B.Jan 15 2024 2:00PM). Sie sind minutengenau, Sekunden gehen verloren.- Die Beschriftung
endTimePerioddes letzten Abschnitts wird nicht aufendDateTimegekürzt. Sie zeigt das volle rechnerische Abschnittsende, obwohl nur bisendDateTimegezählt wird. - Die Spalte
shopIDgibt den übergebenen Parameterwert zurück; bei Zählung aller Shops ist sie ein Leerstring. - Die Abschnittsgrenzen werden durch Addition von Tagesbruchteilen als
floatberechnet, bei sehr kleinen Abschnitten kann daher eine Rundungsabweichung entstehen. - Ein
timePeriodvon0oder ein negativer Wert führt zu einer Endlosschleife, weil der Abschnittsbeginn nie fortschreitet. Es sollte immer ein positiver Wert übergeben werden. - Je Abschnitt wird eine Abfrage ausgeführt, lange Zeiträume mit kurzen Abschnitten können daher langsam sein.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
startDateTime
|
datetime dateTime |
NULL |
Beginn des ausgewerteten Zeitraums. Beispiel: |
endDateTime
|
datetime dateTime |
NULL |
Ende des ausgewerteten Zeitraums. Beispiel: |
timePeriod
|
float decimal |
2 |
Länge eines Zeitabschnitts in Stunden; Nachkommastellen sind erlaubt. Ein ausdrückliches Beispiel: |
shopID
|
varchar(3) string |
– |
Shop-Kürzel, zu dem der Kunde der Rechnung gehören muss ( Beispiel: |
Antwort
Result-Set 1 · Immer; eine Zeile je Zeitabschnitt. Leer, wenn startDateTime nicht vor endDateTime liegt.
Anzahl ausgescannter Rechnungen je Zeitabschnitt.
| Spalte | Typ | Beschreibung |
|---|---|---|
shopID
Kann leer sein |
varchar(3) string |
Wert des Parameters |
SUMShipOut
Kann leer sein |
int |
Anzahl der Rechnungen mit |
startTimePeriod
Kann leer sein |
varchar(50) string |
Abschnittsbeginn als Text im Standard-Datumsformat von SQL Server, z. B. |
endTimePeriod
Kann leer sein |
varchar(50) string |
Rechnerisches Abschnittsende als Text im selben Format. Beim letzten Abschnitt kann es nach |
Beispielantwort
<SqlRowSet1>
<row>
<shopID>ABC</shopID>
<SUMShipOut>42</SUMShipOut>
<startTimePeriod>Jan 15 2024 12:00AM</startTimePeriod>
<endTimePeriod>Jan 15 2024 1:00AM</endTimePeriod>
</row>
<row>
<shopID>ABC</shopID>
<SUMShipOut>17</SUMShipOut>
<startTimePeriod>Jan 15 2024 1:00AM</startTimePeriod>
<endTimePeriod>Jan 15 2024 2:00AM</endTimePeriod>
</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:pixiReportShipOutPerTimeQuant>
<!-- <startDateTime>2024-01-15T00:00:00</startDateTime> -->
<!-- <endDateTime>2024-01-15T18:00:00</endDateTime> -->
<!-- <timePeriod>1</timePeriod> -->
<!-- <shopID>ABC</shopID> -->
</ns1:pixiReportShipOutPerTimeQuant>
</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:pixiReportShipOutPerTimeQuant>
<!-- <startDateTime>2024-01-15T00:00:00</startDateTime> -->
<!-- <endDateTime>2024-01-15T18:00:00</endDateTime> -->
<!-- <timePeriod>1</timePeriod> -->
<!-- <shopID>ABC</shopID> -->
</ns1:pixiReportShipOutPerTimeQuant>
</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 = [
// 'startDateTime' => '2024-01-15T00:00:00',
// 'endDateTime' => '2024-01-15T18:00:00',
// 'timePeriod' => '1',
// 'shopID' => 'ABC',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiReportShipOutPerTimeQuant', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiReportShipOutPerTimeQuant