pixiOrderSetInfo
Aktualisiert Subshop-Name, Subshop-Logo und Referrer eines Auftrags, ermittelt über Pixi-Auftragsnummer oder externe Auftragsnummer.
Setzt Informationsfelder im Kopf eines bestehenden Auftrags.
-
Auftragssuche: Die Prozedur sucht in
Orderlinesnach Zeilen, bei denenOrderNrExternalgleich@OrderNrExternaloderOrderNrgleich@OrderNrist. DieOrderNreiner passenden Zeile wird übernommen. Gibt es keinen Treffer, behält@OrderNrden übergebenen Wert. -
Prüfung: Existiert zur ermittelten
OrderNrnicht genau ein Datensatz inOrderHeader, wird eine Fehlerzeile mitErrorNr404geliefert. Es wird nichts geändert. -
Aktualisierung: Andernfalls wird der Datensatz in
OrderHeaderaktualisiert:SubShopNamewird auf@SubShopNamegesetzt,SubShopLogowird auf@SubShopLogogesetzt,Referrerwird auf@Referrergesetzt.
Ein weggelassener Parameter oder ein Parameter mit dem Wert
NULLlässt den bestehenden Wert unverändert. Damit sind Teilaktualisierungen möglich. -
Schlägt die Aktualisierung fehl, wird eine Fehlerzeile mit
ErrorNr500geliefert.
Bei Erfolg liefert der Aufruf keine Ergebnismenge.
Hinweise
- Die Suche über
@OrderNrExternalerfolgt überOrderlines, nicht überOrderHeader. Ein Auftrag ohne Auftragspositionen ist über die externe Nummer nicht auffindbar und liefert404. Die Suche nur über@OrderNrfunktioniert in diesem Fall trotzdem, weil der übergebene Wert erhalten bleibt. - Werden
@OrderNrund@OrderNrExternalgemeinsam übergeben und verweisen sie auf verschiedene Aufträge, erkennt der Code diesen Konflikt nicht, obwohl der Fehlertext das nahelegt. Die Suche übernimmt dann dieOrderNreiner der passenden Auftragspositionen; welche Zeile verwendet wird, ist nicht festgelegt. Dieser Auftrag wird aktualisiert. Es sollte nur einer der beiden Identifikatoren übergeben werden. - Die Suche liest mit
NOLOCK. - Ein Leerstring ist nicht
NULL. Er überschreibt das Feld mit einem leeren Wert. NurNULLoder ein weggelassener Parameter erhält den bestehenden Wert. - Werte mit mehr als 50 Zeichen können die Aktualisierung scheitern lassen; dann wird die Zeile
500geliefert. Ob das eintritt, hängt von den Spaltengrößen inOrderHeaderab, die im Code nicht sichtbar sind. - Die Fehlertexte sprechen von einer „Rechnung“ (invoice), der Aufruf arbeitet jedoch mit Aufträgen.
- Es wird keine explizite Transaktion geöffnet. Die Aktualisierung ist eine einzelne Anweisung.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
|
int | NULL |
Pixi-Auftragsnummer. Alternative zu Beispiel: |
OrderNrExternal
|
varchar(50) string |
NULL |
Externe Auftragsnummer, z. B. aus dem Shop. Sie wird über Beispiel: |
SubShopName
|
varchar(50) string |
NULL |
Neuer Subshop-Name. Beispiel: |
SubShopLogo
|
varchar(50) string |
NULL |
Neue Referenz auf das Subshop-Logo. Beispiel: |
Referrer
|
varchar(50) string |
NULL |
Neuer Referrer, also die Herkunft des Auftrags. Beispiel: |
Antwort
Result-Set 1 · Nur im Fehlerfall: Auftrag nicht gefunden bzw. nicht eindeutig (404) oder Aktualisierung fehlgeschlagen (500). Bei Erfolg keine Ergebnismenge.
Fehlerzeile mit Fehlernummer und Meldung.
| Spalte | Typ | Beschreibung |
|---|---|---|
ErrorNr
|
varchar(3) string |
Fehlernummer: |
ErrorMessage
|
varchar(75) string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<ErrorNr>404</ErrorNr>
<ErrorMessage>Invoice does not exist or two different invoice parameters were specified.</ErrorMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 404 | Invoice does not exist or two different invoice parameters were specified. | Die ermittelte Auftragsnummer entspricht nicht genau einem Datensatz in `OrderHeader`. Das ist der Fall, wenn kein Identifikator übergeben wurde, der Auftrag nicht existiert oder `OrderNrExternal` in `Orderlines` nicht gefunden wird. Eine gültige `OrderNr` oder `OrderNrExternal` übergeben. |
| 500 | Technical problems during update of the order information | Die Aktualisierung von `OrderHeader` hat einen Fehler ausgelöst, z. B. weil ein Wert zu lang für die Spalte ist oder eine Einschränkung verletzt wurde. Länge und Inhalt der übergebenen Werte prüfen. |
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:pixiOrderSetInfo>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100023</OrderNrExternal> -->
<!-- <SubShopName>Outlet Shop</SubShopName> -->
<!-- <SubShopLogo>outlet_logo.png</SubShopLogo> -->
<!-- <Referrer>google-ads</Referrer> -->
</ns1:pixiOrderSetInfo>
</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:pixiOrderSetInfo>
<!-- <OrderNr>123456</OrderNr> -->
<!-- <OrderNrExternal>SHOP-100023</OrderNrExternal> -->
<!-- <SubShopName>Outlet Shop</SubShopName> -->
<!-- <SubShopLogo>outlet_logo.png</SubShopLogo> -->
<!-- <Referrer>google-ads</Referrer> -->
</ns1:pixiOrderSetInfo>
</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-100023',
// 'SubShopName' => 'Outlet Shop',
// 'SubShopLogo' => 'outlet_logo.png',
// 'Referrer' => 'google-ads',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiOrderSetInfo', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiOrderSetInfo