pixiDeleteDeliveryItem
Löscht eine oder mehrere Artikelpositionen aus einer Lieferantenlieferung, identifiziert über Positionsschlüssel, interne Artikelnummer oder EAN.
Entfernt Artikelpositionen (SDelDetail) aus einer Lieferantenlieferung (SDelHeader).
Bestimmung der Lieferung. Anzugeben ist entweder SDelHKey oder DeliveryNumber, die mit SDelHNr verglichen wird. Ist nur DeliveryNumber angegeben, wird der erste passende SDelHKey verwendet.
Bestimmung der Positionen. Anzugeben ist mindestens einer der Werte SDelDKey, ItemNrInternal oder EANUPC.
Prüfungen in dieser Reihenfolge:
- Eine Lieferungsreferenz oder Lieferungsnummer ist vorhanden.
- Eine Artikelkennung ist vorhanden.
- Die Lieferung ist nicht durch Picco gesperrt (
LockedByPiccoist NULL). - Der
SDelDKeyexistiert inSDelDetail, sofern angegeben. - Die
EANUPCexistiert inItems, sofern angegeben. - Die
ItemNrInternalexistiert inItems(ItemNrInt), sofern angegeben. - Die Lieferung existiert und hat nicht den Status
CLS(abgeschlossen) oderINV(berechnet).
Schlägt eine Prüfung fehl, wird ein Fehler ausgelöst und nichts gelöscht.
Löschen.
- Ist
SDelDKeyangegeben, wird genau diese Lieferposition gelöscht.ItemNrInternalundEANUPCwerden dann für das Löschen ignoriert. - Andernfalls werden alle Positionen der Lieferung gelöscht, deren Artikel zu
ItemNrInternaloderEANUPCpasst. Dabei können mehrere Positionen entfernt werden.
Der Aufruf liefert keine Ergebnismenge.
Hinweise
- Positionsschlüssel wird nicht gegen die Lieferung geprüft. Beim Löschen über
SDelDKeyprüft der Code nicht, ob die Position zur angegebenen Lieferung gehört. Status- und Sperrprüfung beziehen sich auf die übergebene Lieferung, die Position mit diesem Schlüssel wird aber auch dann gelöscht, wenn sie zu einer anderen Lieferung gehört. - Unbekannte Lieferungsnummer führt zu irreführendem Fehler. Passt
DeliveryNumberzu keiner Lieferung, bleibt der Schlüssel NULL. Der Aufruf scheitert dann mitYou cant delete items from closed or invoiced deliveries. - Artikelprüfungen sind global. Die Prüfungen von
EANUPCundItemNrInternaltesten nur, ob der Artikel inItemsexistiert. Existiert der Artikel, ist aber nicht in der Lieferung enthalten, wird nichts gelöscht und kein Fehler ausgelöst. - Beide Kennungen werden mit ODER verknüpft. Sind ohne
SDelDKeysowohlItemNrInternalals auchEANUPCangegeben, werden Positionen gelöscht, die zu einem der beiden Werte passen. - Null gilt als leer. Leere Werte werden in NULL umgewandelt. Da die Integer-Parameter mit
''verglichen werden, gilt auch der Wert0fürSDelHKey,DeliveryNumberoderSDelDKeyals nicht angegeben. - Keine Transaktion und ungesperrtes Lesen. Die Prozedur verwendet keine explizite Transaktion. Das Sperrkennzeichen
LockedByPiccowirdWITH (NOLOCK)gelesen. - Rückgabewert. Bei Fehlern gibt die Prozedur nach
RAISERRORmit Schweregrad 16 den Wert-1zurück.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SDelHKey
|
int | NULL |
Interner Schlüssel der Lieferantenlieferung ( Beispiel: |
DeliveryNumber
|
int | NULL |
Lieferungsnummer ( Beispiel: |
SDelDKey
|
int | NULL |
Schlüssel der zu löschenden Lieferposition ( Beispiel: |
ItemNrInternal
|
varchar(50) string |
NULL |
Interne Artikelnummer ( Beispiel: |
EANUPC
|
varchar(13) string |
NULL |
EAN/UPC des Artikels ( Beispiel: |
Antwort
Dieser Call liefert kein Result-Set.
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| RAISERROR | You must provide Delivery referenc or Delivery number. | Weder `SDelHKey` noch `DeliveryNumber` wurde angegeben (oder beide sind leer bzw. 0). |
| RAISERROR | You must provide item EAN, SDelDKey or ItemNrInternal. | Keiner der Werte `EANUPC`, `SDelDKey` oder `ItemNrInternal` wurde angegeben. |
| RAISERROR | Delivery is locked by pico | Die Lieferung ist durch Picco gesperrt (`LockedByPicco` ist gesetzt). Zuerst muss die Sperre aufgehoben werden. |
| RAISERROR | Item with SDelDKey {SDelDKey} does not exist. | Der angegebene `SDelDKey` existiert nicht in `SDelDetail`. |
| RAISERROR | Item with EANUPC {EANUPC} does not exist. | In `Items` existiert kein Artikel mit der angegebenen `EANUPC`. |
| RAISERROR | Item with ItemNrInternal {ItemNrInternal} does not exist. | In `Items` existiert kein Artikel mit der angegebenen internen Artikelnummer. |
| RAISERROR | You cant delete items from closed or invoiced deliveries. | Die Lieferung hat den Status `CLS` oder `INV`, oder die Lieferung wurde nicht gefunden (z. B. unbekannte `DeliveryNumber`). |
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:pixiDeleteDeliveryItem>
<!-- <SDelHKey>1542</SDelHKey> -->
<!-- <DeliveryNumber>20345</DeliveryNumber> -->
<!-- <SDelDKey>88123</SDelDKey> -->
<!-- <ItemNrInternal>ART-10045</ItemNrInternal> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
</ns1:pixiDeleteDeliveryItem>
</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:pixiDeleteDeliveryItem>
<!-- <SDelHKey>1542</SDelHKey> -->
<!-- <DeliveryNumber>20345</DeliveryNumber> -->
<!-- <SDelDKey>88123</SDelDKey> -->
<!-- <ItemNrInternal>ART-10045</ItemNrInternal> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
</ns1:pixiDeleteDeliveryItem>
</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 = [
// 'SDelHKey' => '1542',
// 'DeliveryNumber' => '20345',
// 'SDelDKey' => '88123',
// 'ItemNrInternal' => 'ART-10045',
// 'EANUPC' => '4006381333931',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDeleteDeliveryItem', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDeleteDeliveryItem