pixiGetUpdatedInvoices
Liefert die Rechnungen, die nach einem Zeitpunkt angelegt oder geändert wurden (einschließlich Änderungen an Rechnungspositionen), optional mit Paging und Zahlungsartfilter.
Der Aufruf dient der Delta-Synchronisation von Rechnungen.
- Wird
Sincenicht übergeben, gilt der Beginn des aktuellen Tages (00:00 Uhr). Ein leererPaymentTypewird wieNULLbehandelt. - Kandidaten werden aus drei Quellen gesammelt, jeweils beschränkt auf einen
InvoiceKeygrößer alsOffSet:- Rechnungen, deren
CreateDatenachSinceliegt, - Rechnungen, deren
UpdateDatenachSinceliegt, - Rechnungspositionen (
Invlines), derenUpdateDatenachSinceliegt; Kandidat ist die zugehörige Rechnung.
- Rechnungen, deren
- Die Kandidaten werden je Rechnung gruppiert.
UpdateDateim Ergebnis ist der späteste der zutreffenden Zeitstempel. - Ist
PaymentTypegesetzt, bleiben nur Rechnungen mit dieser Zahlungsart. - Die Liste wird aufsteigend nach
InvoiceKeysortiert und aufRowsRechnungen begrenzt (0= keine Begrenzung). - Für jede verbleibende Rechnung liefert der Aufruf Schlüssel, Rechnungsnummer, Änderungsdatum, Shop (
CustomerOfdes Kunden) sowie Zahlungsartcode und -text, sortiert nachInvoiceKey.
Paging: den höchsten InvoiceKey der vorherigen Seite als OffSet mit demselben Since übergeben, um die nächste Seite abzurufen.
Hinweise
- Alle Tabellen werden
WITH (NOLOCK)gelesen; nicht festgeschriebene Änderungen können sichtbar sein. - Der Vergleich mit
Sinceist strikt (>); genau zum ZeitpunktSincegeänderte Datensätze werden nicht geliefert. UpdateDateberücksichtigt nur Zeitstempel nachSinceund ist damit die späteste Änderung im angefragten Zeitraum.- Die Begrenzung
Rows(überSET ROWCOUNT) greift vor den Joins aufCustomersundPayments. Rechnungen ohne passenden Kunden oder Zahlungsartcode fallen danach heraus, sodass eine Seite weniger alsRowsZeilen enthalten kann, obwohl weitere Daten existieren. Paging daher mit dem höchsten geliefertenInvoiceKeyfortsetzen, bis keine Zeilen mehr kommen. - Nur die abschließende Abfrage ist in eine Fehlerbehandlung eingebettet; bei einem unerwarteten Fehler wird eine Statuszeile geliefert und die Prozedur gibt
3zurück, sonst0. - Temporäre Tabellen werden mit
util.TempTableDropaufgeräumt (Definition nicht beigefügt).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Since
|
datetime dateTime |
NULL |
Es werden nur Rechnungen geliefert, die nach diesem Zeitpunkt angelegt oder geändert wurden (inklusive Positionen). Beispiel: |
Rows
|
int | 0 |
Maximale Anzahl Rechnungen pro Aufruf (Seitengröße). Beispiel: |
PaymentType
|
varchar(1) string |
NULL |
Optionaler Zahlungsartcode ( Beispiel: |
OffSet
|
int | -1 |
Paging-Offset: es werden nur Rechnungen mit einem Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg
Eine Zeile je geänderter Rechnung, aufsteigend nach InvoiceKey sortiert.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvoiceKey
|
int |
Interner Schlüssel der Rechnung. |
InvoiceNr
Kann leer sein |
string |
Rechnungsnummer. |
UpdateDate
Kann leer sein |
datetime dateTime |
Spätester Anlage- oder Änderungszeitpunkt der Rechnung oder einer ihrer Positionen nach |
ShopID
Kann leer sein |
string |
Shop des Kunden ( |
PaymentCode
Kann leer sein |
string |
Zahlungsartcode der Rechnung. |
PaymentText
Kann leer sein |
string |
Bezeichnung der Zahlungsart aus |
Result-Set 2 · Bei einem unerwarteten Fehler beim Lesen des Ergebnisses
Statuszeile mit der Fehlerbeschreibung; die Prozedur gibt 3 zurück.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
Kann leer sein |
nvarchar(4000) string |
Fehlertext inklusive der SQL-Server-Fehlermeldung. |
Beispielantwort
<SqlRowSet1>
<row>
<InvoiceKey>10452</InvoiceKey>
<InvoiceNr>RE2024-010452</InvoiceNr>
<UpdateDate>2024-05-02T09:14:33</UpdateDate>
<ShopID>SHOP1</ShopID>
<PaymentCode>V</PaymentCode>
<PaymentText>Vorkasse</PaymentText>
</row>
<row>
<InvoiceKey>10457</InvoiceKey>
<InvoiceNr>RE2024-010457</InvoiceNr>
<UpdateDate>2024-05-02T11:02:10</UpdateDate>
<ShopID>SHOP1</ShopID>
<PaymentCode>R</PaymentCode>
<PaymentText>Rechnung</PaymentText>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Unexpected error while getting the values. ({ERROR_MESSAGE}) | Beim Lesen der Ergebniszeilen oder beim Löschen der temporären Tabellen ist ein unerwarteter SQL-Fehler aufgetreten. Die ursprüngliche SQL-Server-Meldung ist enthalten; Daten prüfen und erneut versuchen. |
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:pixiGetUpdatedInvoices>
<!-- <Since>2024-05-01T00:00:00</Since> -->
<!-- <Rows>500</Rows> -->
<!-- <PaymentType>V</PaymentType> -->
<!-- <OffSet>-1</OffSet> -->
</ns1:pixiGetUpdatedInvoices>
</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:pixiGetUpdatedInvoices>
<!-- <Since>2024-05-01T00:00:00</Since> -->
<!-- <Rows>500</Rows> -->
<!-- <PaymentType>V</PaymentType> -->
<!-- <OffSet>-1</OffSet> -->
</ns1:pixiGetUpdatedInvoices>
</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 = [
// 'Since' => '2024-05-01T00:00:00',
// 'Rows' => '500',
// 'PaymentType' => 'V',
// 'OffSet' => '-1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetUpdatedInvoices', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetUpdatedInvoices