Postman-Collection
Shipping Schreiben

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 über InvoiceNR gesucht.
  • Zusätzlich werden verkürzte Nummern geprüft. Dazu werden Suffixe nach dem letzten - schrittweise entfernt: R1001-2-1, dann R1001-2, dann R1001. Alle passenden Nummern werden geprüft.
  • Wird keine Rechnung gefunden, wird nichts geändert und der Aufruf endet ohne Fehler.

2. Trennzeichen

  • Ist Separator nicht ; und nicht leer, wird jedes Vorkommen in TrackingID durch ; ersetzt.
  • TrackingID kann 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 InvoicePolling werden auf NULL gesetzt.

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.
  • ShipmentTrackingID der 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.
  • ShipmentTrackingID wird zur Vereinigung aus bestehenden und neuen Nummern.

In beiden Fällen gilt für die Rechnung außerdem:

  • Packages wird auf die Paketanzahl gesetzt.
  • UpdateDate und UpdateEmp (TrackingID Import) werden gesetzt.
  • Ein Ereignis InvoiceChanged wird veröffentlicht.

5. Erneuter Export (ResetClientNotifiedFlag = 1)

  • Für jede Auftragsposition der Rechnung wird der jüngste OrderHistory-Eintrag mit Status AUS ermittelt.
  • Dessen Kennzeichen ClientNotified wird auf N gesetzt.
  • 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 R1001 statt R1001-2. Mehrdeutige Nummern sollten vermieden werden.
  • Stolperfalle bei Overwrite: Die Pakete werden gelöscht, aber bereits in Invoices.ShipmentTrackingID gespeicherte Nummern gelten weiterhin als vorhanden und werden nicht erneut importiert. Werden solche Nummern mit Overwrite = 1 erneut übergeben, werden sie nicht als Pakete neu angelegt. Sie können aus ShipmentTrackingID verschwinden, das sogar NULL werden 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, Schreibzugriffe ROWLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
InvoiceNR
Pflicht
varchar(20)
string
–

Rechnungsnummer. Suffixe nach - werden schrittweise entfernt, falls die vollständige Nummer nicht existiert.

Beispiel: RE100234

TrackingID
Pflicht
varchar(512)
string
–

Eine oder mehrere Sendungsverfolgungsnummern, getrennt durch Separator.

Beispiel: 00340434161094042557;00340434161094042558

Overwrite
bit
boolean
0

Bei 1 werden vor dem Setzen alle bestehenden Pakete und Paketpositionen der Rechnung gelöscht.

Erlaubte Werte

  • 0 – Bestehende Pakete behalten und neue Nummern ergänzen.
  • 1 – Bestehende Pakete vorher löschen.

Beispiel: 0

ResetClientNotifiedFlag
bit
boolean
0

Bei 1 erhalten die jüngsten AUS-Einträge der Auftragshistorie der berechneten Positionen ClientNotified = N und werden erneut exportiert.

Erlaubte Werte

  • 0 – Auftragshistorie nicht ändern.
  • 1 – Versandstatus für erneuten Export markieren.

Beispiel: 1

Separator
varchar(1)
string
;

Zeichen, das mehrere Nummern in TrackingID trennt. Es wird intern in ; umgewandelt.

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>

Verwendete Tabellen

Invoices · Schreiben InvoicePackage · Schreiben InvoicePackageLines · Schreiben InvoicePolling · Schreiben OrderHistory · Schreiben Invlines · Lesen
SQL-Objekt:
dbo.pipiInvoiceSetTrackingIDforPolling
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben