Orderlines
Schreiben
pixiCancelOrder
Storniert alle offenen Auftragspositionen eines Auftrags, indem ihr Status auf `STO` (storniert) oder `NLB` (nicht lieferbar) gesetzt wird.
Setzt den Status der Auftragspositionen des Auftrags OrderNr auf den Wert von Status.
- Ist
Statusleer oderNULL, wirdSTOverwendet. - Nur
STOundNLBsind zulässig. Bei jedem anderen Wert wird eine Zeile mitErrorMessagegeliefert und nichts geändert. - Ausgewählt werden die Auftragspositionen des Auftrags, die alle folgenden Bedingungen erfüllen:
- der aktuelle Status der Position ist kein Endstatus (
OrderStates.FinalState = 'Y'); - keine Auftragsposition des Auftrags ist in
BoxItemsreferenziert; - keine Auftragsposition des Auftrags ist in
InvLinesreferenziert.
- der aktuelle Status der Position ist kein Endstatus (
- Die ausgewählten Positionen erhalten den neuen
Status.UpdateDatewird auf die aktuelle Zeit undUpdateEmpaufAPIgesetzt. - Wurde mindestens eine Position geändert, wird eine Zeile mit
SuccessfulMessagegeliefert. Wurde keine Position geändert, liefert der Aufruf keine Ergebnismenge; der Rückgabewert der Prozedur ist dann1(bei Erfolg0).
Hinweise
- Auftragsweite Prüfung: Die Kommentare im Code deuten eine Prüfung pro Position an. Die Unterabfragen auf
BoxItemsundInvLinessind jedoch nur über die Auftragsnummer korreliert. Ist irgendeine Position des Auftrags bereits in einer Kiste oder auf einer Rechnung, wird keine Position storniert, nicht nur diese eine Position. - Positionen in einem Endstatus werden übersprungen. Ein erneuter Aufruf für einen bereits stornierten Auftrag liefert daher in der Regel keine Zeilen.
- Wurde nichts geändert, wird keine Meldung geliefert (z. B. unbekannter Auftrag, alle Positionen im Endstatus, Positionen bereits in Kisten oder auf Rechnungen). Eine fehlende Zeile
SuccessfulMessageist als „nicht storniert“ zu werten. - Die Auswahl liest mit
NOLOCK; das Update verwendetROWLOCK. Es gibt keine explizite Transaktion. - Geändert wird nur der Status der Auftragspositionen. Auftragskopf und Reservierungen werden von dieser Prozedur nicht direkt angepasst.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
Pflicht
|
int | – |
Nummer des Auftrags, dessen Auftragspositionen storniert werden ( Beispiel: |
Status
|
varchar(3) string |
STO |
Neuer Status für die Auftragspositionen. Leer oder Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn Status weder STO noch NLB ist
Fehlerzeile bei ungültigem Statuswert.
| Spalte | Typ | Beschreibung |
|---|---|---|
ErrorMessage
|
varchar(30) string |
Fester Text |
Result-Set 2 · Wenn mindestens eine Auftragsposition geändert wurde
Erfolgszeile.
| Spalte | Typ | Beschreibung |
|---|---|---|
SuccessfulMessage
|
varchar(31) string |
Fester Text |
Beispielantwort
<SqlRowSet1>
<row>
<SuccessfulMessage>Order was successfully canceled</SuccessfulMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Only status STO or NLB allowed | `Status` enthält einen anderen Wert als `STO` oder `NLB`. `STO` oder `NLB` senden oder den Parameter weglassen. |
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:pixiCancelOrder>
<OrderNr>123456</OrderNr>
<!-- <Status>STO</Status> -->
</ns1:pixiCancelOrder>
</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:pixiCancelOrder>
<OrderNr>123456</OrderNr>
<!-- <Status>STO</Status> -->
</ns1:pixiCancelOrder>
</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 = [
'OrderNr' => '123456',
// 'Status' => 'STO',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCancelOrder', $soapArguments);
Verwendete Tabellen
Orderlines · Schreiben
OrderStates · Lesen
BoxItems · Lesen
InvLines · Lesen
- SQL-Objekt:
- dbo.pipiCancelOrder
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben