Postman-Collection
Suppliers Schreiben

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.

  1. Mindestens einer der Parameter SDelHkey oder DeliveryNumber muss angegeben werden; andernfalls wird ein Fehler ausgelöst und die Prozedur gibt -1 zurück.
  2. Ist nur DeliveryNumber angegeben, wird der Lieferungsschlüssel in SDelHeader über SDelHNr ermittelt (erster Treffer, ohne definierte Sortierung). Ist SDelHkey angegeben, wird dieser verwendet und DeliveryNumber ignoriert; die beiden Werte werden nicht gegeneinander geprüft.
  3. Die Lieferung wird nur gelöscht, wenn sie
    • nicht durch Picco gesperrt ist (LockedByPicco ungleich Y) oder durch Picco für denselben in PiccoUser übergebenen Benutzer gesperrt ist, und
    • den Status NULL oder NEW hat.
  4. 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 (über DeliveryId oder DeliveryId_Assigned), werden entkoppelt: Lieferungsbezüge und SupplierId werden auf NULL, Price auf 0, QuerySource auf 7 und RecordModifiedOn auf die aktuelle Zeit gesetzt,
    • der Lieferungskopf (SDelHeader) wird gelöscht. Anschließend wird die Zeile ReturnMSG = Deleting was successfull geliefert.
  5. Andernfalls wird die Zeile ReturnMSG = Delivery Header does not exists geliefert.

Hinweise

  • Die Prüfung auf fehlende Werte verwendet ISNULL(..., ''); bei int-Parametern wird der Wert 0 wie "nicht angegeben" behandelt.
  • Die Meldung Delivery Header does not exists wird auch geliefert, wenn die Lieferung existiert, aber durch Picco für einen anderen Benutzer gesperrt ist oder einen anderen Status als NULL/NEW hat.
  • Die Vorprüfung akzeptiert den Status NULL, die interne Löschroutine löscht jedoch nur Lieferungen mit Status exakt NEW. Bei einer Lieferung mit Status NULL wird nichts gelöscht, trotzdem wird Deleting was successfull geliefert.
  • 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.InsertError protokolliert; 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 NOLOCK gelesen; Löschungen und Aktualisierungen verwenden ROWLOCK.
  • Bei der Suche über DeliveryNumber fü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 (SDelHeader.SDelHKey). Hat Vorrang vor DeliveryNumber. Dieser Wert oder DeliveryNumber ist erforderlich.

Beispiel: 15872

DeliveryNumber
int NULL

Lieferungsnummer (SDelHeader.SDelHNr). Wird zur Ermittlung des Lieferungsschlüssels verwendet, wenn SDelHkey nicht angegeben ist.

Beispiel: 40213

PiccoUser
varchar(50)
string
NULL

Picco-Benutzername. Eine durch Picco gesperrte Lieferung kann nur gelöscht werden, wenn dieser Wert dem in SDelHeader.PiccoUser gespeicherten Benutzer entspricht.

Beispiel: lager01

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

Deleting was successfull, wenn die Löschroutine ausgeführt wurde, Delivery Header does not exists, wenn keine löschbare Lieferung gefunden wurde.

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>

Verwendete Tabellen

SDelHeader · Schreiben SDelDetail · Schreiben InvBinItemLog_In_Price · Schreiben
SQL-Objekt:
dbo.pipiDeleteDelivery
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben