pixiSetFulfillmentOptions
Setzt den Direct-Fulfillment-Typ (DF_type) einer Auftragsposition oder aller Positionen eines Auftrags und setzt bearbeitbare Positionen auf Status ANG zurück.
Weist Auftragspositionen einen Direct-Fulfillment-Typ zu und liefert das Ergebnis je Position zurück.
- Ist
DF_Typegleich0, wird der Wert alsNULLbehandelt, d. h. der Fulfillment-Typ wird entfernt. - Die zu verarbeitenden Auftragspositionen werden gesammelt:
OrderlineKey> 0: diese einzelne Position wird aufgenommen (ohne Prüfung von Status oder Existenz).OrderNr> 0: alle Positionen dieses Auftrags, derenStatusnichtHAL(angehalten) ist, werden aufgenommen.- Beide Parameter können kombiniert werden; ist keiner > 0, wird nichts verarbeitet und eine leere Ergebnismenge geliefert.
- Jede gesammelte Position wird auf Bearbeitbarkeit geprüft. Eine Position ist nicht bearbeitbar (
IsEditable= 0), wenn- die Auftragshistorie (
OrderHistory) einen Eintrag mit einem Status außerhalb vonHAL,ANG,BES,FUT,NEWenthält oder einenFUT-Eintrag mitClientNotified=Y, oder - sie auf einer Pickliste (
PLitem/PLHeader) steht, deren AblaufdatumPLHexpiryDatein der Zukunft liegt. Andernfalls ist sie bearbeitbar (IsEditable= 1).
- die Auftragshistorie (
- Für alle bearbeitbaren Positionen wird
DF_typeauf den übergebenen Wert undStatusaufANGgesetzt. - Je gesammelter Position wird eine Zeile mit aktueller Auftragsnummer, Positionsschlüssel, Status, DF-Typ und Bearbeitbarkeitskennzeichen geliefert.
Hinweise
- Die Aktualisierung läuft in einer eigenen Transaktion bzw. als Savepoint, wenn der Aufrufer bereits eine Transaktion geöffnet hat.
- Der Status jeder bearbeitbaren Position wird unabhängig vom bisherigen Status auf
ANGgesetzt. Eine direkt überOrderlineKeyübergebene Position wird nicht aufHALgefiltert, sodass eine angehaltene Position auf diesem Weg aufANGgesetzt werden kann. - Wird dieselbe Position über
OrderlineKeyübergeben und gehört sie zuOrderNr, erscheint sie zweimal im Ergebnis. - Existiert
OrderlineKeynicht, wird eine Zeile mitNULLin allen Positionsspalten undIsEditable= 1 geliefert. - Lesezugriffe auf
Orderlines,OrderHistory,PLitemundPLHeadererfolgen mitNOLOCK; auch die Ergebnismenge wird mitNOLOCKgelesen. - Im Fehlerfall wird die Transaktion zurückgerollt, der Fehler über
log.InsertErrorprotokolliert (Definition nicht beigefügt) und statt der Ergebniszeilen eine Fehlerzeile geliefert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderlineKey
|
int | NULL |
Schlüssel einer einzelnen zu aktualisierenden Auftragsposition. Wird bei NULL oder <= 0 ignoriert. Beispiel: |
OrderNr
|
int | NULL |
Auftragsnummer; alle nicht angehaltenen ( Beispiel: |
DF_Type
|
int | NULL |
Direct-Fulfillment-Typ, der an den Positionen gesetzt wird. Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg; eine Zeile je gesammelter Position (leer, wenn kein Parameter > 0 ist)
Zustand der verarbeiteten Auftragspositionen nach der Aktualisierung.
| Spalte | Typ | Beschreibung |
|---|---|---|
OrderNr
Kann leer sein |
int |
Auftragsnummer der Position; NULL, wenn die Position nicht existiert. |
OrderlineKey
Kann leer sein |
int |
Schlüssel der Position; NULL, wenn die Position nicht existiert. |
Status
Kann leer sein |
string |
Aktueller Status der Position ( |
DF_type
Kann leer sein |
int |
Aktueller Direct-Fulfillment-Typ der Position. |
IsEditable
Kann leer sein |
bit boolean |
1, wenn die Position bearbeitbar war und aktualisiert wurde, 0, wenn sie durch Auftragshistorie oder eine aktive Pickliste gesperrt war. |
Result-Set 2 · Wenn bei der Aktualisierung ein Fehler auftritt
Fehlerzeile nach dem Rollback.
| Spalte | Typ | Beschreibung |
|---|---|---|
ErrorNr
|
int |
Fehlernummer, immer 500. |
ErrorMessage
|
varchar(71) string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<OrderNr>98765</OrderNr>
<OrderlineKey>123456</OrderlineKey>
<Status>ANG</Status>
<DF_type>1</DF_type>
<IsEditable>true</IsEditable>
</row>
<row>
<OrderNr>98765</OrderNr>
<OrderlineKey>123457</OrderlineKey>
<Status>AUS</Status>
<IsEditable>false</IsEditable>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 500 | Orderline Update failed on DB level. Please ask pixi* Support for help. | Beliebiger Datenbankfehler während der Aktualisierung oder der Ergebnisabfrage; die Transaktion wird zurückgerollt und der Fehler protokolliert. pixi*-Support kontaktieren. |
| RAISERROR | Orderline Update failed on DB level. Please ask pixi* Support for help. | Informationsmeldung (Schweregrad 0), wenn nach der Aktualisierung keine Transaktion offen ist; die Verarbeitung läuft weiter. Unter normalen Bedingungen nicht zu erwarten. |
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:pixiSetFulfillmentOptions>
<!-- <OrderlineKey>123456</OrderlineKey> -->
<!-- <OrderNr>98765</OrderNr> -->
<!-- <DF_Type>1</DF_Type> -->
</ns1:pixiSetFulfillmentOptions>
</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:pixiSetFulfillmentOptions>
<!-- <OrderlineKey>123456</OrderlineKey> -->
<!-- <OrderNr>98765</OrderNr> -->
<!-- <DF_Type>1</DF_Type> -->
</ns1:pixiSetFulfillmentOptions>
</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',
// 'OrderNr' => '98765',
// 'DF_Type' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetFulfillmentOptions', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetFulfillmentOptions