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:
- Das Paket
PackageIdmuss existieren. Andernfalls:400 Bad Request - Package ID does not exist. - Das Paket muss zur Rechnung
InvoiceKeygehören. Andernfalls:400 Bad Request - Invoice ID does not match the package. - 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
Invoicesdie Tracking-ID des Pakets inklusive folgendem;ausShipmentTrackingIDentfernt undPackagesauf die Anzahl der verbleibenden Pakete der Rechnung gesetzt, - wird
200 OKzurü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.InsertErrorprotokolliert und500 Internal Server Errorals normale Zeile zurückgegeben, nicht alsSqlMessage. - Die Existenz- und Anzahlprüfungen lesen
pixi.InvoicePackagemitNOLOCK; parallele Änderungen werden ggf. nicht berücksichtigt. - Die Tracking-ID wird nur dann aus
ShipmentTrackingIDentfernt, wenn ihr ein;folgt. Eine Tracking-ID am Ende der Liste ohne abschließendes Semikolon bleibt im Feld stehen.REPLACEentfernt jedes Vorkommen des Musters. - Hat das Paket keine
TrackingID(NULL), liefert derREPLACE-Ausdruck NULL, wodurchShipmentTrackingIDder Rechnung auf NULL gesetzt wird. - Die
ReturnTrackingIddes Pakets wird gelesen, aber nicht aus der Rechnung entfernt. - Wird für
InvoiceKeyNULL übergeben, folgt immer die Antwort "does not match".
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
PackageId
Pflicht
|
int | – |
ID des zu löschenden Pakets ( Beispiel: |
InvoiceKey
Pflicht
|
int | – |
Schlüssel der Rechnung, zu der das Paket gehört. Muss mit Beispiel: |
Antwort
Result-Set 1 · Immer (genau eine Zeile).
Status des Aufrufs in HTTP-ähnlicher Form.
| Spalte | Typ | Beschreibung |
|---|---|---|
Response
|
varchar(100) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<Response>200 OK</Response>
</row>
</SqlRowSet1>
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>
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:pixiDeleteInvoicePackage>
<PackageId>4711</PackageId>
<InvoiceKey>123456</InvoiceKey>
</ns1:pixiDeleteInvoicePackage>
</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 = [
'PackageId' => '4711',
'InvoiceKey' => '123456',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDeleteInvoicePackage', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDeleteInvoicePackage