pixiRemoveItemFromPicklist
Entfernt eine angegebene Menge eines per Barcode bestimmten Artikels eines Lagerplatzes von einer Pickliste und liefert eine Statuszeile.
Entfernt Picklistenpositionen für einen Artikel und einen Lagerplatz von einer Pickliste.
Ablauf:
Quantitymuss mindestens 1 sein. BeiNULLoder kleineren Werten wird ein Fehler geliefert.- Der Lagerplatz wird über seinen Namen (
BinName) inInvBinermittelt. - Der Artikel wird über seinen Barcode (
EanUpc) ermittelt. Dabei werden die Artikelcodes mit Codetyp 1 (Barcode) verwendet. - Gezählt werden die Picklistenpositionen (
PLitem-Zeilen mit verknüpfter Auftragsposition) der Pickliste für diesen Lagerplatz und Artikel. Jede Position zählt als ein Stück. - Wird keine Position gefunden, ermittelt der Aufruf den Grund und liefert einen passenden Fehler: Die Pickliste existiert nicht, die Pickliste hat keine Positionen von diesem Lagerplatz, oder der Artikel steht auf diesem Lagerplatz nicht auf der Pickliste.
- Gibt es weniger Positionen als
Quantity, wird ein Fehler geliefert und nichts gelöscht. - Andernfalls werden
QuantityPositionen entfernt, beginnend mit den neuesten Positionen (höchster Positionsschlüssel, also vom Ende der Pickliste). Bei den betroffenen Auftragspositionen wird der Picklistenbezug (PickListNrUsed) aufNULLzurückgesetzt. Alle Pickfortschritts-Einträge für diese Pickliste, diesen Artikel und Lagerplatz werden gelöscht. Danach werden zugeordnete Kisten von nun leeren Picklisten bereinigt. - Eine
SUCCESS-Zeile meldet die Anzahl der gelöschten Positionen.
Hinweise
- Das Löschen läuft in einer eigenen Transaktion oder, falls bereits eine Transaktion offen ist, in einem Savepoint. Bei einem Datenbankfehler werden die Änderungen zurückgerollt und der Fehler wird über
log.InsertErrorprotokolliert. Der Aufruf liefert in diesem Fall trotzdemSUCCESS, mit der Meldung0 items deleted from picklist.Eine Anzahl von 0 ist daher als Fehlschlag zu werten. - Gelöscht werden alle Pickfortschritts-Einträge (
PL_ItemPickingProgress) für Pickliste, Artikel und Lagerplatz, nicht nur die für die entfernte Menge. - Die Bereinigung der Kisten erfolgt über
dbo.pixi_RemoveAssignedBoxesFromEmptyPicklist. Dessen Definition liegt nicht vor, die genauen Auswirkungen sind daher hier nicht dokumentiert. - Die Abfragen und Zählungen verwenden
NOLOCK. Haben mehrere Lagerplätze denselben Namen oder mehrere Artikel denselben Barcode, ist nicht festgelegt, welcher Datensatz verwendet wird.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
PickListNr
Pflicht
|
int | – |
Nummer (Schlüssel) der Pickliste ( Beispiel: |
EanUpc
Pflicht
|
varchar(50) string |
– |
Barcode (EAN/UPC) des Artikels. Er wird mit den Artikelcodes vom Codetyp 1 (Barcode) abgeglichen. Beispiel: |
BinName
Pflicht
|
varchar(50) string |
– |
Name des Lagerplatzes, von dem der Artikel gepickt wird. Beispiel: |
Quantity
Pflicht
|
int | – |
Anzahl der zu entfernenden Picklistenpositionen (Stück). Muss mindestens 1 sein und darf die Anzahl der passenden Positionen nicht überschreiten. Beispiel: |
Antwort
Result-Set 1 · Immer; genau eine Statuszeile (Fehler oder Erfolg).
Statuszeile mit dem Ergebnis des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(10) string |
|
Message
|
varchar(max) string |
Fehlertext, bei Erfolg die Anzahl gelöschter Positionen, z. B. |
Beispielantwort
<SqlRowSet1>
<row>
<Status>SUCCESS</Status>
<Message>2 items deleted from picklist.</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Wrong quantity "{Quantity}". | `Quantity` ist `NULL` oder kleiner als 1. Eine positive Menge übergeben. |
| ERROR | Bin "{BinName}" does not exists. | Es existiert kein Lagerplatz mit dem angegebenen Namen. `BinName` prüfen. |
| ERROR | Item with barcode "{EanUpc}" does not exists. | Kein Artikel hat den angegebenen Barcode (Codetyp 1). `EanUpc` prüfen. |
| ERROR | Picklist {PickListNr} does not exists. | Es wurden keine passenden Positionen gefunden und die Pickliste existiert nicht. `PickListNr` prüfen. |
| ERROR | There are no items on picklist {PickListNr} from bin "{BinName}". | Die Pickliste existiert, hat aber keine Positionen vom angegebenen Lagerplatz. |
| ERROR | No items found on picklist {PickListNr} with barcode "{EanUpc}" from bin "{BinName}". | Die Pickliste hat Positionen von diesem Lagerplatz, aber keine für den Artikel mit diesem Barcode. |
| ERROR | There is only {Count} items on picklist {PickListNr} in the bin "{BinName}". | `Quantity` ist größer als die Anzahl passender Positionen. Es wird nichts gelöscht; höchstens die gemeldete Anzahl übergeben. |
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:pixiRemoveItemFromPicklist>
<PickListNr>12345</PickListNr>
<EanUpc>4006381333931</EanUpc>
<BinName>A-01-02-03</BinName>
<Quantity>1</Quantity>
</ns1:pixiRemoveItemFromPicklist>
</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:pixiRemoveItemFromPicklist>
<PickListNr>12345</PickListNr>
<EanUpc>4006381333931</EanUpc>
<BinName>A-01-02-03</BinName>
<Quantity>1</Quantity>
</ns1:pixiRemoveItemFromPicklist>
</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' => '12345',
'EanUpc' => '4006381333931',
'BinName' => 'A-01-02-03',
'Quantity' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiRemoveItemFromPicklist', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiRemoveItemFromPicklist