Postman-Collection
Invoices Schreiben

pixiInvoiceSetTrackingID

Setzt oder ergänzt Sendungsverfolgungsnummern (Tracking-IDs) einer Rechnung und ihrer Pakete, optional mit Überschreiben und Zurücksetzen des Kundenbenachrichtigungs-Flags.

Ordnet einer Rechnung (Invoices.ShipmentTrackingID) und ihren Paketen (pixi.InvoicePackage) eine oder mehrere Tracking-IDs zu.

  1. Rechnungssuche: InvoiceNR wird mit Invoices.InvoiceNr abgeglichen. Enthält die Nummer -, werden die Suffixe nach dem letzten - schrittweise entfernt und auch alle gekürzten Varianten geprüft (z. B. RE1000-2-1 → RE1000-2 → RE1000). Verwendet werden nur tatsächlich vorhandene Rechnungsnummern.
  2. Trennzeichen: Ist Separator weder ; noch leer, wird jedes Vorkommen in TrackingID durch ; ersetzt. Intern dient immer ; als Trennzeichen.
  3. Wird keine Rechnung gefunden, wird die Zeile InvoiceNR is not existing geliefert und nichts geändert.
  4. Wird die Rechnung gefunden, wird zuerst die Zeile InvoiceNR found and Updated geliefert. Danach:
    • Overwrite = 1: Invoices.ShipmentTrackingID wird geleert. Alle Pakete der Rechnung ohne Paketpositionen werden von InvoicePolling gelöst (InvoicePackageId = NULL). Pakete ohne Paketpositionen werden gelöscht, mit Ausnahme des Pakets mit der kleinsten Id.
    • Die interne Prozedur Pixi_SetTrackingId wird ausgeführt. Sie zerlegt die Tracking-IDs, ignoriert bereits an der Rechnung gespeicherte IDs und verteilt die neuen IDs auf Pakete:
      • Hat kein Paket Paketpositionen aus einer Packstation, erhält ein einzelnes vorhandenes Paket mit leerer Tracking-ID die erste neue ID. Alle weiteren neuen IDs werden als neue Pakete angelegt; existiert kein solches Paket, gilt das für alle neuen IDs. ShipmentTrackingID der Rechnung wird anschließend aus allen eindeutigen Paket-Tracking-IDs neu gebildet, sortiert und mit ; getrennt.
      • Gibt es Pakete mit Paketpositionen und genau ein Paket, erhält dieses Paket die letzte neue ID. Bei mehreren Paketen bleiben die Pakete unverändert. ShipmentTrackingID wird zur Vereinigung aus vorhandenen und neuen IDs.
      • Invoices.Packages wird auf die Anzahl der Pakete gesetzt, UpdateDate und UpdateEmp (TrackingID Import) werden aktualisiert. Ein Ereignis InvoiceChanged wird veröffentlicht.
    • ResetClientNotifiedFlag = 1: Für alle Auftragspositionen der Rechnung erhält der jeweils jüngste OrderHistory-Eintrag mit Status AUS den Wert ClientNotified = 'N'. Der Versand wird damit samt Tracking-ID erneut an Kunde bzw. Shop gemeldet.

