Postman-Collection
Suppliers Schreiben

pixiSetHistoricalSupplierPrice

Aktualisiert Lieferantenpreis und Lieferant eines historischen Wareneingangs-Preisdatensatzes (InvBinItemLog_In_Price) ohne zugeordnete Lieferung.

Setzt den Lieferantenpreis eines einzelnen historischen (FIFO-)Wareneingangs-Preisdatensatzes manuell. Der Datensatz wird über InvBinItemLogId identifiziert.

Ablauf:

  1. Alle vier Parameter sind Pflicht. Fehlt einer davon, wird eine Fehlerzeile zurückgegeben.
  2. Ein negativer SupplierPrice wird abgelehnt.
  3. SupplierId muss als SuppliersKey in Suppliers existieren.
  4. UserName muss als USER_NAME in UCS_USERS existieren. Die zugehörige Benutzer-ID wird als ändernder Benutzer gespeichert.
  5. Der Datensatz InvBinItemLogId muss in InvBinItemLog_In_Price existieren.
  6. Nur Datensätze ohne DeliveryId können geändert werden. Datensätze mit bereits zugeordneter Lieferung werden abgelehnt.
  7. Der Datensatz wird aktualisiert:
    • Price wird auf SupplierPrice gesetzt.
    • SupplierId wird auf SupplierId gesetzt.
    • DeliveryId und DeliveryId_Assigned werden auf NULL gesetzt.
    • QuerySource wird auf 5 gesetzt (manuelle Änderung über API).
    • RecordModifiedByUserId und RecordModifiedOn werden gesetzt; der Zeitstempel ist die aktuelle Zeit als smalldatetime.

Der Aufruf liefert genau eine Zeile mit Status und Meldung zurück, entweder einen Fehler oder eine Erfolgsbestätigung.

Hinweise

  • Spaltennamen-Falle: Fehlerzeilen der Validierung verwenden die Spalte Status. Die Erfolgszeile und die Fehlerzeile aus dem CATCH-Block verwenden die falsch geschriebene Spalte Staus. Clients sollten beide Spaltennamen prüfen.
  • Der Kopfkommentar der Prozedur („Returns FIFO supplier prices“) passt nicht zum Verhalten. Die Prozedur ändert Daten.
  • Die Prozedur öffnet eine eigene Transaktion oder einen Savepoint, falls der Aufrufer bereits eine offene Transaktion hat.
  • Die Validierungsprüfungen kehren vor einem Commit oder Rollback zurück. Ohne äußere Transaktion kann der Aufruf mit noch offener Transaktion enden. SQL Server kann dann eine Abweichung der Transaktionsanzahl melden.
  • Bei einem Laufzeitfehler wird die Transaktion bzw. der Savepoint zurückgerollt. Der Fehler wird über log.InsertError protokolliert (nicht beigefügt).
  • Lookups verwenden NOLOCK. Das Update verwendet ROWLOCK.
  • In der Erfolgsmeldung wird der Preis als money-nach-varchar-Konvertierung ausgegeben, also mit zwei Nachkommastellen.

Parameter

Parameter Typ Standardwert Beschreibung
InvBinItemLogId
int NULL

ID des historischen Wareneingangs-Preisdatensatzes in InvBinItemLog_In_Price. Faktisch Pflicht.

Beispiel: 123456

SupplierPrice
money
decimal
NULL

Neuer Lieferantenpreis. Darf nicht negativ sein. Faktisch Pflicht.

Beispiel: 12.50

SupplierId
int NULL

Lieferantenschlüssel (SuppliersKey), der am Datensatz gespeichert wird. Muss existieren. Faktisch Pflicht.

Beispiel: 17

UserName
varchar(30)
string
NULL

Pixi-Benutzername (USER_NAME in UCS_USERS), der als ändernder Benutzer gespeichert wird. Faktisch Pflicht.

Beispiel: api_user

Antwort

Result-Set 1 · Wenn eine Validierungsprüfung fehlschlägt

Fehlerzeile aus der Parameter- bzw. Datensatzvalidierung. Es werden keine Daten geändert.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer Error.

Message varchar
string

Fehlerbeschreibung.

Result-Set 2 · Bei Erfolg

Bestätigungszeile nach der Aktualisierung des Datensatzes. Spaltenname Staus beachten.

Spalte Typ Beschreibung
Staus varchar(7)
string

Immer Success (falsch geschriebener Spaltenname).

Message varchar
string

Bestätigungstext mit Preis und Datensatz-ID.

Result-Set 3 · Bei einem Laufzeitfehler (CATCH-Block)

Fehlerzeile mit der SQL-Server-Fehlermeldung. Die Änderungen werden zurückgerollt.

Spalte Typ Beschreibung
Staus varchar(5)
string

Immer Error (falsch geschriebener Spaltenname).

Message
Kann leer sein
nvarchar(4000)
string

Ergebnis von ERROR_MESSAGE().

Fehlermeldungen

Status Meldung Ursache
Error All parameters are mandatory. Mindestens einer der Parameter `InvBinItemLogId`, `SupplierPrice`, `SupplierId`, `UserName` fehlt oder ist NULL. Alle vier Parameter übergeben.
Error Negative supplier price is not allowed. `SupplierPrice` ist kleiner als 0. Einen Preis von 0 oder höher übergeben.
Error Supplier with SupplierId: {SupplierId} does not exist. Es existiert kein Lieferant mit diesem `SuppliersKey`. Einen gültigen Lieferantenschlüssel verwenden.
Error User with UserName: "{UserName}" does not exist. In `UCS_USERS` existiert kein Benutzer mit diesem `USER_NAME`. Einen vorhandenen Pixi-Benutzernamen verwenden.
Error Historical supplier price record with InvBinItemLogId: {InvBinItemLogId} does not exist. In `InvBinItemLog_In_Price` existiert kein Datensatz mit dieser ID.
Error Only records that do not have a delivery already assigned can be updated. Der Datensatz hat bereits eine `DeliveryId`. Nur Datensätze ohne Lieferung können manuell geändert werden.
Error {ERROR_MESSAGE()} Bei der Verarbeitung ist ein unerwarteter SQL-Fehler aufgetreten. Der Text wird in den Spalten `Staus`/`Message` zurückgegeben, und der Fehler wird protokolliert.

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:pixiSetHistoricalSupplierPrice>
      <!-- <InvBinItemLogId>123456</InvBinItemLogId> -->
      <!-- <SupplierPrice>12.50</SupplierPrice> -->
      <!-- <SupplierId>17</SupplierId> -->
      <!-- <UserName>api_user</UserName> -->
    </ns1:pixiSetHistoricalSupplierPrice>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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