pixiGetPosInvoiceLines
Liefert die Positionen einer POS-Rechnung (Kassenbeleg) mit Artikelnummer, EAN, Bezeichnung, Menge, Preisen und Rabatt zu einer Belegnummer.
Liefert alle Positionen des POS-Belegs, dessen Belegnummer (POSheader2.PHdocNr) mit InvoiceNr übereinstimmt.
- Zuerst wird die gemeinsame API-Hülle
Pixi_ApiEnvelopeausgeführt. Sie prüft die Aufrufhäufigkeit dieser Funktion und protokolliert den Zeitpunkt des Aufrufs. - Liefert die Hülle den Ergebniscode
200, werden die POS-Positionen (POSitem2) des passenden POS-Kopfs (POSheader2) gelesen. Jede Position wird per Inner Join mit ihrem Artikel (items) verknüpft. - Jede Zeile enthält die interne Artikelnummer, die EAN, die Artikelbezeichnung, die Menge, Belegdatum und Belegnummer sowie die Preisfelder der Position. Ein fehlender Rabatt wird als
0.0geliefert.
Die Belegnummer wird exakt verglichen. Der Code legt keine Sortierung fest, die Reihenfolge der Positionen ist daher nicht garantiert. Gibt es keinen passenden POS-Beleg, wird eine leere Ergebnismenge geliefert.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK. Es können nicht festgeschriebene Daten geliefert werden. - Positionen, deren Artikel in
itemsnicht mehr existiert, werden nicht geliefert, da der Artikel per Inner Join verknüpft wird. ItemPrice_Nettowird alsPIendPrice - PIvatInPriceberechnet, also als Positionsendpreis abzüglich der darin enthaltenen MwSt.ItemPrice_Bruttostammt direkt ausPIprice. Aus dem Code geht nicht hervor, ob es sich um einen Einzel- oder Positionspreis handelt.Pixi_ApiEnvelopeschreibt den Aufrufzeitpunkt inAPI_STATISTICS. Ist inAPI_CONTROLein Mindestabstand konfiguriert und liegt der letzte Aufruf zu kurz zurück, liefert die Hülle statt der Rechnungspositionen eine Zeile mitResultCode/ResultTextund dem Code502.- Die Ausgabeparameter
ResultCodeundResultTextenthalten das Ergebnis der Hülle (200/OKbei Erfolg).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceNr
Pflicht
|
varchar(20) string |
– |
Belegnummer der POS-Rechnung ( Beispiel: |
ResultCode
OUTPUT
|
char(3) string |
NULL |
Ergebniscode der API-Hülle: Erlaubte Werte
Beispiel: |
ResultText
OUTPUT
|
varchar(1024) string |
NULL |
Ergebnistext der API-Hülle, z. B. Beispiel: |
Antwort
Result-Set 1 · Wenn die API-Hülle 200 liefert (Aufruf nicht begrenzt)
Eine Zeile je Position des POS-Belegs mit der angegebenen Nummer.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer ( |
ItemEan
Kann leer sein |
string |
EAN/UPC des Artikels ( |
ItemName
Kann leer sein |
string |
Artikelbezeichnung ( |
ItemQty
Kann leer sein |
decimal |
Menge der Position ( |
InvDate
Kann leer sein |
dateTime |
Datum des POS-Belegs ( |
InvoiceNr
Kann leer sein |
string |
Belegnummer der POS-Rechnung ( |
ItemPrice_Brutto
Kann leer sein |
decimal |
Bruttopreis der Position ( |
ItemPrice_Netto
Kann leer sein |
decimal |
Nettobetrag, berechnet als |
Discount
|
decimal |
Rabatt der Position ( |
ItemPrice_Total
Kann leer sein |
decimal |
Endpreis der Position inkl. MwSt. ( |
Result-Set 2 · Wenn die Aufrufhäufigkeit aus API_CONTROL überschritten ist (von Pixi_ApiEnvelope statt der Positionen geliefert)
Statuszeile der API-Hülle.
| Spalte | Typ | Beschreibung |
|---|---|---|
ResultCode
|
char(3) string |
In diesem Fall immer |
ResultText
|
varchar(1024) string |
Meldung zur Aufrufbegrenzung mit der verbleibenden Wartezeit in Millisekunden. |
Beispielantwort
<SqlRowSet1>
<row>
<ItemNrInt>100245</ItemNrInt>
<ItemEan>4006381333931</ItemEan>
<ItemName>Kugelschreiber blau</ItemName>
<ItemQty>2</ItemQty>
<InvDate>2024-03-15T14:32:00</InvDate>
<InvoiceNr>POS-100023</InvoiceNr>
<ItemPrice_Brutto>2.38</ItemPrice_Brutto>
<ItemPrice_Netto>4.00</ItemPrice_Netto>
<Discount>0.0</Discount>
<ItemPrice_Total>4.76</ItemPrice_Total>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 502 | ({WaitMsec}) Frequency quote exceeded. Next call to this function can be made in ca. {WaitMsec} milliseconds | Die Funktion wurde erneut aufgerufen, bevor der Mindestabstand (`MIN_BREATHING_MSEC` in `API_CONTROL`) verstrichen war. Die angegebene Anzahl Millisekunden abwarten und erneut aufrufen. |
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:pixiGetPosInvoiceLines>
<InvoiceNr>POS-100023</InvoiceNr>
<!-- <ResultCode>200</ResultCode> -->
<!-- <ResultText>OK</ResultText> -->
</ns1:pixiGetPosInvoiceLines>
</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:pixiGetPosInvoiceLines>
<InvoiceNr>POS-100023</InvoiceNr>
<!-- <ResultCode>200</ResultCode> -->
<!-- <ResultText>OK</ResultText> -->
</ns1:pixiGetPosInvoiceLines>
</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 = [
'InvoiceNr' => 'POS-100023',
// 'ResultCode' => '200',
// 'ResultText' => 'OK',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetPosInvoiceLines', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetPosInvoiceLines