pixiSupplierOrderLineUpdate
Aktualisiert Lieferantenpreis, voraussichtliches Lieferdatum und Kommentar einer Lieferantenbestellposition.
Aktualisiert eine einzelne Lieferantenbestellposition, die über SupplierOrderLineId bestimmt wird. Die eigentliche Änderung erfolgt in der internen Prozedur pixi.SupplierOrderLineUpdate, die mit ReturnUpdatedIds = 1 aufgerufen wird.
Ablauf:
- Startet eine Transaktion oder setzt einen Savepoint, falls beim Aufruf bereits eine Transaktion offen ist.
- Ermittelt den Benutzer: Ist
UserIdangegeben, wird dieser Wert direkt verwendet; andernfalls wird der Benutzer überUserNamemitinf.UserGetByNamegesucht. Existiert der Benutzername nicht, wird der BenutzerpixiAdministrationverwendet. - Normalisiert die Eingabewerte:
SupplierPrice: Ein Wert, der einem Leerstring entspricht, wird zuNULL.EstimatedDeliveryDate: Der Zeitanteil wird entfernt, nur das Datum wird weitergegeben.Comment: Ein Leerstring wird zuNULL.
- Ruft
pixi.SupplierOrderLineUpdatemit Benutzer, Positions-ID und den drei Werten auf. - Bestätigt die selbst gestartete Transaktion.
Bei einem Fehler wird die Transaktion bzw. der Savepoint zurückgerollt und eine Zeile mit ReturnCode = ERROR und der SQL-Fehlermeldung geliefert.
Hinweise
- Die interne Prozedur
pixi.SupplierOrderLineUpdateliegt nicht vor. Welche Tabellen sie ändert, wieNULL-Werte behandelt werden (z. B. obNULL"unverändert lassen" bedeutet) und die genauen Spalten der Erfolgs-Ergebnismenge (angefordert überReturnUpdatedIds = 1) lassen sich aus diesem Code nicht ableiten. - Stolperfalle:
SupplierPriceist einmoney-Wert, der mit einem Leerstring verglichen wird; SQL Server wandelt den Leerstring in0um. Ein Preis von0wird daher zuNULLund kann nicht explizit gesetzt werden. - Ebenso wird ein leerer
CommentzuNULL; ein Kommentar lässt sich mit einem Leerstring daher möglicherweise nicht löschen. EstimatedDeliveryDatewird auf das Datum gekürzt; ein Zeitanteil geht verloren.AppNameist Pflicht, wird im Code aber nicht verwendet.UserNameist Pflicht, wird aber nur ausgewertet, wennUserIdnicht angegeben ist.- Verwendet eine benannte Transaktion bzw. einen Savepoint und kann daher innerhalb einer äußeren Transaktion laufen; im Fehlerfall wird nur die eigene Arbeit zurückgerollt (sofern die Transaktion nicht unbrauchbar ist).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
AppName
Pflicht
|
varchar(255) string |
– |
Name der aufrufenden Anwendung. Pflicht, wird im Code aber nicht verwendet. Beispiel: |
UserId
|
int | NULL |
ID des Pixi-Benutzers, der die Änderung durchführt. Fehlt der Wert, wird der Benutzer über Beispiel: |
UserName
Pflicht
|
varchar(50) string |
– |
Pixi-Benutzername. Wird nur verwendet, wenn Beispiel: |
SupplierOrderLineId
Pflicht
|
int | – |
ID der zu aktualisierenden Lieferantenbestellposition. Beispiel: |
SupplierPrice
|
money decimal |
NULL |
Neuer Lieferanten-(Einkaufs-)preis der Position. Der Wert Beispiel: |
EstimatedDeliveryDate
|
datetime dateTime |
NULL |
Neues voraussichtliches Lieferdatum. Der Zeitanteil wird entfernt. Beispiel: |
Comment
|
nvarchar(2000) string |
NULL |
Neuer Kommentar zur Position. Ein Leerstring wird zu Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg (geliefert von der internen Prozedur pixi.SupplierOrderLineUpdate mit ReturnUpdatedIds = 1)
Ergebnis der internen Update-Prozedur, vermutlich die IDs der aktualisierten Datensätze. Die Spalten sind im vorliegenden Code nicht sichtbar.
Result-Set 2 · Im Fehlerfall
Statuszeile mit der Fehlermeldung nach dem Rollback.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(5) string |
Immer |
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
SQL-Fehlermeldung des aufgetretenen Fehlers. |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>ERROR</ReturnCode>
<ErrorMessage>Supplier order line 45871 not found.</ErrorMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | {ERROR_MESSAGE()} | Jeder Fehler bei der Benutzerermittlung oder in `pixi.SupplierOrderLineUpdate` (z. B. ungültige Positions-ID oder verletzte Geschäftsregel). Die Meldung ist der ursprüngliche SQL-Fehlertext; Positions-ID und Werte vor einem erneuten Versuch 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:pixiSupplierOrderLineUpdate>
<AppName>MyShopConnector</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<SupplierOrderLineId>45871</SupplierOrderLineId>
<!-- <SupplierPrice>12.50</SupplierPrice> -->
<!-- <EstimatedDeliveryDate>2024-07-15T00:00:00</EstimatedDeliveryDate> -->
<!-- <Comment>Supplier confirmed delivery for week 29</Comment> -->
</ns1:pixiSupplierOrderLineUpdate>
</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:pixiSupplierOrderLineUpdate>
<AppName>MyShopConnector</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<SupplierOrderLineId>45871</SupplierOrderLineId>
<!-- <SupplierPrice>12.50</SupplierPrice> -->
<!-- <EstimatedDeliveryDate>2024-07-15T00:00:00</EstimatedDeliveryDate> -->
<!-- <Comment>Supplier confirmed delivery for week 29</Comment> -->
</ns1:pixiSupplierOrderLineUpdate>
</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 = [
'AppName' => 'MyShopConnector',
// 'UserId' => '12',
'UserName' => 'jdoe',
'SupplierOrderLineId' => '45871',
// 'SupplierPrice' => '12.50',
// 'EstimatedDeliveryDate' => '2024-07-15T00:00:00',
// 'Comment' => 'Supplier confirmed delivery for week 29',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderLineUpdate', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderLineUpdate