Postman-Collection
Suppliers Schreiben Veraltet

pixi_CreateSDeliveryByTemplate

Legt aus einer oder mehreren bestätigten Lieferantenbestellungen eine neue Lieferantenlieferung (Status NEW) an und führt anschließend eine Abfrage der Lieferungsköpfe aus.

Veralteter Wrapper, der anhand von Lieferantenbestellungen als Vorlage einen Lieferantenlieferschein (SDelHeader / SDelDetail) anlegt. Anschließend ruft er eine seitenweise Liste der Lieferungsköpfe auf.

Schritt 1 – Lieferung anlegen (über Pixi_CreateSDeliveryByTemplate):

  1. OrderNr wird an ; getrennt. Jedes Element wird mit der internen Nummer (InternalNumber) einer Lieferantenbestellung abgeglichen.
  2. Es werden nur Lieferantenbestellungen in einem passenden Status verwendet. Das hängt von der Einstellung ConfirmOrderedDocumentOnDelivery ab:
    • 0: Bestellungen, deren Status als bestätigt markiert ist (IsConfirmed = 1).
    • 1: Bestellungen, deren Status als bestellt-bestätigt markiert ist (IsOrderedConfirmed = 1). Diese Bestellungen werden danach auf den ersten bestätigten Status gesetzt. Zusätzlich werden Bestätigungsdatum, bestätigender Benutzer, Änderungsdatum und ändernder Benutzer gesetzt.
  3. Qualifiziert sich keine Bestellung, wird nichts angelegt.
  4. Andernfalls wird ein Lieferungskopf mit folgenden Werten eingefügt:
    • Status NEW und Lager LocID
    • die Lieferantennummer einer der gefundenen Bestellungen
    • der vollständige OrderNr-String als externe Bestellnummer
    • UserName als anlegender und ändernder Mitarbeiter sowie das aktuelle Datum
  5. Für jede Bestellposition mit offener Menge > 0 wird eine Lieferposition angelegt. Die offene Menge ist Qty - DeliveredQty - UndeliveredQty.
    • Die gelieferte Menge ist 0, die bestellte Menge ist die offene Menge.
    • Lieferantenpreis und Rabatt stammen aus der Bestellposition. Ein Prozentrabatt wird direkt übernommen; ein Betragsrabatt wird pro Stück in einen Prozentwert umgerechnet.
    • End- und Mittelpreis sind Preis minus Rabattbetrag.

Schritt 2 – Listenabfrage (über Pixi_GetSDelHeaderByPage): Der Code fragt Lieferungsköpfe des Lagers LocID mit Status NEW oder INV ab (das Argument ShowInv = NULL wird zu 1). Der Aufruf übergibt Seitennummer 0, daher lautet das Zeilenfenster RowNum BETWEEN -PerPage+1 AND 0. Die zurückgegebene Ergebnismenge enthält deshalb nie Zeilen.

Die ID der neuen Lieferung wird nicht zurückgegeben.

Hinweise

  • Laut Code-Kommentar wird dieser API-Call nicht mehr gepflegt.

  • Die zurückgegebene Ergebnismenge ist immer leer, weil Seite 0 angefordert wird. Sie eignet sich nicht, um die neue Lieferung zu finden. Die Lieferungsköpfe sind separat abzufragen, z. B. über Lager, Status NEW und externe Bestellnummer.

  • Nur das Einfügen der Positionen läuft in einer Transaktion. Folgende Schritte laufen davor und werden bei einem Fehler beim Einfügen der Positionen nicht zurückgerollt:

    • die Statusänderung der Lieferantenbestellungen (Einstellung 1)
    • das Einfügen des Kopfes

    Ein Fehler kann daher einen Lieferungskopf ohne Positionen hinterlassen.

  • Hat die Einstellung ConfirmOrderedDocumentOnDelivery einen anderen Wert als 0 oder 1, qualifiziert sich keine Bestellung und es wird nichts angelegt.

  • Gehören die Bestellungen zu verschiedenen Lieferanten, erhält der Kopf die Lieferantennummer einer beliebigen Bestellung (TOP (1) ohne ORDER BY). Die Positionen aller Bestellungen werden dennoch übernommen.

  • Ist UserName NULL, verwendet die innere Prozedur TemplateFromBuying.

  • Während des Einfügens der Positionen wird CONTEXT_INFO auf 0x10005 gesetzt, um den Trigger SDelDetail_IUD zu umgehen.

  • Bestelldaten werden mit NOLOCK gelesen.

  • Die Seitengröße der Listenabfrage stammt aus der Einstellung BuyingShowPerTab (Standard 500).

  • OrderNr ist in diesem Wrapper auf 1000 Zeichen begrenzt.

Parameter

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

Interne Nummern der Lieferantenbestellungen, die als Vorlage dienen, getrennt durch ;. Der gesamte String wird zudem als externe Bestellnummer der Lieferung gespeichert.

Beispiel: 100234;100235

LocID
Pflicht
varchar(3)
string
–

Lager-ID der neuen Lieferung. Die Listenabfrage wird ebenfalls nach diesem Lager gefiltert.

Beispiel: 001

UserName
Pflicht
varchar(50)
string
–

Benutzername, der als anlegender/ändernder Mitarbeiter gespeichert wird. Er dient bei Einstellung 1 auch zur Bestätigung der Bestellungen. NULL wird zu TemplateFromBuying.

Beispiel: jdoe

Antwort

Result-Set 1 · Immer; enthält nie Zeilen, weil der Code Seite 0 anfordert.

Liste der Lieferungsköpfe des Lagers (Status NEW oder INV), erzeugt von der inneren Listenprozedur.

Spalte Typ Beschreibung
SDelHKey int

Schlüssel des Lieferungskopfes.

SDelHDate
Kann leer sein
datetime
dateTime

Lieferdatum.

SDelHLocationID
Kann leer sein
string

Lager-ID.

SDelHSupplNr
Kann leer sein
string

Lieferantennummer.

SDelHNr
Kann leer sein
string

Liefernummer.

SDelHNote
Kann leer sein
string

Notiz.

SDelHStatus
Kann leer sein
string

Status (NEW, CLS, INV).

SDelHCreateDate
Kann leer sein
datetime
dateTime

Anlagedatum.

SDelHCreateEmp
Kann leer sein
string

Anlegender Mitarbeiter.

SDelHUpdateDate
Kann leer sein
datetime
dateTime

Datum der letzten Änderung.

SDelHUpdateEmp
Kann leer sein
string

Zuletzt ändernder Mitarbeiter.

SDelHextInvoiceNr
Kann leer sein
string

Externe Rechnungsnummer.

SDelHextOrderNr
Kann leer sein
string

Externe Bestellnummer(n), durch ; getrennt.

SDelHfinalDicsount
Kann leer sein
decimal

Endrabatt der Lieferung.

PiccoUser
Kann leer sein
string

Picco-Benutzer, der die Lieferung bearbeitet.

LockedByPicco
Kann leer sein
string

Sperrkennzeichen durch Picco.

SupplName
Kann leer sein
string

Lieferantenname (Left Join).

SuppliersKey
Kann leer sein
int

Lieferantenschlüssel (Left Join).

ExternalReceiptNr
Kann leer sein
string

Externe Belegnummer.

Fehlermeldungen

Status Meldung Ursache
RAISERROR ERROR --- %s Das Einfügen der Lieferpositionen ist fehlgeschlagen; `%s` ist die ursprüngliche SQL-Fehlermeldung. Das Einfügen der Positionen wird zurückgerollt, Kopf und ggf. Statusänderungen der Bestellungen bleiben bestehen.

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:pixi_CreateSDeliveryByTemplate>
      <OrderNr>100234;100235</OrderNr>
      <LocID>001</LocID>
      <UserName>jdoe</UserName>
    </ns1:pixi_CreateSDeliveryByTemplate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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