pixiSupplierOrderChangeStatus
Ändert den Status einer oder mehrerer Lieferantenbestellungen über die interne Prozedur pixi.SupplierOrderChangeStatus und liefert eine Statuszeile.
Setzt einen neuen Status (ChangeStatusIdTo) für Lieferantenbestellungen.
- Benutzerermittlung: Ist
UserIdnicht angegeben, wird die Benutzer-ID anhand vonUserNameinUCS_USERSermittelt. Existiert der Name nicht, wird die ID des BenutzerspixiAdministrationverwendet. - Auswahl der Bestellungen: Die Bestellungen werden über einen dieser Parameter bestimmt:
SupplierOrderId: ID einer einzelnen Lieferantenbestellung. Der Wert0wird wieNULLbehandelt.SupplierOrderIds: Liste von Lieferantenbestellungs-IDs, die unverändert an die interne Prozedur übergeben wird.SupplierOrderNR: wird nur verwendet, wennSupplierOrderIdundSupplierOrderIdsbeide leer sind. Ermittelt wird die Lieferantenbestellung mit dieserInternalNumber. Passen mehrere Bestellungen, wird die mit der höchstenIdverwendet.- Ist keiner der drei Parameter angegeben, liefert der Aufruf
Invalid parameters.
- Statusprüfung: Ist
ChangeStatusIdTo=3(bestätigt, CON), muss die einzelne Bestellung inSupplierOrderIdden Status2(bestellt, BES) haben. Andernfalls wird eine Fehlerzeile geliefert. - Statusänderung: Der Aufruf führt
pixi.SupplierOrderChangeStatusübersp_executesqlaus. Übergeben werden Benutzer-ID, Zielstatus, die einzelne ID und die ID-Liste. - Der Aufruf liefert eine Zeile mit
ReturnCode=Success. Tritt ein Fehler auf, enthält die ZeileERRORund die Fehlermeldung.
Hinweise
- Die eigentliche Statusänderung erfolgt in
pixi.SupplierOrderChangeStatus, deren Definition nicht vorliegt. Daher sind unbekannt: die genaue Logik, die geschriebenen Tabellen, die gültigen Zielstatus-IDs, das erwartete Format vonSupplierOrderIds(vermutlich kommagetrennt) und eventuelle eigene Ergebnismengen. - Die CON/BES-Prüfung gilt nur für
SupplierOrderId, auch für die überSupplierOrderNRermittelte ID. Bestellungen, die nur inSupplierOrderIdsübergeben werden, werden hier nicht geprüft. - Findet
SupplierOrderNRkeine Bestellung, wird kein Fehler geliefert. Der Aufruf läuft mit leerer ID weiter. - Die Statusprüfung liest
SupplierOrdermitNOLOCK. - Der Aufruf läuft in einer eigenen Transaktion. Besteht beim Aufrufer bereits eine offene Transaktion, wird stattdessen ein Savepoint verwendet. Bei einem Fehler wird auf diesen Punkt zurückgerollt. Eine nicht mehr commitfähige Transaktion kann bei diesem Rollback einen weiteren Fehler auslösen.
AppNameist deklariert, wird aber nicht verwendet.UserNamehat keinen Standardwert und muss immer übergeben werden, auch wennUserIdangegeben ist.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
AppName
Pflicht
|
varchar(255) string |
– |
Name der aufrufenden Anwendung. Wird im Code nicht verwendet. Beispiel: |
UserId
|
int | NULL |
ID des Benutzers, der die Änderung durchführt. Bei Beispiel: |
UserName
Pflicht
|
varchar(50) string |
– |
Benutzername, über den die Benutzer-ID ermittelt wird, wenn Beispiel: |
ChangeStatusIdTo
Pflicht
|
int | – |
ID des Zielstatus. Beispiel: |
SupplierOrderId
|
int | NULL |
ID einer einzelnen Lieferantenbestellung. Beispiel: |
SupplierOrderIds
|
varchar(8000) string |
– |
Liste von Lieferantenbestellungs-IDs für eine Massenänderung, unverändert an Beispiel: |
SupplierOrderNR
|
int | NULL |
Interne Nummer ( Beispiel: |
Antwort
Result-Set 1 · Immer, genau eine Statuszeile (Erfolg oder Fehler)
Statuszeile des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(7) string |
|
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Fehlertext. Bei Erfolg |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>Success</ReturnCode>
<ErrorMessage/>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Invalid parameters | Weder `SupplierOrderId` noch `SupplierOrderIds` noch `SupplierOrderNR` wurde angegeben. Mindestens einen davon übergeben. |
| ERROR | Status confirmed (CON) can only be set when order has status ordered (BES) | `ChangeStatusIdTo` = 3 wurde angefordert, die Lieferantenbestellung hat aber nicht den Status 2 (bestellt). Die Bestellung zuerst auf bestellt setzen. |
| ERROR | {ERROR_MESSAGE()} | In `pixi.SupplierOrderChangeStatus` ist ein SQL-Fehler aufgetreten, z. B. ein ungültiger Statusübergang. Die Meldung wird durchgereicht und die Änderungen werden 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:pixiSupplierOrderChangeStatus>
<AppName>MyWarehouseTool</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<ChangeStatusIdTo>3</ChangeStatusIdTo>
<!-- <SupplierOrderId>4711</SupplierOrderId> -->
<!-- <SupplierOrderIds>4711,4712,4713</SupplierOrderIds> -->
<!-- <SupplierOrderNR>100234</SupplierOrderNR> -->
</ns1:pixiSupplierOrderChangeStatus>
</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:pixiSupplierOrderChangeStatus>
<AppName>MyWarehouseTool</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<ChangeStatusIdTo>3</ChangeStatusIdTo>
<!-- <SupplierOrderId>4711</SupplierOrderId> -->
<!-- <SupplierOrderIds>4711,4712,4713</SupplierOrderIds> -->
<!-- <SupplierOrderNR>100234</SupplierOrderNR> -->
</ns1:pixiSupplierOrderChangeStatus>
</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' => 'MyWarehouseTool',
// 'UserId' => '12',
'UserName' => 'jdoe',
'ChangeStatusIdTo' => '3',
// 'SupplierOrderId' => '4711',
// 'SupplierOrderIds' => '4711,4712,4713',
// 'SupplierOrderNR' => '100234',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderChangeStatus', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderChangeStatus