Postman-Collection
Suppliers Schreiben

pixiSupplierOrderCreate

Legt eine Lieferantenbestellung oder Vorbestellung aus einem XML-Dokument für einen Lieferanten, Liefer- und Bestelllager an.

Legt eine Lieferantenbestellung (Type = 1) oder eine Vorbestellung (Type = 2) an. Die eigentliche Anlage übernimmt die interne Prozedur pixi.SupplierOrderCreate. Dieser Wrapper löst die Eingabewerte auf und bereitet die Rückgabe auf.

Ablauf:

  1. Jeder Type außer 2 wird als 1 behandelt.
  2. Bei Lieferantenbestellungen (Type = 1) muss OrderConsiderationStartDate leer sein. Andernfalls wird eine Fehlerzeile geliefert und nichts angelegt.
  3. Eine Transaktion wird gestartet. Besteht bereits eine äußere Transaktion, wird stattdessen ein Savepoint gesetzt.
  4. UserId wird aus UserName ermittelt, falls nicht angegeben. Bei unbekanntem Benutzernamen wird auf den Benutzer pixiAdministration zurückgegriffen.
  5. Der Lieferant wird über SupplierId (Suppliers.SuppliersKey) ermittelt, oder über SupplierNr (SupplNr), wenn SupplierId NULL ist.
  6. Lieferlager und Bestelllager werden über ihren Schlüssel (DeliveryLocationId, OrderLocationId) ermittelt, oder über das Lagerkürzel LocID (DeliveryLocation, OrderLocation), wenn der Schlüssel NULL ist. Eine angegebene, aber nicht existierende ID ergibt NULL. Auf das Kürzel wird dann nicht ausgewichen.
  7. Die Eingabewerte werden normalisiert:
    • ConsiderPackageUnits und ConsiderMinOrderQty: NULL wird zu 0.
    • EstimatedDeliveryDate und OrderConsiderationStartDate: Der Zeitanteil wird entfernt.
    • ExternalCode: Ein Leerstring wird zu NULL.
  8. pixi.SupplierOrderCreate wird mit dem Bestelldokument SupplOrderDocument und allen aufgelösten Werten ausgeführt.
  9. Bei ShowDetailedReturn = 1 wird eine Detail-Ergebnismenge geliefert. Sie enthält je Artikelzeile der Eingabe eine Zeile und zeigt, wie die Zeile zugeordnet wurde. Der Status ist einer der Werte OK, Item not found, Item does not have the correct supplier assigned oder Item number supplier is missing for the item. Die Zeile enthält außerdem die angelegte Bestellung und Bestellposition, sofern vorhanden. Bei ShowDetailedReturn = 0 wird die innere Prozedur stattdessen angewiesen, die angelegten IDs zurückzugeben.
  10. Hat der Aufruf eine eigene Transaktion geöffnet, wird sie committet. Nach dem Commit wird eine ReturnCode/ErrorMessage-Zeile geliefert, falls Lieferant, Lieferlager oder Bestelllager nicht aufgelöst werden konnten.

Hinweise

  • Aufbau von SupplOrderDocument und die eigentlichen Inserts sind in pixi.SupplierOrderCreate definiert, das nicht vorliegt. XML-Struktur, die Ergebnismenge mit den angelegten IDs und die geschriebenen Tabellen lassen sich aus diesem Code nicht ableiten. Die Detailrückgabe deutet darauf hin, dass Zeilen Artikel über die interne Artikelnummer (Abgleich mit pixi.ItemCode mit CodeTypeId = 2), die Lieferantenartikelnummer oder die Artikel-ID identifizieren.
  • Lieferant und Lager werden erst nach Ausführung der inneren Prozedur und dem Commit geprüft. Deren Prüfmeldung garantiert daher nicht, dass nichts geschrieben wurde.
  • Läuft der Aufruf in einer äußeren Transaktion, wird keine Prüfmeldung geliefert. Der Commit liegt dann ebenfalls beim Aufrufer.
  • Die Prüfzeile verwendet den ReturnCode-Wert Error mit nachgestelltem Leerzeichen, andere Fehler verwenden ERROR.
  • Im Detailmodus wird die angelegte Bestellung als MAX(Id) von pixi.SupplierOrder ermittelt. Bei parallel angelegten Bestellungen kann dies eine andere Bestellung sein.
  • Lookups verwenden NOLOCK.
  • Fehler werden abgefangen. Transaktion bzw. Savepoint werden zurückgerollt, und der Fehler wird als Zeile mit ReturnCode = ERROR geliefert, nicht als SQL-Fehler.
  • AppName ist Pflicht, wird im Code aber nicht verwendet.

Parameter

Parameter Typ Standardwert Beschreibung
AppName
Pflicht
varchar(255)
string
–

Name der aufrufenden Anwendung. Wird im Code nicht verwendet.

Beispiel: ShopConnector

UserId
int NULL

ID des Pixi-Benutzers. Bei NULL wird sie aus UserName ermittelt.

Beispiel: 12

UserName
Pflicht
varchar(50)
string
–

Pixi-Benutzername. Wird nur verwendet, wenn UserId NULL ist. Unbekannte Namen fallen auf pixiAdministration zurück.

Beispiel: jdoe

SupplierId
int NULL

Lieferantenschlüssel (SuppliersKey). Hat Vorrang vor SupplierNr.

Beispiel: 5

SupplierNr
varchar(4)
string
NULL

Lieferantennummer (SupplNr). Wird verwendet, wenn SupplierId NULL ist.

Beispiel: L001

DeliveryLocation
varchar(3)
string
NULL

Lagerkürzel (LocID) des Liefer- und Rechnungslagers. Wird verwendet, wenn DeliveryLocationId NULL ist.

Beispiel: 001

DeliveryLocationId
int NULL

Lagerschlüssel des Liefer- und Rechnungslagers. Hat Vorrang vor DeliveryLocation.

Beispiel: 1

OrderLocation
varchar(3)
string
NULL

Lagerkürzel (LocID) des Bestelllagers. Wird verwendet, wenn OrderLocationId NULL ist.

Beispiel: 001

OrderLocationId
int NULL

Lagerschlüssel des Bestelllagers. Hat Vorrang vor OrderLocation.

Beispiel: 1

SupplOrderDocument
Pflicht
xml –

XML-Dokument mit den Bestellpositionen. Es wird von pixi.SupplierOrderCreate ausgewertet, das nicht vorliegt. Die genaue Struktur ist aus diesem Code daher nicht bekannt.

ConsiderPackageUnits
bit
boolean
0

Ob Verpackungseinheiten bei den Mengen berücksichtigt werden. NULL wird als 0 behandelt.

Erlaubte Werte

  • 0 – Nein
  • 1 – Ja

Beispiel: 0

ConsiderMinOrderQty
bit
boolean
0

Ob die Mindestbestellmenge berücksichtigt wird. NULL wird als 0 behandelt.

Erlaubte Werte

  • 0 – Nein
  • 1 – Ja

Beispiel: 0

ExternalCode
nvarchar(50)
string
NULL

Externe Referenz der Bestellung. Ein Leerstring wird als NULL behandelt.

Beispiel: PO-2024-0815

EstimatedDeliveryDate
datetime
dateTime
NULL

Voraussichtliches Lieferdatum. Der Zeitanteil wird entfernt.

Beispiel: 2024-06-15T00:00:00

ShowDetailedReturn
bit
boolean
0

1 liefert je Eingabezeile eine Detailzeile mit Zuordnungsstatus. Bei 0 liefert die innere Prozedur die angelegten IDs.

Erlaubte Werte

  • 0 – Angelegte IDs zurückgeben (aus innerer Prozedur)
  • 1 – Detaillierten Status je Zeile zurückgeben

Beispiel: 1

Type
int 1

Bestellart. Jeder Wert außer 2 wird als 1 behandelt.

Erlaubte Werte

  • 1 – Lieferantenbestellung
  • 2 – Vorbestellung

Beispiel: 1

OrderConsiderationStartDate
datetime
dateTime
NULL

Startdatum der Bestellberücksichtigung. Nur bei Vorbestellungen (Type = 2) zulässig. Der Zeitanteil wird entfernt.

Antwort

Result-Set 1 · Wenn Type = 1 und OrderConsiderationStartDate gesetzt ist

Validierungsfehlerzeile. Es wird nichts angelegt.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

Immer ERROR.

ErrorMessage varchar(57)
string

Fehlertext.

Result-Set 2 · Wenn ShowDetailedReturn = 0 (geliefert von pixi.SupplierOrderCreate)

Angelegte IDs, wie von der inneren Prozedur geliefert. Die Spalten sind aus diesem Code nicht bekannt.

Result-Set 3 · Wenn ShowDetailedReturn = 1 und kein Fehler auftrat

Eine Zeile je Artikelzeile des Eingabedokuments, mit Zuordnungsstatus und angelegter Bestellposition.

Spalte Typ Beschreibung
SupplierOrderId
Kann leer sein
int

ID der angelegten Lieferantenbestellung. NULL, wenn für den Artikel keine Position angelegt wurde.

InternalNumber
Kann leer sein
string

Interne Nummer der Lieferantenbestellung.

SupplierOrderlineId
Kann leer sein
int

ID der angelegten Bestellposition.

ItemId
Kann leer sein
int

Zugeordnete Artikel-ID.

ItemName
Kann leer sein
string

Artikelname aus der Bestellposition, sonst aus den Artikelstammdaten.

ItemNrSuppl
Kann leer sein
varchar(50)
string

Lieferantenartikelnummer.

ItemNrInt
Kann leer sein
varchar(50)
string

Interne Artikelnummer aus der Eingabe.

StatusMessage
Kann leer sein
varchar(100)
string

OK, Item not found, Item does not have the correct supplier assigned oder Item number supplier is missing for the item.

ItemCodeInternal
Kann leer sein
string

In der Bestellposition gespeicherter interner Artikelcode.

Result-Set 4 · Ohne äußere Transaktion, wenn Lieferant, Liefer- oder Bestelllager nicht aufgelöst werden konnte

Prüfmeldungszeile, geliefert nach dem Commit.

Spalte Typ Beschreibung
ReturnCode varchar(255)
string

Error (mit nachgestelltem Leerzeichen).

ErrorMessage varchar(255)
string

Welcher Wert nicht zugeordnet werden konnte.

Result-Set 5 · Wenn eine Ausnahme auftritt

Fehlerzeile nach dem Rollback.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

Immer ERROR.

ErrorMessage
Kann leer sein
nvarchar(4000)
string

SQL-Fehlermeldung.

Fehlermeldungen

Status Meldung Ursache
ERROR OrderConsiderationStartDate is only valid for Pre-Orders `OrderConsiderationStartDate` wurde übergeben, obwohl `Type` nicht 2 ist. Das Datum weglassen oder `Type` = 2 verwenden.
Error Match value for parameter Supplier does not exists in db. Weder `SupplierId` noch `SupplierNr` entspricht einem vorhandenen Lieferanten.
Error Match value for parameter delivery location does not exists in db. `DeliveryLocationId` bzw. `DeliveryLocation` entspricht keinem vorhandenen Lager.
Error Match value for parameter order location does not exists in db. `OrderLocationId` bzw. `OrderLocation` entspricht keinem vorhandenen Lager.
ERROR {ERROR_MESSAGE()} Beliebiger SQL-Fehler während der Verarbeitung, z. B. ungültiges XML oder ein Fehler aus `pixi.SupplierOrderCreate`. Die Transaktion wird zurückgerollt.

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:pixiSupplierOrderCreate>
      <AppName>ShopConnector</AppName>
      <!-- <UserId>12</UserId> -->
      <UserName>jdoe</UserName>
      <!-- <SupplierId>5</SupplierId> -->
      <!-- <SupplierNr>L001</SupplierNr> -->
      <!-- <DeliveryLocation>001</DeliveryLocation> -->
      <!-- <DeliveryLocationId>1</DeliveryLocationId> -->
      <!-- <OrderLocation>001</OrderLocation> -->
      <!-- <OrderLocationId>1</OrderLocationId> -->
      <SupplOrderDocument><![CDATA[?]]></SupplOrderDocument>
      <!-- <ConsiderPackageUnits>0</ConsiderPackageUnits> -->
      <!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
      <!-- <ExternalCode>PO-2024-0815</ExternalCode> -->
      <!-- <EstimatedDeliveryDate>2024-06-15T00:00:00</EstimatedDeliveryDate> -->
      <!-- <ShowDetailedReturn>1</ShowDetailedReturn> -->
      <!-- <Type>1</Type> -->
      <!-- <OrderConsiderationStartDate>?</OrderConsiderationStartDate> -->
    </ns1:pixiSupplierOrderCreate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Suppliers · Lesen Location · Lesen SupplierOrder · Lesen SupplierOrderLine · Lesen ItemCode · Lesen items · Lesen UCS_USERS · Lesen
SQL-Objekt:
dbo.pipiSupplierOrderCreate
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben