Postman-Collection
Invoices Schreiben

pixiDeleteInvoicePackage

Löscht ein Versandpaket samt Paketpositionen einer Rechnung und aktualisiert Tracking-IDs und Paketanzahl der Rechnung.

Entfernt einen Paketdatensatz (pixi.InvoicePackage), der zu einer Rechnung gehört, z. B. nach dem Stornieren eines Versandlabels.

Der Aufruf führt diese Prüfungen nacheinander aus und liefert in jedem Fall genau eine Zeile mit der Spalte Response:

  1. Das Paket PackageId muss existieren. Andernfalls: 400 Bad Request - Package ID does not exist.
  2. Das Paket muss zur Rechnung InvoiceKey gehören. Andernfalls: 400 Bad Request - Invoice ID does not match the package.
  3. Die Rechnung muss mehr als ein Paket haben. Das letzte verbleibende Paket einer Rechnung kann nicht gelöscht werden: 400 Bad Request - This is the last package for invoice and delete is not allowed.

Sind alle Prüfungen erfolgreich:

  • werden alle Paketpositionen (pixi.InvoicePackageLines) des Pakets gelöscht,
  • wird das Paket selbst gelöscht,
  • wird in Invoices die Tracking-ID des Pakets inklusive folgendem ; aus ShipmentTrackingID entfernt und Packages auf die Anzahl der verbleibenden Pakete der Rechnung gesetzt,
  • wird 200 OK zurückgegeben.

Hinweise

  • Alle Änderungen laufen in einer Transaktion (bzw. einem Savepoint, falls der Aufrufer bereits eine Transaktion geöffnet hat). Bei einem SQL-Fehler werden die Änderungen zurückgerollt, der Fehler über log.InsertError protokolliert und 500 Internal Server Error als normale Zeile zurückgegeben, nicht als SqlMessage.
  • Die Existenz- und Anzahlprüfungen lesen pixi.InvoicePackage mit NOLOCK; parallele Änderungen werden ggf. nicht berücksichtigt.
  • Die Tracking-ID wird nur dann aus ShipmentTrackingID entfernt, wenn ihr ein ; folgt. Eine Tracking-ID am Ende der Liste ohne abschließendes Semikolon bleibt im Feld stehen. REPLACE entfernt jedes Vorkommen des Musters.
  • Hat das Paket keine TrackingID (NULL), liefert der REPLACE-Ausdruck NULL, wodurch ShipmentTrackingID der Rechnung auf NULL gesetzt wird.
  • Die ReturnTrackingId des Pakets wird gelesen, aber nicht aus der Rechnung entfernt.
  • Wird für InvoiceKey NULL übergeben, folgt immer die Antwort "does not match".

Parameter

Parameter Typ Standardwert Beschreibung
PackageId
Pflicht
int –

ID des zu löschenden Pakets (pixi.InvoicePackage.Id).

Beispiel: 4711

InvoiceKey
Pflicht
int –

Schlüssel der Rechnung, zu der das Paket gehört. Muss mit InvoiceId des Pakets übereinstimmen.

Beispiel: 123456

Antwort

Result-Set 1 · Immer (genau eine Zeile).

Status des Aufrufs in HTTP-ähnlicher Form.

Spalte Typ Beschreibung
Response varchar(100)
string

200 OK bei Erfolg, sonst eine Meldung 400 Bad Request - … oder 500 Internal Server Error.

Fehlermeldungen

Status Meldung Ursache
400 400 Bad Request - Package ID does not exist. Es existiert kein Paket mit der angegebenen `PackageId`. Paket-ID prüfen.
400 400 Bad Request - Invoice ID does not match the package. Das Paket gehört zu einer anderen Rechnung als `InvoiceKey`, oder `InvoiceKey` ist NULL. Den Rechnungsschlüssel des Pakets übergeben.
400 400 Bad Request - This is the last package for invoice and delete is not allowed. Die Rechnung hat nur noch dieses eine Paket; das letzte Paket einer Rechnung kann nicht gelöscht werden.
500 500 Internal Server Error Ein unerwarteter SQL-Fehler ist aufgetreten; alle Änderungen wurden zurückgerollt und der Fehler protokolliert.

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:pixiDeleteInvoicePackage>
      <PackageId>4711</PackageId>
      <InvoiceKey>123456</InvoiceKey>
    </ns1:pixiDeleteInvoicePackage>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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