pixiCancelOrderline
Storniert eine einzelne Auftragsposition oder eine ganze Bundle-Position oder setzt sie auf nicht lieferbar (`STO`/`NLB`), sofern sie nicht final, verpackt oder berechnet ist.
Setzt den Status einer Auftragsposition oder einer Bundle-Position samt aller zugehörigen Auftragspositionen auf STO (storniert) oder NLB (nicht lieferbar).
Statusist standardmäßigSTO; ein leerer Wert oder NULL wird ebenfalls alsSTObehandelt.- Der Wert
0fürOrderlineKeyoderBundleOrderlineKeygilt als nicht übergeben. Fehlen beide Schlüssel, wird eine Fehlerzeile geliefert. - Wird nur
OrderlineKeyübergeben und gehört diese Auftragsposition zu einer vorhandenen Bundle-Position (BundleOrderlineRef), wechselt der Aufruf auf diese Bundle-Position. Verarbeitet wird dann das gesamte Bundle, nicht nur die einzelne Position. - Ist ein Bundle-Schlüssel bekannt (übergeben oder ermittelt), wird
OrderlineKeyignoriert. Verarbeitet werden alle Auftragspositionen mit diesemBundleOrderlineRef. - Aktualisiert werden nur Auftragspositionen, die alle folgenden Bedingungen erfüllen:
- ihr aktueller Status ist kein Endstatus in
OrderStates(FinalState = 'Y') - sie liegen in keiner Box (
boxitems) - sie stehen auf keiner Rechnungsposition (
Invlines)
- ihr aktueller Status ist kein Endstatus in
- Die ausgewählten Auftragspositionen erhalten den neuen
Status,UpdateEmp = 'API'und das aktuelle Datum alsUpdateDate. Die zugehörigen Bundle-Positionen werden ebenso aktualisiert. - Bei Erfolg wird eine Zeile mit
SuccessfulMessagegeliefert. Der Text hängt davon ab, ob eine einzelne Auftragsposition oder ein Bundle storniert wurde.
Ist Status weder STO noch NLB oder erfüllt keine Auftragsposition die Bedingungen, wird eine Zeile mit ErrorMessage geliefert.
Hinweise
- Die Meldung
ONLY Status STO or NLB Allowedwird auch geliefert, wenn der Status gültig ist, aber keine Auftragsposition die Bedingungen erfüllt. Das ist der Fall, wenn der Schlüssel nicht existiert oder alle Positionen final, verpackt oder berechnet sind. Der Text ist in diesem Fall irreführend. - Bei Bundles werden nur die passenden Auftragspositionen aktualisiert. Die Bundle-Position selbst erhält den neuen Status trotzdem, sobald mindestens eine ihrer Positionen passt. Verpackte, berechnete oder finale Positionen behalten ihren bisherigen Status.
- Erfolgs- und Fehlermeldung kommen in unterschiedlich benannten Spalten (
ErrorMessagebzw.SuccessfulMessage). Clients sollten prüfen, welche Spalte vorhanden ist. - Die Prüfungen lesen mit
NOLOCK. Die beiden Updates laufen ohne explizite Transaktion. - Der Rückgabewert der Prozedur (0/1) ist nicht Teil der Ergebniszeilen.
- Der Statuswert wird so geschrieben, wie er übergeben wurde. Der Vergleich mit
STO/NLBhängt von der Collation der Datenbank ab.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderlineKey
|
int | NULL |
Schlüssel der zu stornierenden Auftragsposition. Beispiel: |
Status
|
varchar(3) string |
STO |
Neuer Status für die Auftragspositionen. Leer oder NULL bedeutet Erlaubte Werte
Beispiel: |
BundleOrderlineKey
|
int | NULL |
Schlüssel der Bundle-Position, deren Auftragspositionen storniert werden. Ist er gesetzt, wird Beispiel: |
Antwort
Result-Set 1 · Bei Fehler: kein Schlüssel übergeben, ungültiger Status oder keine passende Auftragsposition
Einzelne Zeile mit dem Fehlertext.
| Spalte | Typ | Beschreibung |
|---|---|---|
ErrorMessage
|
varchar(43) string |
Fehlermeldung. |
Result-Set 2 · Bei Erfolg (mindestens eine Auftragsposition aktualisiert)
Einzelne Zeile mit dem Bestätigungstext.
| Spalte | Typ | Beschreibung |
|---|---|---|
SuccessfulMessage
|
varchar(70) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<SuccessfulMessage>Orderline was successfully canceled</SuccessfulMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | ERROR: No orderline or bundle key was sent! | Weder `OrderlineKey` noch `BundleOrderlineKey` wurde übergeben (oder beide sind 0). Mindestens einen Schlüssel übergeben. |
| ERROR | ONLY Status STO or NLB Allowed | `Status` ist weder `STO` noch `NLB`. Dieselbe Meldung erscheint auch, wenn keine Auftragsposition passt: Der Schlüssel existiert nicht, oder die Positionen sind final, in einer Box verpackt oder bereits berechnet. |
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:pixiCancelOrderline>
<!-- <OrderlineKey>123456</OrderlineKey> -->
<!-- <Status>STO</Status> -->
<!-- <BundleOrderlineKey>7890</BundleOrderlineKey> -->
</ns1:pixiCancelOrderline>
</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:pixiCancelOrderline>
<!-- <OrderlineKey>123456</OrderlineKey> -->
<!-- <Status>STO</Status> -->
<!-- <BundleOrderlineKey>7890</BundleOrderlineKey> -->
</ns1:pixiCancelOrderline>
</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 = [
// 'OrderlineKey' => '123456',
// 'Status' => 'STO',
// 'BundleOrderlineKey' => '7890',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCancelOrderline', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCancelOrderline