pixiDeleteOrderline
Löscht eine Auftragsposition (bzw. das gesamte Bundle, zu dem sie gehört) und entfernt den Auftrag, wenn keine Positionen mehr übrig sind.
Löscht die über OrderlineKey angegebene Auftragsposition innerhalb einer Transaktion.
- Prüfung: Die Position muss in
Orderlinesexistieren und einen der StatusHAL,ANG,STO,NLBoderFUThaben. Andernfalls wird eineERROR-Zeile geliefert und nichts geändert. - Bundle-Behandlung: Hat die Position eine
BundleOrderlineRef, wird das gesamte Bundle gelöscht, nicht nur die angegebene Position. - Status-Rücksetzung: Die Position (bzw. alle Positionen des Bundles) desselben Auftrags ohne
BoxNrwerden auf StatusNEWmitUpdateEmp=APIgesetzt. - Löschung: Alle betroffenen Positionen im Status
NEWwerden vom Auftrag gelöst:OrderNr,CustRef,AddrRef,ShipAdrRef,Qty, Preise, Rabatte undShipCostwerden auf 0 gesetzt,ItemRef,ShipRef,Order_IdundBundleOrderlineRefauf NULL. Der Bundle-Kopf inBundleOrderlineswird gelöscht, sofern er den StatusNEWhat. Reservierungen (Reservation) der betroffenen Positionen werden gelöscht. - Leerer Auftrag: Hat der Auftrag danach keine Positionen mehr, wird der Auftragskopf samt seinen Einträgen in
PL_NotReservedOrdersCheck,TagMatchundOrderHeaderAttributegelöscht.
Der Aufruf liefert genau eine Zeile mit ReturnCode (OK oder ERROR) und einem Text in ErrorMessage. Bei Bundles nennt der Erfolgstext sowohl die angegebene Position als auch den Bundle-Schlüssel.
Hinweise
- Alle Änderungen laufen in einer Transaktion; bei einem vom Aufruf abgefangenen Fehler wird sie zurückgerollt und eine
ERROR-Zeile geliefert. - Die Positionszeilen werden nicht physisch gelöscht. Sie werden zurückgesetzt (
OrderNr= 0 usw.); laut Code-Kommentar entfernt ein Job sie über Nacht. Dieser Job ist nicht Teil des Aufrufs. - Die Statusprüfung verwendet
NOLOCKund kann daher nicht festgeschriebene Daten lesen. - Trigger auf
OrderlinesundReservationwerden während Update/Delete überCONTEXT_INFOunterdrückt. - Nur die angegebene Position wird auf einen zulässigen Status geprüft. Bei Bundles werden alle übrigen Komponenten ohne
BoxNrunabhängig von ihrem Status aufNEWgesetzt und gelöscht. Positionen mit gesetzterBoxNrbehalten ihren Status und werden nicht gelöscht. - Die aufgerufenen Unterprozeduren fangen eigene Fehler ab und protokollieren sie über
log.InsertError, ohne sie weiterzugeben. Je nach Transaktionszustand erscheint ein Fehler darin als Transaktionszähler-Fehler in derERROR-Zeile, oder der Aufruf meldetOK, obwohl der Teilschritt auf seinen Savepoint zurückgerollt wurde.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderlineKey
Pflicht
|
int | – |
Schlüssel der zu löschenden Auftragsposition. Sie muss den Status Beispiel: |
Antwort
Result-Set 1 · Immer; eine Zeile mit ReturnCode = OK bei Erfolg oder ERROR bei einem Fehler.
Statuszeile des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(5) string |
|
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Erfolgstext (nennt das Bundle, wenn ein ganzes Bundle gelöscht wurde) oder die SQL-Fehlermeldung. |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>OK</ReturnCode>
<ErrorMessage>Orderline with OrderlineKey 123456 has been deleted successfully.</ErrorMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Orderline with OrderlineKey {OrderlineKey} does not exist or doesn't have the right status (HAL, ANG, STO, NLB, FUT). | Es existiert keine Position mit diesem Schlüssel, oder ihr Status ist nicht `HAL`, `ANG`, `STO`, `NLB` oder `FUT`. Schlüssel und aktuellen Status der Position prüfen. |
| ERROR | {ERROR_MESSAGE()} | Jeder andere SQL-Fehler während der Verarbeitung (z. B. ein Transaktionszähler-Fehler nach einer fehlschlagenden Unterprozedur). Die Transaktion wird zurückgerollt. |
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:pixiDeleteOrderline>
<OrderlineKey>123456</OrderlineKey>
</ns1:pixiDeleteOrderline>
</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:pixiDeleteOrderline>
<OrderlineKey>123456</OrderlineKey>
</ns1:pixiDeleteOrderline>
</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',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDeleteOrderline', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDeleteOrderline