Postman-Collection
Suppliers Schreiben

pixiUpdateSOrderline

Aktualisiert Menge, Lieferantenpreis, Kommentar, voraussichtliches Lieferdatum oder nicht gelieferte Menge einer Lieferantenbestellposition und berechnet die Bestellsummen neu.

Ändert eine einzelne Position einer Lieferantenbestellung, identifiziert über SorderlineKey (SupplierOrderLine.Id).

Prüfungen (bei einem Fehler wird eine Zeile mit ReturnCode = 'Error' geliefert und nichts geändert):

  1. Die Position muss existieren.
  2. Eine QtyNotDelivered ungleich 0 wird nur akzeptiert, wenn die Lieferantenbestellung den Status CON (bestätigt) hat.
  3. Hat die Lieferantenbestellung den Status CON oder CLS, dürfen weder SupplPrice (nicht NULL) noch OrderQty (ungleich 0) übergeben werden.

Vorbereitung

  • UserName NULL wird zu API; der Benutzer wird für den Änderungsstempel über den Namen ermittelt.
  • EstimatedDelivery NULL behält das bisherige voraussichtliche Lieferdatum der Position bei.
  • Wird QtyNotDelivered explizit als NULL übergeben, bleibt die bisherige nicht gelieferte Menge erhalten.

Aktualisierung (durch die interne Prozedur GOS_SOrderlinesUpdate):

  • Immer: Kommentar (Comment = Note), voraussichtliches Lieferdatum, Änderungsbenutzer/-datum und Zeilenversion der Position.
  • Lieferantenbestellung in bearbeitbarem Status (interne Status-Id 1 oder 2): Qty (ein OrderQty von 0 behält die bisherige Menge), Anzahl Verpackungseinheiten (Menge geteilt durch Verpackungseinheit, aufgerundet), SupplierPrice (nur wenn SupplPrice ungleich 0), Rabattbetrag/-prozent und Positionssumme werden neu berechnet.
  • Lieferantenbestellung im Status CON (interne Status-Id 3): UndeliveredQty wird auf QtyNotDelivered gesetzt.
  • Der Bestellkopf (SupplierOrder) wird neu berechnet: Zwischensumme aus allen Positionssummen, Kopfrabatt, Frachtkosten (auf 0 gesetzt, wenn die Frachtfreigrenze erreicht ist), Gesamtbetrag inklusive Mindermengenzuschlag.
  • Der Lagerplatz-Mengensatz der Position (SupplierOrderLineLocQty) erhält die Menge und bei Status CON die nicht gelieferte Menge.
  • Hat die Position nach der Aktualisierung ein voraussichtliches Lieferdatum, wird der Artikel für einen erzwungenen Export in den Shop vorgemerkt.

Bei Erfolg wird eine Zeile mit ReturnCode = 'OK' geliefert.

Hinweise

  • Kommentar wird immer überschrieben: Note hat den Standardwert Leerstring, daher löscht ein Weglassen den bestehenden Kommentar der Position. Zum Beibehalten den aktuellen Kommentar mitsenden.
  • Nicht gelieferte Menge im Status CON: QtyNotDelivered hat den Standardwert 0. Bei einer bestätigten Bestellung setzt ein Weglassen UndeliveredQty auf 0. Zum Beibehalten explizit NULL (nil) oder den aktuellen Wert senden.
  • QtyReceived ist veraltet und wird ignoriert.
  • Die Aktualisierung der Position wird als dynamisches SQL aufgebaut; Note wird ohne Maskierung eingefügt, ein einfaches Anführungszeichen (') im Kommentar führt daher zu einem fehlerhaften Statement. SQL-Fehler der internen Prozedur kommen als SqlMessage zurück; die abschließende OK-Zeile kann trotzdem geliefert werden.
  • Für die Aktualisierungszweige werden die internen Status-Ids 1, 2 und 3 verwendet; Id 3 entspricht laut Code-Kommentar CON. Bei anderen Status (z. B. CLS) werden nur Kommentar und voraussichtliches Lieferdatum geändert.
  • Die Rabattneuberechnung teilt bei betragsbasiertem Rabatt (DiscountType = 1) durch Menge × Preis; Preis oder Menge 0 bei vorhandenem Rabatt kann eine Division durch Null auslösen.
  • Der Shop-Export wird immer ausgelöst, wenn die Position ein voraussichtliches Lieferdatum hat, auch wenn EstimatedDelivery nicht übergeben wurde. Die Exportprozedur Pixi_ExportItemChangesToShop liegt nicht vor.
  • Keine explizite Transaktion; Lesezugriffe mit NOLOCK, Updates mit ROWLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
SorderlineKey
Pflicht
int –

Id der zu ändernden Lieferantenbestellposition (SupplierOrderLine.Id).

Beispiel: 48213

UserName
Pflicht
varchar(50)
string
–

Pixi-Benutzername, der als Bearbeiter gespeichert wird. NULL wird durch API ersetzt.

Beispiel: API

OrderQty
int 0

Neue Bestellmenge. 0 oder NULL behält die bisherige Menge. Nur zulässig, solange die Lieferantenbestellung nicht im Status CON oder CLS ist.

Beispiel: 120

Note
varchar(1024)
string
–

Kommentar der Position. Wird immer geschrieben; ein leerer Wert löscht den bestehenden Kommentar. Darf keine einfachen Anführungszeichen enthalten.

Beispiel: Lieferung in zwei Teilen

QtyReceived
int 0

Veraltet, wird ignoriert.

Beispiel: 0

QtyNotDelivered
int 0

Nicht gelieferte Menge. Ein Wert ungleich 0 ist nur zulässig, wenn die Lieferantenbestellung den Status CON hat; dort wird er in UndeliveredQty geschrieben (auch der Standardwert 0). Explizites NULL behält den bisherigen Wert.

Beispiel: 10

EstimatedDelivery
datetime
dateTime
NULL

Neues voraussichtliches Lieferdatum der Position. NULL behält das bisherige Datum.

Beispiel: 2024-07-15T00:00:00

SupplPrice
decimal(9, 2)
decimal
NULL

Neuer Lieferanten-Einzelpreis. NULL oder 0 behält den bisherigen Preis. Nur zulässig, solange die Lieferantenbestellung nicht im Status CON oder CLS ist.

Beispiel: 12.50

Antwort

Result-Set 1 · Immer; genau eine Zeile (Fehlerzeile bei fehlgeschlagener Prüfung, sonst Erfolgszeile).

Status der Aktualisierung.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

OK bei Erfolg, Error bei fehlgeschlagener Prüfung.ű

Message varchar(max)
string

Erfolgs- oder Fehlertext.

Fehlermeldungen

Status Meldung Ursache
Error The specified supplier orderline id does not exists: {SorderlineKey} Es existiert keine Lieferantenbestellposition mit dem angegebenen `SorderlineKey` (oder sie ist keiner Lieferantenbestellung mit Status zugeordnet). Positions-Id prüfen.
Error @QtyNotDelivered can only be updated when supplier order is on status CON and @SupplPrice is NULL and @OrderQty is NULL or 0 Eine `QtyNotDelivered` ungleich 0 wurde übergeben, obwohl die Lieferantenbestellung nicht im Status `CON` ist. Bei anderen Status 0 senden oder weglassen.
Error The supplier price and order quantity can not be updated when the purchase order has status confirmed or closed (CON, CLS). `SupplPrice` (nicht NULL) oder eine `OrderQty` ungleich 0 wurde übergeben, obwohl die Lieferantenbestellung den Status `CON` oder `CLS` hat. Bei bestätigten oder abgeschlossenen Bestellungen beide weglassen.

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:pixiUpdateSOrderline>
      <SorderlineKey>48213</SorderlineKey>
      <UserName>API</UserName>
      <!-- <OrderQty>120</OrderQty> -->
      <!-- <Note>Lieferung in zwei Teilen</Note> -->
      <!-- <QtyReceived>0</QtyReceived> -->
      <!-- <QtyNotDelivered>10</QtyNotDelivered> -->
      <!-- <EstimatedDelivery>2024-07-15T00:00:00</EstimatedDelivery> -->
      <!-- <SupplPrice>12.50</SupplPrice> -->
    </ns1:pixiUpdateSOrderline>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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