Hinweise

  • Die Prozedur läuft in einer eigenen Transaktion bzw. in einem Savepoint, wenn bereits eine Transaktion offen ist.
  • Fehler werden verschluckt: Sie werden abgefangen, die Transaktion wird zurückgerollt und der Fehler über log.InsertError protokolliert. An den Aufrufer wird kein Fehler gemeldet. Da die Meldung InvoiceNR found and Updated vor den Änderungen selektiert wird, kann sie auch dann geliefert werden, wenn alle Änderungen zurückgerollt wurden.
  • Auflösung der Rechnungsnummer: Passen mehrere Varianten (z. B. RE1000-1 und RE1000), wird durch die sortierte Variablenzuweisung typischerweise die kürzeste passende Nummer verwendet. Zur Vermeidung von Mehrdeutigkeiten sollte die exakte Rechnungsnummer übergeben werden.
  • Overwrite setzt die Tracking-ID des verbleibenden Pakets (kleinste Id) nicht zurück. Hat dieses Paket bereits eine Tracking-ID, werden die neuen IDs als zusätzliche Pakete angelegt. Die alte ID erscheint erneut in ShipmentTrackingID, da dieses Feld aus allen Paketen neu gebildet wird.
  • Overwrite löst InvoicePolling-Zeilen auch vom verbleibenden Paket, sofern dieses keine Paketpositionen hat.
  • Pakete mit Paketpositionen werden nie gelöscht. Gibt es mehrere solcher Pakete, werden die Paket-Tracking-IDs gar nicht geändert; nur das Feld an der Rechnung wird ergänzt. Die interne Prozedur weist selbst darauf hin, dass Tracking-IDs besser pro Paket gesetzt werden sollten.
  • Tracking-IDs werden jeweils auf 512 Zeichen gekürzt. Die Zerlegung erfolgt über dbo.fPixi_GetCommaSplit, die Benutzerermittlung über inf.UserGetByName und die Ereignisveröffentlichung über dbo.Pixi_MQ_EventPublish. Deren Definitionen liegen nicht vor.
  • Lesezugriffe verwenden NOLOCK, Updates ROWLOCK.

Parameter

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

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

Beispiel: RE1004711

TrackingID
Pflicht
varchar(8000)
string
–

Eine oder mehrere Tracking-IDs, getrennt durch Separator. Jede ID wird auf 512 Zeichen gekürzt.

Beispiel: 00340434161094042557;00340434161094042564

Overwrite
bit
boolean
0

Bei 1 wird das Tracking-Feld der Rechnung geleert, und Pakete ohne Paketpositionen (außer dem ersten) werden gelöscht, bevor die neuen IDs gesetzt werden.

Erlaubte Werte

  • 0 – Neue Tracking-IDs zu den vorhandenen hinzufügen
  • 1 – Vorhandene Tracking-IDs ersetzen (Einschränkungen siehe Hinweise)

Beispiel: 0

ResetClientNotifiedFlag
bit
boolean
0

Bei 1 wird der jüngste AUS-Eintrag der Auftragshistorie jeder Auftragsposition der Rechnung auf ClientNotified = 'N' gesetzt, damit der Versand erneut exportiert wird.

Erlaubte Werte

  • 0 – Auftragshistorie unverändert lassen
  • 1 – Kundenbenachrichtigungs-Flag des letzten Versandstatus zurücksetzen

Beispiel: 1

Separator
varchar(1)
string
;

Trennzeichen in TrackingID. Es wird intern in ; umgewandelt; ein leerer Wert bedeutet ;.

Beispiel: ,

Antwort

Result-Set 1 · Immer, eine Zeile (sofern vor der Suche kein Fehler auftritt)

Statusmeldung, ob die Rechnung gefunden wurde.

Spalte Typ Beschreibung
ReturnMessage varchar(27)
string

InvoiceNR found and Updated oder InvoiceNR is not existing

Fehlermeldungen

Status Meldung Ursache
ReturnMessage InvoiceNR is not existing Weder die angegebene Rechnungsnummer noch eine ihrer Varianten ohne `-`-Suffix existiert in `Invoices`. Rechnungsnummer prüfen.

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:pixiInvoiceSetTrackingID>
      <InvoiceNR>RE1004711</InvoiceNR>
      <TrackingID>00340434161094042557;00340434161094042564</TrackingID>
      <!-- <Overwrite>0</Overwrite> -->
      <!-- <ResetClientNotifiedFlag>1</ResetClientNotifiedFlag> -->
      <!-- <Separator>,</Separator> -->
    </ns1:pixiInvoiceSetTrackingID>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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