pixiAssignBoxesForPicklist
Ordnet einer Pickliste eine Menge von Boxen zu und ersetzt die bisherige Zuordnung, nachdem Existenz und ausreichende Anzahl der Boxen geprüft wurden.
Ersetzt die Boxenzuordnung einer Pickliste durch die als XML übergebene Liste von Boxnummern.
Ablauf:
- Liest den Lagerort (
PLHlocID) der Pickliste@PicklistNrausPLHeader. Ist@PicklistNrNULL, <= 0 oder existiert die Pickliste nicht, wird eine Fehlerzeile geliefert. - Prüft, dass
@BoxNumbersnicht NULL oder leer ist. - Wertet
@BoxNumbersals XML aus und liest alle eindeutigen Werte/BoxNumbers/BoxNrals Ganzzahlen. Wird kein Wert ungleich0gefunden, wird eine Fehlerzeile geliefert. - Sucht jede Boxnummer in
boxesam Lagerort der Pickliste (LocationID= Lagerort der Pickliste). Fehlt eine Box dort, wird eine Fehlerzeile mit den fehlenden Nummern geliefert und nichts geändert. - Ermittelt die Anzahl unterschiedlicher Aufträge auf der Pickliste (einschließlich daraus abgeteilter Picklisten über
PLHOriginalKey). Sind weniger Boxen übergeben als Aufträge vorhanden, wird eine Fehlerzeile geliefert. - In einer Transaktion:
- werden bestehende
PicklistBox-Zuordnungen der Pickliste gelöscht, deren Box nicht in der neuen Liste enthalten ist, - werden Zuordnungen für noch nicht zugeordnete Boxen der Liste angelegt (angelegt/geändert durch den über
@UserNameermittelten Benutzer), - werden
PLHfromBoxundPLHtoBoxder Pickliste auf0gesetzt.
- werden bestehende
- Liefert eine Zeile mit
Status= 1 undMessage=Success.
Das Ergebnis ist immer eine einzelne Status/Message-Zeile; Status = 0 bedeutet, dass die Prüfung fehlgeschlagen ist und keine Daten geändert wurden.
Hinweise
- Der Aufruf ersetzt die Zuordnung vollständig: Boxen, die der Pickliste aktuell zugeordnet sind, aber in
@BoxNumbersfehlen, werden entfernt. @BoxNumberswird vor der Transaktion und außerhalb der Fehlerbehandlung in XML umgewandelt. Fehlerhaftes XML oder nicht ganzzahligeBoxNr-Werte führen zu einem SQL-Konvertierungsfehler, der alsSqlMessagezurückkommt.- Eine
BoxNrmit Wert0wird nicht ignoriert, wenn weitere Nummern vorhanden sind; sie wird wie jede andere Nummer gesucht und löst in der Regel den Fehler "do not exist" aus. - Die Liste fehlender Boxen in der Fehlermeldung ist auf 100 Zeichen begrenzt (
@ErrorDetailsistvarchar(100)) und kann abgeschnitten werden. - In der Meldung "not enough boxes" wird die benötigte Anzahl in ein
VARCHARohne Längenangabe (Länge 1) umgewandelt, daher erscheint nur die erste Ziffer der Auftragsanzahl (z. B.needed 1bei 12 Aufträgen). - Wird
@UserNamenicht inUCS_USERSgefunden, wird der BenutzerpixiAdministrationverwendet. - Läuft der Aufruf innerhalb einer bestehenden Transaktion, wird ein Savepoint gesetzt und kein Commit ausgeführt.
- Bei einem Laufzeitfehler innerhalb der Transaktion werden die Änderungen zurückgerollt und der Fehler über
log.InsertErrorprotokolliert; in diesem Fall wird keineStatus-Zeile geliefert. - Lesezugriffe auf
PLHeader,PicklistBoxundboxeserfolgen mitNOLOCK.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
PicklistNr
Pflicht
|
int | – |
Schlüssel der Pickliste ( Beispiel: |
BoxNumbers
Pflicht
|
nvarchar(max) xml |
– |
XML-Dokument mit den zuzuordnenden Boxnummern ( Beispiel:
|
UserName
|
varchar(50) string |
API |
Pixi-Benutzername, der als Ersteller/Bearbeiter neuer Boxenzuordnungen gespeichert wird. Existiert der Benutzer nicht, wird Beispiel: |
Antwort
Result-Set 1 · Immer (außer bei einem Laufzeitfehler innerhalb der Transaktion oder wenn das XML nicht umgewandelt werden kann)
Statuszeile mit dem Ergebnis des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
int |
|
Message
|
varchar(1000) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<Status>1</Status>
<Message>Success</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 0 | Invalid PicklistNr provided. | `@PicklistNr` ist NULL, <= 0 oder in `PLHeader` existiert keine Pickliste mit diesem Schlüssel. Den Schlüssel einer existierenden Pickliste übergeben. |
| 0 | BoxNumbers parameter is required. | `@BoxNumbers` ist NULL oder leer. Ein XML-Dokument mit mindestens einem `BoxNr` übergeben. |
| 0 | No boxes provided in XML array. | Das XML enthält kein Element `/BoxNumbers/BoxNr` mit einem Wert ungleich 0. Elementnamen und Werte prüfen. |
| 0 | Boxes {BoxNr}, {BoxNr}, do not exist and could not be added. | Eine oder mehrere Boxnummern existieren in `boxes` nicht am Lagerort der Pickliste. Nur Boxen übergeben, die für diesen Lagerort angelegt sind. |
| 0 | There are not enough boxes (sent {NumberOfBoxes}) assigned to the picklist (needed {OrdersOnPicklist}). | Es wurden weniger unterschiedliche Boxen übergeben, als Aufträge auf der Pickliste sind. Mindestens eine Box pro Auftrag übergeben. `{OrdersOnPicklist}` zeigt nur die erste Ziffer der Anzahl. |
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:pixiAssignBoxesForPicklist>
<PicklistNr>45872</PicklistNr>
<BoxNumbers><![CDATA[<BoxNumbers><BoxNr>1001</BoxNr><BoxNr>1002</BoxNr><BoxNr>1003</BoxNr></BoxNumbers>]]></BoxNumbers>
<!-- <UserName>API</UserName> -->
</ns1:pixiAssignBoxesForPicklist>
</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:pixiAssignBoxesForPicklist>
<PicklistNr>45872</PicklistNr>
<BoxNumbers><![CDATA[<BoxNumbers><BoxNr>1001</BoxNr><BoxNr>1002</BoxNr><BoxNr>1003</BoxNr></BoxNumbers>]]></BoxNumbers>
<!-- <UserName>API</UserName> -->
</ns1:pixiAssignBoxesForPicklist>
</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 = [
'PicklistNr' => '45872',
'BoxNumbers' => '<BoxNumbers><BoxNr>1001</BoxNr><BoxNr>1002</BoxNr><BoxNr>1003</BoxNr></BoxNumbers>',
// 'UserName' => 'API',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiAssignBoxesForPicklist', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiAssignBoxesForPicklist