pixiDeleteDelivery
Löscht eine Lieferantenlieferung (Kopf und Positionen) im Status NEW, identifiziert über Lieferungsreferenz oder Lieferungsnummer.
Löscht eine Lieferantenlieferung aus SDelHeader zusammen mit ihren Positionen in SDelDetail.
- Mindestens einer der Parameter
SDelHkeyoderDeliveryNumbermuss angegeben werden; andernfalls wird ein Fehler ausgelöst und die Prozedur gibt-1zurück. - Ist nur
DeliveryNumberangegeben, wird der Lieferungsschlüssel inSDelHeaderüberSDelHNrermittelt (erster Treffer, ohne definierte Sortierung). IstSDelHkeyangegeben, wird dieser verwendet undDeliveryNumberignoriert; die beiden Werte werden nicht gegeneinander geprüft. - Die Lieferung wird nur gelöscht, wenn sie
- nicht durch Picco gesperrt ist (
LockedByPiccoungleichY) oder durch Picco für denselben inPiccoUserübergebenen Benutzer gesperrt ist, und - den Status
NULLoderNEWhat.
- nicht durch Picco gesperrt ist (
- Sind diese Bedingungen erfüllt, läuft die interne Löschroutine:
- alle Lieferpositionen (
SDelDetail) der Lieferung werden gelöscht, - Einträge in
InvBinItemLog_In_Price, die auf die Lieferung verweisen (überDeliveryIdoderDeliveryId_Assigned), werden entkoppelt: Lieferungsbezüge undSupplierIdwerden aufNULL,Priceauf0,QuerySourceauf7undRecordModifiedOnauf die aktuelle Zeit gesetzt, - der Lieferungskopf (
SDelHeader) wird gelöscht. Anschließend wird die ZeileReturnMSG=Deleting was successfullgeliefert.
- alle Lieferpositionen (
- Andernfalls wird die Zeile
ReturnMSG=Delivery Header does not existsgeliefert.
Hinweise
- Die Prüfung auf fehlende Werte verwendet
ISNULL(..., ''); beiint-Parametern wird der Wert0wie "nicht angegeben" behandelt. - Die Meldung
Delivery Header does not existswird auch geliefert, wenn die Lieferung existiert, aber durch Picco für einen anderen Benutzer gesperrt ist oder einen anderen Status alsNULL/NEWhat. - Die Vorprüfung akzeptiert den Status
NULL, die interne Löschroutine löscht jedoch nur Lieferungen mit Status exaktNEW. Bei einer Lieferung mit StatusNULLwird nichts gelöscht, trotzdem wirdDeleting was successfullgeliefert. - Das interne Löschen läuft in einer eigenen Transaktion (bzw. einem Savepoint, falls bereits eine Transaktion offen ist). Fehler werden abgefangen, zurückgerollt und über
log.InsertErrorprotokolliert; sie werden nicht an den Aufrufer weitergegeben, und die Erfolgsmeldung wird dennoch geliefert. Das Ergebnis sollte bei Bedarf geprüft werden. - Lieferung und Positionen werden vor dem Löschen mit
NOLOCKgelesen; Löschungen und Aktualisierungen verwendenROWLOCK. - Bei der Suche über
DeliveryNumberführt eine mehrfach vorhandene Nummer dazu, dass eine beliebige Lieferung gewählt wird.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SDelHkey
|
int | NULL |
Interner Schlüssel der Lieferantenlieferung ( Beispiel: |
DeliveryNumber
|
int | NULL |
Lieferungsnummer ( Beispiel: |
PiccoUser
|
varchar(50) string |
NULL |
Picco-Benutzername. Eine durch Picco gesperrte Lieferung kann nur gelöscht werden, wenn dieser Wert dem in Beispiel: |
Antwort
Result-Set 1 · Immer, außer wenn der Fehler wegen fehlender Lieferungsreferenz und -nummer ausgelöst wird.
Eine Statuszeile mit der Ergebnismeldung.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnMSG
|
varchar(31) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<ReturnMSG>Deleting was successfull</ReturnMSG>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| RAISERROR | You must provide Delivery referenc or Delivery number. | Weder `SDelHkey` noch `DeliveryNumber` wurde angegeben (oder beide sind `0`). Mindestens einen der beiden Werte übergeben. |
| ReturnMSG | Delivery Header does not exists | Es existiert keine Lieferung mit dem angegebenen Schlüssel bzw. der Nummer, oder sie ist durch Picco für einen anderen Benutzer gesperrt, oder ihr Status ist weder `NULL` noch `NEW`. |
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:pixiDeleteDelivery>
<!-- <SDelHkey>15872</SDelHkey> -->
<!-- <DeliveryNumber>40213</DeliveryNumber> -->
<!-- <PiccoUser>lager01</PiccoUser> -->
</ns1:pixiDeleteDelivery>
</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:pixiDeleteDelivery>
<!-- <SDelHkey>15872</SDelHkey> -->
<!-- <DeliveryNumber>40213</DeliveryNumber> -->
<!-- <PiccoUser>lager01</PiccoUser> -->
</ns1:pixiDeleteDelivery>
</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' => '15872',
// 'DeliveryNumber' => '40213',
// 'PiccoUser' => 'lager01',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDeleteDelivery', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDeleteDelivery