Postman-Collection
Suppliers Schreiben

pixiSupplierOrderLineCreate

Legt Positionen zu einer bestehenden Lieferantenbestellung im Status NEW oder BES anhand eines XML-Dokuments mit Artikeln an.

Fügt Positionen zu einer bestehenden Lieferantenbestellung hinzu.

  1. Der Benutzer wird über UserName ermittelt. Ist der Name unbekannt, wird der Benutzer pixiAdministration verwendet.
  2. ConsiderPackageUnits und ConsiderMinOrderQty werden bei NULL auf 0 gesetzt.
  3. Die Lieferantenbestellung wird in SupplierOrder über Id = SupplierOrderId oder InternalNumber = SupplierOrderNr gesucht. Es muss genau eine Bestellung gefunden werden:
    • kein Treffer: Fehler Purchase order does not exist!
    • mehr als ein Treffer: Fehler Parameters @SupplierOrderId and @SupplierOrderNr belong to different purchase order!
  4. Die Bestellung muss den Status 1 (NEW) oder 2 (BES) haben. Andernfalls liefert der Aufruf Purchase order is not in status NEW or BES!
  5. Sind alle Prüfungen erfolgreich, legt die interne Prozedur pixi.SupplierOrderLineCreate die Positionen an. Sie erhält die Bestell-ID, die Benutzer-ID, beide Schalter und PurchaseOrderXML.

Der Aufruf liefert eine Ergebnismenge mit Statuszeilen (Status, StatusDescription, ItemId), sortiert nach Status und ItemId.

Hinweise

  • Das eigentliche Anlegen der Positionen erfolgt in pixi.SupplierOrderLineCreate, das nicht beigefügt ist. Daher lässt sich hier Folgendes nicht dokumentieren:
    • die erwartete Struktur von PurchaseOrderXML
    • wie Verpackungseinheiten und Mindestbestellmengen angewendet werden
    • welche Tabellen geschrieben werden
    • welche Status- und Beschreibungswerte bei Erfolg im Ergebnis erscheinen
  • pixi.SupplierOrderLineCreate wird mit @pipiSupplierOrderLineCreate_ReturnInfo = 1 aufgerufen. Vermutlich schreibt es seine Ergebnisse je Artikel in die temporäre Ergebnistabelle, die dieser Aufruf zurückgibt.
  • Nur einen der Parameter SupplierOrderId oder SupplierOrderNr übergeben oder sicherstellen, dass beide zur selben Bestellung gehören. Die Suche verwendet OR, daher führen zwei verschiedene Treffer zu einem Fehler. Sind beide NULL, wird nichts gefunden und Purchase order does not exist! zurückgegeben.
  • Die Suche nach der Bestellung verwendet NOLOCK.
  • Der Aufruf läuft in einer eigenen Transaktion bzw. in einem Savepoint, falls bereits eine Transaktion offen ist.
  • Bei einem SQL-Fehler wird die Transaktion zurückgerollt und der Fehler über log.InsertError protokolliert. Ob der Fehler an den Aufrufer weitergegeben wird, hängt von dieser nicht beigefügten Prozedur ab. In diesem Fall kann die Status-Ergebnismenge fehlen.

Parameter

Parameter Typ Standardwert Beschreibung
SupplierOrderId
int NULL

Interne ID der Lieferantenbestellung (SupplierOrder.Id). Alternative zu SupplierOrderNr.

Beispiel: 1542

SupplierOrderNr
int NULL

Interne Nummer der Lieferantenbestellung (SupplierOrder.InternalNumber). Alternative zu SupplierOrderId.

Beispiel: 20231

UserName
varchar(50)
string
–

Pixi-Benutzername, unter dem die Positionen angelegt werden. Bei unbekanntem Namen wird pixiAdministration verwendet.

Beispiel: jdoe

ConsiderPackageUnits
bit
boolean
0

Legt fest, ob Verpackungseinheiten beim Anlegen der Positionen berücksichtigt werden. NULL wird als 0 behandelt.

Erlaubte Werte

  • 0 – Verpackungseinheiten nicht berücksichtigen
  • 1 – Verpackungseinheiten berücksichtigen

Beispiel: 1

ConsiderMinOrderQty
bit
boolean
0

Legt fest, ob die Mindestbestellmenge beim Anlegen der Positionen berücksichtigt wird. NULL wird als 0 behandelt.

Erlaubte Werte

  • 0 – Mindestbestellmenge nicht berücksichtigen
  • 1 – Mindestbestellmenge berücksichtigen

Beispiel: 0

PurchaseOrderXML
Pflicht
xml –

XML-Dokument mit den anzulegenden Positionen. Es wird unverändert an pixi.SupplierOrderLineCreate übergeben. Die Struktur ist dort festgelegt und in diesem Code nicht sichtbar, das Beispiel ist daher nur illustrativ.

Beispiel:

<PurchaseOrder>
  <Items>
    <Item>
      <ItemId>4711</ItemId>
      <Quantity>10</Quantity>
    </Item>
  </Items>
</PurchaseOrder>

Antwort

Result-Set 1 · Immer, sofern kein SQL-Fehler auftritt

Statuszeilen aus der Prüfung oder aus dem Anlegen der Positionen, sortiert nach Status und ItemId.

Spalte Typ Beschreibung
Status
Kann leer sein
varchar(120)
string

Status der Zeile, z. B. Error. Weitere Werte setzt pixi.SupplierOrderLineCreate.Г

StatusDescription
Kann leer sein
varchar(120)
string

Beschreibungstext zum Status.

ItemId
Kann leer sein
int

Artikel, auf den sich die Zeile bezieht. NULL bei Fehlern auf Bestellebene.

Fehlermeldungen

Status Meldung Ursache
Error Purchase order does not exist! Keine Lieferantenbestellung passt zu `SupplierOrderId` oder `SupplierOrderNr`, oder beide sind leer. Eine gültige ID oder Nummer übergeben.
Error Parameters @SupplierOrderId and @SupplierOrderNr belong to different purchase order! Die Suche hat mehr als eine Bestellung gefunden, z. B. weil ID und Nummer zu verschiedenen Bestellungen gehören. Nur einen Bezeichner oder zueinander passende Werte übergeben.
Error Purchase order is not in status NEW or BES! Die Lieferantenbestellung hat einen anderen Status als 1 (NEW) oder 2 (BES). Positionen können nur zu Bestellungen in diesen Status hinzugefügt werden.

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:pixiSupplierOrderLineCreate>
      <!-- <SupplierOrderId>1542</SupplierOrderId> -->
      <!-- <SupplierOrderNr>20231</SupplierOrderNr> -->
      <!-- <UserName>jdoe</UserName> -->
      <!-- <ConsiderPackageUnits>1</ConsiderPackageUnits> -->
      <!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
      <PurchaseOrderXML><![CDATA[<PurchaseOrder><Items><Item><ItemId>4711</ItemId><Quantity>10</Quantity></Item></Items></PurchaseOrder>]]></PurchaseOrderXML>
    </ns1:pixiSupplierOrderLineCreate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

SupplierOrder · Lesen UCS_USERS · Lesen
SQL-Objekt:
dbo.pipiSupplierOrderLineCreate
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben