pixiSetOrderShippingInformation
Setzt Versanddienstleister sowie DHL-Produkt, -Verfahren und -Extras im Auftragskopf eines Auftrags, ermittelt über Pixi-Auftragsnummer oder externe Auftragsnummer.
Aktualisiert die Versandinformationen eines Auftrags in OrderHeader.
- Der Auftrag wird über
OrderNr = @OrderNr OR OrderNrExternal = @OrderNrExternalgesucht. Wird kein Auftrag gefunden (auch wenn beide Parameter NULL sind), wird eine Zeile mitStatus400 geliefert und nichts geändert. - Wird ein Auftrag gefunden, wird die Auftragszeile mit
UPDLOCK, ROWLOCKgelesen.OrderNrundOrderNrExternalwerden aus dem gespeicherten Auftrag übernommen. Jeder der WerteShipVendor,DHLProdukt,DHLVerfahrenundDHLExtra, der als NULL übergeben oder weggelassen wird, behält seinen bisherigen Wert (ShipVendorCode,Product,Verfahren,Extras). - Der Auftrag wird über seine
OrderNraktualisiert. Die Änderung läuft in einer eigenen Transaktion oder, falls der Aufrufer bereits eine Transaktion geöffnet hat, in einem Savepoint. - Die Prozedur liefert eine Statuszeile mit den aktuellen Werten des Auftrags:
Status200 mitData updated in pixi, wenn eine Zeile aktualisiert wurde.Status500 mitData could not be updated in pixi, wenn keine Zeile aktualisiert wurde, z. B. wegen eines SQL-Fehlers.
Hinweise
- Ein Wert kann mit diesem Aufruf nicht auf NULL zurückgesetzt werden: NULL bedeutet "bisherigen Wert behalten". Ein Leerstring wird als solcher gespeichert.
- Da die Suche mit
ORarbeitet, können bei Übergabe vonOrderNrundOrderNrExternalzwei verschiedene Aufträge gefunden werden, oder eine externe Nummer kann mehrere Aufträge treffen. Dann werden die Variablen aus einer der gefundenen Zeilen ohne definierte Reihenfolge belegt, und nur dieser Auftrag wird geändert. Daher nur einen Identifikator übergeben. - SQL-Fehler werden abgefangen, die Transaktion (bzw. der Savepoint) wird zurückgerollt und der Fehler über
log.InsertErrorprotokolliert (Definition nicht beigefügt). Es wird keineSqlMessagegeliefert; der Aufrufer erhält nurStatus500. Ist die Transaktion nicht mehr commitfähig, wird ein vollständigesROLLBACKausgeführt, das auch eine äußere Transaktion des Aufrufers zurückrollt. - Die Existenzprüfung und die abschließende Statuszeile lesen
OrderHeadermitNOLOCK. - Die Spaltentypen von
Product,VerfahrenundExtrassind im Code nicht sichtbar; zu lange Werte führen zu einem Fehler und damit zuStatus500.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
|
int | NULL |
Pixi-Auftragsnummer des zu ändernden Auftrags. Dieser Wert oder Beispiel: |
OrderNrExternal
|
varchar(50) string |
NULL |
Externe Auftragsnummer (z. B. aus dem Shop), über die der Auftrag gefunden wird, wenn Beispiel: |
ShipVendor
|
varchar(3) string |
NULL |
Versanddienstleister-Code, der in Beispiel: |
DHLProdukt
|
varchar(50) string |
NULL |
DHL-Produkt, das in Beispiel: |
DHLVerfahren
|
varchar(50) string |
NULL |
DHL-Verfahren, das in Beispiel: |
DHLExtra
|
varchar(50) string |
NULL |
DHL-Extras, die in Beispiel: |
Antwort
Result-Set 1 · Immer; eine Statuszeile (200 bei Erfolg, 500 wenn keine Zeile geändert wurde, 400 wenn der Auftrag nicht gefunden wurde).
Statuszeile mit den aktuellen Versandinformationen des Auftrags. Bei Status 400 sind alle Auftragsspalten NULL.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
int |
200 = aktualisiert, 500 = nicht aktualisiert, 400 = Auftrag nicht gefunden.EOF |
Message
|
varchar(33) string |
Statustext. |
OrderNr
Kann leer sein |
int |
Pixi-Auftragsnummer. |
OrderNrExternal
Kann leer sein |
string |
Externe Auftragsnummer. |
ShipVendor
Kann leer sein |
string |
Aktueller Versanddienstleister-Code ( |
DHLProdukt
Kann leer sein |
string |
Aktuelles DHL-Produkt ( |
DHLVerfahren
Kann leer sein |
string |
Aktuelles DHL-Verfahren ( |
DHLExtra
Kann leer sein |
string |
Aktuelle DHL-Extras ( |
Beispielantwort
<SqlRowSet1>
<row>
<Status>200</Status>
<Message>Data updated in pixi</Message>
<OrderNr>123456</OrderNr>
<OrderNrExternal>SHOP-100234</OrderNrExternal>
<ShipVendor>DHL</ShipVendor>
<DHLProdukt>V01PAK</DHLProdukt>
<DHLVerfahren>01</DHLVerfahren>
<DHLExtra>Premium</DHLExtra>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 400 | Order could not be found in pixi | Kein Auftrag passt zu `OrderNr` oder `OrderNrExternal`, oder beide wurden leer gelassen. Eine existierende Auftragsnummer übergeben. |
| 500 | Data could not be updated in pixi | Die Änderung hat keine Zeile betroffen, meist wegen eines SQL-Fehlers (z. B. zu langer Wert für die Spalte, Sperr-Timeout); der Fehler wird über `log.InsertError` protokolliert und die Änderung 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:pixiSetOrderShippingInformation>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
<!-- <ShipVendor>DHL</ShipVendor> -->
<!-- <DHLProdukt>V01PAK</DHLProdukt> -->
<!-- <DHLVerfahren>01</DHLVerfahren> -->
<!-- <DHLExtra>Premium</DHLExtra> -->
</ns1:pixiSetOrderShippingInformation>
</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:pixiSetOrderShippingInformation>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
<!-- <ShipVendor>DHL</ShipVendor> -->
<!-- <DHLProdukt>V01PAK</DHLProdukt> -->
<!-- <DHLVerfahren>01</DHLVerfahren> -->
<!-- <DHLExtra>Premium</DHLExtra> -->
</ns1:pixiSetOrderShippingInformation>
</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',
// 'OrderNrExternal' => 'SHOP-100234',
// 'ShipVendor' => 'DHL',
// 'DHLProdukt' => 'V01PAK',
// 'DHLVerfahren' => '01',
// 'DHLExtra' => 'Premium',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetOrderShippingInformation', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetOrderShippingInformation