pixiInvoiceSetTrackingIDforPolling
Setzt eine oder mehrere Sendungsverfolgungsnummern auf einer Rechnung und deren Paketen, optional mit Ersetzen bestehender Pakete und erneuter Markierung des Auftrags für den Export.
Speichert Sendungsverfolgungsnummern zu einer Rechnung. Der Aufruf liefert keine Ergebnismenge.
1. Ermitteln der Rechnung
- Die Rechnung wird in
InvoicesüberInvoiceNRgesucht. - Zusätzlich werden verkürzte Nummern geprüft. Dazu werden Suffixe nach dem letzten
-schrittweise entfernt:R1001-2-1, dannR1001-2, dannR1001. Alle passenden Nummern werden geprüft. - Wird keine Rechnung gefunden, wird nichts geändert und der Aufruf endet ohne Fehler.
2. Trennzeichen
- Ist
Separatornicht;und nicht leer, wird jedes Vorkommen inTrackingIDdurch;ersetzt. TrackingIDkann daher mehrere Sendungsverfolgungsnummern enthalten, z. B. getrennt durch,oder|.
3. Überschreiben (Overwrite = 1)
- Alle Rechnungspakete (
pixi.InvoicePackage) der Rechnung werden gelöscht, zusammen mit ihren Paketpositionen (pixi.InvoicePackageLines). - Verweise auf diese Pakete in
InvoicePollingwerden aufNULLgesetzt.
4. Setzen der Sendungsverfolgungsnummern
Die interne Prozedur Pixi_SetTrackingId wird aufgerufen. Sie zerlegt die Liste und ignoriert Nummern, die bereits in Invoices.ShipmentTrackingID stehen.
Hat die Rechnung keine Pakete mit Artikeln aus einer Packstation:
- Hat die Rechnung genau ein Paket ohne Sendungsverfolgungsnummer, erhält dieses Paket die erste neue Nummer.
- Jede weitere neue Nummer legt ein neues Paket an.
ShipmentTrackingIDder Rechnung wird aus den eindeutigen Nummern aller Pakete neu aufgebaut, sortiert und mit;getrennt.
Hat die Rechnung Pakete mit Artikeln:
- Bei genau einem Paket erhält dieses Paket die letzte neue Nummer.
- Bei mehreren Paketen bleiben die Pakete unverändert.
ShipmentTrackingIDwird zur Vereinigung aus bestehenden und neuen Nummern.
In beiden Fällen gilt für die Rechnung außerdem:
Packageswird auf die Paketanzahl gesetzt.UpdateDateundUpdateEmp(TrackingID Import) werden gesetzt.- Ein Ereignis
InvoiceChangedwird veröffentlicht.
5. Erneuter Export (ResetClientNotifiedFlag = 1)
- Für jede Auftragsposition der Rechnung wird der jüngste
OrderHistory-Eintrag mit StatusAUSermittelt. - Dessen Kennzeichen
ClientNotifiedwird aufNgesetzt. - Der Versandstatus wird dadurch erneut exportiert, nun mit Sendungsverfolgungsnummer.
Hinweise
- Transaktion: Der Aufruf läuft in einer eigenen Transaktion oder, falls bereits eine Transaktion offen ist, in einem Savepoint.
- Fehler werden nicht gemeldet: Fehler werden abgefangen und in das Pixi-Fehlerprotokoll (
log.InsertError) geschrieben. Sie werden nicht an den Aufrufer weitergegeben, ein fehlgeschlagener Aufruf sieht also wie ein erfolgreicher aus. - Unbekannte Rechnung: Eine unbekannte Rechnungsnummer wird stillschweigend ignoriert.
- Suffix-Suche: Passen bei der Suche mehrere Nummern, behält die Variablenzuweisung über ein sortiertes Ergebnis in der Regel die letzte Zeile. Das ist die kürzeste passende Nummer, z. B. die Hauptrechnung
R1001stattR1001-2. Mehrdeutige Nummern sollten vermieden werden. - Stolperfalle bei
Overwrite: Die Pakete werden gelöscht, aber bereits inInvoices.ShipmentTrackingIDgespeicherte Nummern gelten weiterhin als vorhanden und werden nicht erneut importiert. Werden solche Nummern mitOverwrite= 1 erneut übergeben, werden sie nicht als Pakete neu angelegt. Sie können ausShipmentTrackingIDverschwinden, das sogarNULLwerden kann. - Mehrere Pakete mit Artikeln: Hat die Rechnung mehrere Pakete mit Artikeln, erhält kein Paket die neuen Nummern; nur der Rechnungskopf wird aktualisiert. Die interne Prozedur empfiehlt selbst, Sendungsverfolgungsnummern pro Paket zu setzen.
- Zerlegung: Einzelne Nummern werden auf 512 Zeichen gekürzt. Die Zerlegung erfolgt über
dbo.fPixi_GetCommaSplit, das nicht beigefügt ist. - Sperrhinweise: Lesezugriffe nutzen
NOLOCK, SchreibzugriffeROWLOCK.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceNR
Pflicht
|
varchar(20) string |
– |
Rechnungsnummer. Suffixe nach Beispiel: |
TrackingID
Pflicht
|
varchar(512) string |
– |
Eine oder mehrere Sendungsverfolgungsnummern, getrennt durch Beispiel: |
Overwrite
|
bit boolean |
0 |
Bei 1 werden vor dem Setzen alle bestehenden Pakete und Paketpositionen der Rechnung gelöscht. Erlaubte Werte
Beispiel: |
ResetClientNotifiedFlag
|
bit boolean |
0 |
Bei 1 erhalten die jüngsten Erlaubte Werte
Beispiel: |
Separator
|
varchar(1) string |
; |
Zeichen, das mehrere Nummern in Beispiel: |
Antwort
Dieser Call liefert kein Result-Set.
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:pixiInvoiceSetTrackingIDforPolling>
<InvoiceNR>RE100234</InvoiceNR>
<TrackingID>00340434161094042557;00340434161094042558</TrackingID>
<!-- <Overwrite>0</Overwrite> -->
<!-- <ResetClientNotifiedFlag>1</ResetClientNotifiedFlag> -->
<!-- <Separator>;</Separator> -->
</ns1:pixiInvoiceSetTrackingIDforPolling>
</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:pixiInvoiceSetTrackingIDforPolling>
<InvoiceNR>RE100234</InvoiceNR>
<TrackingID>00340434161094042557;00340434161094042558</TrackingID>
<!-- <Overwrite>0</Overwrite> -->
<!-- <ResetClientNotifiedFlag>1</ResetClientNotifiedFlag> -->
<!-- <Separator>;</Separator> -->
</ns1:pixiInvoiceSetTrackingIDforPolling>
</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' => 'RE100234',
'TrackingID' => '00340434161094042557;00340434161094042558',
// 'Overwrite' => '0',
// 'ResetClientNotifiedFlag' => '1',
// 'Separator' => ';',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiInvoiceSetTrackingIDforPolling', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiInvoiceSetTrackingIDforPolling