Postman-Collection
Suppliers Schreiben Veraltet

pixiCreateSDeliveryByTemplate

Legt aus einer oder mehreren bestätigten Lieferantenbestellungen eine neue Lieferantenlieferung (Status NEW) an einem Lager an und liefert deren Kopfdaten.

Legt einen Lieferantenlieferschein (SDelHeader mit Positionen in SDelDetail) auf Basis einer oder mehrerer Lieferantenbestellungen als Vorlage an.

  1. OrderNr wird an ; in einzelne Bestellnummern zerlegt (die InternalNumber der Lieferantenbestellung, z. B. eine BES-Nummer). Führende und abschließende Leerzeichen werden entfernt.
  2. Existiert am Lager LocID bereits eine Lieferung mit Status NEW, deren SDelHextOrderNr eine der übergebenen Nummern enthält, bricht der Aufruf ab und liefert eine Zeile mit der Spalte ERROR.
  3. Andernfalls wird die interne Prozedur Pixi_CreateSDeliveryByTemplate ausgeführt:
    • Es werden nur Lieferantenbestellungen verwendet, deren Status als bestätigt gilt. Welches Statuskennzeichen geprüft wird, hängt von der Einstellung ConfirmOrderedDocumentOnDelivery ab: 0 verlangt IsConfirmed = 1, 1 verlangt IsOrderedConfirmed = 1.
    • Qualifiziert sich keine Bestellung, wird nichts angelegt.
    • Bei Einstellung 1 werden die betroffenen, noch nicht bestätigten Lieferantenbestellungen auf den bestätigten Status gesetzt (Bestätigungsdatum und -benutzer werden gesetzt).
    • Es wird ein Lieferungskopf mit Status NEW, dem angegebenen Lager, dem Lieferanten einer der Bestellungen, SDelHextOrderNr = vollständiger OrderNr-String und UserName als anlegender/ändernder Benutzer angelegt (Standard TemplateFromBuying, falls NULL).
    • Für jede Bestellposition mit offener Menge (Qty - DeliveredQty - UndeliveredQty > 0) wird eine Lieferposition mit gelieferter Menge 0, der offenen Menge als bestellter Menge, dem Lieferantenpreis sowie dem in Prozent und Endpreis umgerechneten Rabatt angelegt.
  4. Abschließend werden die Kopfdaten der angelegten Lieferung geliefert (SDelHKey, Datum, Lager, Nummer, Status, externe Bestellnummer, Lieferant).

Hinweise

  • Laut Code-Kommentar wird dieser API-Aufruf nicht mehr gepflegt.
  • Die Dublettenprüfung arbeitet mit einem Teilstring-Vergleich (CHARINDEX) auf SDelHextOrderNr: Eine Nummer wie BES100 wird auch in BES1000 gefunden, daher sind Fehlalarme möglich.
  • Qualifiziert sich keine Lieferantenbestellung (unbekannte Nummer, falscher Status oder Einstellung ConfirmOrderedDocumentOnDelivery weder 0 noch 1), wird keine Lieferung angelegt und die Ergebnismenge mit den Kopfdaten ist leer; ein Fehler wird nicht gemeldet.
  • Gehören die Bestellungen zu verschiedenen Lieferanten, erhält der Kopf den Lieferanten einer beliebigen Bestellung (TOP (1) ohne Sortierung), die Positionen aller Bestellungen werden jedoch übernommen.
  • Das Anlegen des Kopfes und die optionale Statusänderung der Lieferantenbestellungen laufen außerhalb der Transaktion; nur das Einfügen der Positionen ist transaktional. Schlägt dieses fehl, bleibt der Kopf ohne Positionen bestehen und der Fehler wird als ERROR --- <Meldung> ausgelöst.
  • Während des Einfügens der Positionen wird CONTEXT_INFO gesetzt, um den Trigger auf SDelDetail zu unterdrücken.
  • Lesezugriffe verwenden NOLOCK. Die Benutzer-ID für die Bestätigung wird über inf.UserGetByName ermittelt (nicht beigefügt).

Parameter

Parameter Typ Standardwert Beschreibung
OrderNr
Pflicht
varchar(1000)
string
–

Eine oder mehrere Nummern von Lieferantenbestellungen (InternalNumber), getrennt durch ;.

Beispiel: BES0001234;BES0001235

LocID
Pflicht
varchar(3)
string
–

Lager-ID, für die die Lieferung angelegt wird; wird auch für die Prüfung auf offene Lieferungen verwendet.

Beispiel: 001

UserName
Pflicht
varchar(50)
string
–

Benutzer, der als Ersteller/Bearbeiter der Lieferung gespeichert wird; bei NULL wird TemplateFromBuying verwendet.

Beispiel: jdoe

Antwort

Result-Set 1 · Wenn am Lager bereits eine offene Lieferung (Status NEW) eine der Bestellnummern referenziert

Fehlerzeile; der Aufruf endet, ohne etwas anzulegen.

Spalte Typ Beschreibung
ERROR varchar(52)
string

Fehlertext.

Result-Set 2 · Andernfalls; leer, wenn keine passende Lieferantenbestellung gefunden wurde

Kopfdaten der neu angelegten Lieferantenlieferung.

Spalte Typ Beschreibung
SDelHKey int

Interner Schlüssel des Lieferungskopfes.

SDelHDate
Kann leer sein
datetime
dateTime

Lieferdatum (Zeitpunkt der Anlage).

SDelHLocationID
Kann leer sein
string

Lager-ID der Lieferung.

SDelHNr
Kann leer sein
string

Lieferungsnummer (wird nicht von diesem Aufruf gesetzt, sondern von der Datenbank vergeben).

SDelHStatus
Kann leer sein
string

Status der Lieferung, nach Anlage NEW.

SDelHextOrderNr
Kann leer sein
string

Die Lieferantenbestellnummern wie in OrderNr übergeben.

SDelHSupplNr
Kann leer sein
string

Lieferantennummer der Lieferung.

Fehlermeldungen

Status Meldung Ursache
ERROR ERROR: Supplier order already has an open delivery. Am angegebenen Lager existiert bereits eine offene Lieferung mit Status `NEW`, deren `SDelHextOrderNr` eine der Bestellnummern enthält. Zuerst die bestehende Lieferung abschließen oder löschen.
RAISERROR ERROR --- %s Das Einfügen der Lieferpositionen in der internen Prozedur ist fehlgeschlagen (z. B. Constraint-Verletzung oder Divisionsfehler bei der Rabattberechnung); die ursprüngliche SQL-Fehlermeldung folgt. Der Kopf kann bereits angelegt sein.

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:pixiCreateSDeliveryByTemplate>
      <OrderNr>BES0001234;BES0001235</OrderNr>
      <LocID>001</LocID>
      <UserName>jdoe</UserName>
    </ns1:pixiCreateSDeliveryByTemplate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

SDelHeader · Schreiben SDelDetail · Schreiben SupplierOrder · Schreiben SupplierOrderStatus · Lesen SupplierOrderLine · Lesen Suppliers · Lesen
SQL-Objekt:
dbo.pipiCreateSDeliveryByTemplate
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben