pixiUpdateItemSupplier
Aktualisiert einen Lieferantenartikel-Datensatz (AddItems) eines Artikels: EAN, Lieferantenpreis, Lieferanten-Artikelnummer, Hauptlieferant, Mindestmenge, Lieferzeit, Aktiv-Flag.
Aktualisiert genau einen Lieferantenartikel-Datensatz in AddItems. Ein Lieferantenartikel ist die Kombination aus Artikel, Lieferant und EAN (EANUPC).
Ablauf:
SupplNrist Pflicht. Ein Leerstring gilt als nicht angegeben. Der Lieferant wird inSuppliersüberSupplNrgesucht; existiert er nicht, wird eine Fehlerzeile geliefert.- Mindestens ein Änderungsparameter muss gesetzt sein:
NewEAN,SupplPrice,ItemNrSuppl,PreferredSupplier,MinOrderQty,OnlyPU,ItemDeliveryTimeoderIsActive. BeiNewEANundItemNrSupplgilt ein Leerstring als nicht gesetzt. - Der Artikel wird über
ItemKey,EAN(Barcode, Codetyp 1) und/oderItemNrInt(Shop-Artikelnummer, Codetyp 2) inpixi.ItemCodeermittelt. Jede übergebene Kennung muss existieren, und alle müssen auf denselben Artikel zeigen.ItemKey = 0gilt als nicht gesetzt. - Wird
NewEANübergeben, darf dieser Code nicht bereits als scanbarer Code eines anderen Artikels existieren. - Alle Lieferantenartikel des Artikels werden geladen. Der zu ändernde Datensatz wird über den ermittelten Lieferanten und, falls
EANübergeben wurde, überEANUPC = EANbestimmt. Es muss genau ein Datensatz passen. Hat der Lieferant mehrere EANs für den Artikel, istEANzur eindeutigen Auswahl anzugeben. - Wird
NewEANübergeben, darf kein anderer Lieferantenartikel desselben Artikels diese EAN bereits für dieselbeSupplNrhaben. - Bei
PreferredSupplier = 1werden alle anderen derzeit bevorzugten Lieferantenartikel des Artikels aufPreferredSupplier = 0gesetzt. - Die Aktualisierung läuft in einer Transaktion.
Am Zieldatensatz werden nur die übergebenen Werte geändert. Nicht übergebene Werte behalten ihren bisherigen Inhalt. Zusätzlich gilt:
UpdateDatewird auf die aktuelle Zeit gesetzt.RowVersionwird um 1 erhöht.SupplPriceUpdateDatewird auf jetzt gesetzt, wenn sich der neueSupplPricevom gespeicherten Preis unterscheidet.
Geliefert wird eine Statuszeile (Status, Message). Bei Erfolg ist Status gleich Record updated, und Message enthält den resultierenden Preis, die Lieferanten-Artikelnummer und die EAN des Zieldatensatzes.
Hinweise
- Werte leeren ist nicht möglich. Parameter mit NULL sowie Leerstrings bei
NewEANundItemNrSupplbehalten den bisherigen Wert. Ein Feld kann mit diesem Aufruf nicht auf NULL gesetzt werden. EANhat zwei Aufgaben. Die EAN identifiziert den Artikel: Sie muss als Barcode (Codetyp 1) inpixi.ItemCodeexistieren. Außerdem wählt sie denAddItems-Datensatz überEANUPCaus.NewEANändert nurAddItems.EANUPC. Die Prozedur aktualisiertpixi.ItemCodenicht direkt. Ob Trigger den Code abgleichen, ist aus diesem Code nicht ersichtlich.PreferredSupplier = 0entfernt das Kennzeichen nur am Zieldatensatz. Kein anderer Lieferant wird zum Hauptlieferanten gemacht.SupplPriceUpdateDatewird nicht aktualisiert, wenn der gespeicherte Preis NULL war, da der VergleichSupplPrice <> @SupplPricedann nicht zutrifft.- NULL-Meldungen. Wird kein Lieferantenartikel gefunden und wurde
ItemKeynicht übergeben, ist die Fehler-Messagewegen der String-Verkettung mit NULL selbst NULL. Dasselbe gilt für die Erfolgs-Message, wenn der resultierendeSupplPriceNULL ist. - Sperren. Lesezugriffe auf
Suppliers,pixi.ItemCodeundAddItemserfolgen mitNOLOCK. Das Update verwendetROWLOCK. - Transaktionen. Die Prozedur öffnet eine eigene Transaktion oder setzt einen Savepoint, wenn bereits eine Transaktion offen ist. Im Fehlerfall wird zurückgerollt, über
log.InsertError(Definition nicht beigefügt) protokolliert undERROR_MESSAGE()als Statuszeile geliefert. - Lieferantensuche. Sie verwendet
TOP (1)aufSuppliersüberSupplNr.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interne Artikel-ID zur Identifikation des Artikels. 0 gilt als nicht gesetzt. Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Shop-Artikelnummer (Codetyp 2 in Beispiel: |
EAN
|
varchar(13) string |
NULL |
Aktuelle EAN. Identifiziert den Artikel (Codetyp 1) und wählt den Lieferantenartikel über Beispiel: |
NewEAN
|
varchar(13) string |
NULL |
Neue EAN für Beispiel: |
SupplNr
Pflicht
|
varchar(4) string |
– |
Lieferantennummer. Pflicht. Muss in Beispiel: |
SupplPrice
|
money decimal |
NULL |
Neuer Lieferanten-(Einkaufs-)Preis. Weicht er vom gespeicherten Preis ab, wird Beispiel: |
ItemNrSuppl
|
varchar(50) string |
NULL |
Neue Lieferanten-Artikelnummer. Ein Leerstring behält den aktuellen Wert. Beispiel: |
PreferredSupplier
|
bit boolean |
NULL |
Setzt oder entfernt das Hauptlieferanten-Kennzeichen. Erlaubte Werte
Beispiel: |
MinOrderQty
|
int | NULL |
Neue Mindestbestellmenge. Beispiel: |
OnlyPU
|
bit boolean |
NULL |
Neuer Wert für Erlaubte Werte
Beispiel: |
ItemDeliveryTime
|
int | NULL |
Neue Lieferzeit des Lieferanten ( Beispiel: |
IsActive
|
bit boolean |
NULL |
Setzt das Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Bei einem Validierungsfehler oder einem Fehler während der Aktualisierung (statt der Erfolgszeile)
Eine einzelne Statuszeile mit der Fehlerbeschreibung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
Kann leer sein |
varchar string |
Fehlertext. Kann in einigen Fällen NULL sein (siehe Hinweise). |
Result-Set 2 · Bei Erfolg
Eine Zeile für den aktualisierten Ziel-Lieferantenartikel.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(14) string |
Immer |
Message
Kann leer sein |
varchar string |
Resultierende Werte im Format |
Beispielantwort
<SqlRowSet1>
<row>
<Status>Record updated</Status>
<Message>SupplPrice:12.50, ItemNrSuppl:LF-4711, EANUPC:4006381333931</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Parameter @SupplNr is mandatory. | `SupplNr` fehlt oder ist leer. |
| Error | Supplier with SupplNr:{SupplNr} does not exist. | In `Suppliers` existiert kein Lieferant mit dieser Nummer. |
| Error | At least one update parameter must be provided (@NewEAN, @SupplPrice, @ItemNrSuppl, @PreferredSupplier, @MinOrderQty, @OnlyPU, @ItemDeliveryTime, or @IsActive). | Es wurde kein zu ändernder Wert übergeben. |
| Error | Please specify at least one parameter. | Weder `ItemKey` noch `EAN` noch `ItemNrInt` wurde übergeben. |
| Error | No items found with given parameters. ItemKey: {ItemKey} not found. | `ItemKey` existiert nicht in `pixi.ItemCode`. |
| Error | No items found with given parameters. EAN: {EAN} not found. | `EAN` existiert nicht als Barcode (Codetyp 1). |
| Error | No items found with given parameters. ItemNrInt: {ItemNrInt} not found. | `ItemNrInt` existiert nicht als Shop-Artikelnummer (Codetyp 2). |
| Error | More than one item was identified with the given parameters. | Die übergebenen Kennungen zeigen auf verschiedene Artikel. |
| Error | The @NewEAN code {NewEAN} already exists on another scannable item. | `NewEAN` wird bereits als scanbarer Code eines anderen Artikels verwendet. |
| Error | More than one supplier item found for ItemKey:{ItemId}, SupplNr: {SupplNr}. Use @EAN to identify the exact record. | Der Lieferant hat mehrere Lieferantenartikel (EANs) für den Artikel. `EAN` zur Auswahl übergeben. |
| Error | No supplier item found with given parameters. ItemKey:{ItemKey}, SupplNr: {SupplNr}, EAN: {EAN|not provided}. | Für diesen Artikel, Lieferanten und (optional) diese EAN existiert kein `AddItems`-Datensatz. Die Meldung ist NULL, wenn `ItemKey` nicht übergeben wurde. |
| Error | Item with EANUPC: {NewEAN} and Supplier number "{SupplNr}" already exists. | Ein anderer Lieferantenartikel desselben Artikels hat `NewEAN` bereits für diesen Lieferanten. |
| Error | {ERROR_MESSAGE()} | Während der Aktualisierung trat ein SQL-Fehler auf. Die Transaktion wird zurückgerollt und der Fehler 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:pixiUpdateItemSupplier>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-1001</ItemNrInt> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <NewEAN>4006381333948</NewEAN> -->
<SupplNr>L001</SupplNr>
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <ItemNrSuppl>LF-4711</ItemNrSuppl> -->
<!-- <PreferredSupplier>1</PreferredSupplier> -->
<!-- <MinOrderQty>10</MinOrderQty> -->
<!-- <OnlyPU>0</OnlyPU> -->
<!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
<!-- <IsActive>1</IsActive> -->
</ns1:pixiUpdateItemSupplier>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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:pixiUpdateItemSupplier>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-1001</ItemNrInt> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <NewEAN>4006381333948</NewEAN> -->
<SupplNr>L001</SupplNr>
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <ItemNrSuppl>LF-4711</ItemNrSuppl> -->
<!-- <PreferredSupplier>1</PreferredSupplier> -->
<!-- <MinOrderQty>10</MinOrderQty> -->
<!-- <OnlyPU>0</OnlyPU> -->
<!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
<!-- <IsActive>1</IsActive> -->
</ns1:pixiUpdateItemSupplier>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
// 'ItemKey' => '12345',
// 'ItemNrInt' => 'ART-1001',
// 'EAN' => '4006381333931',
// 'NewEAN' => '4006381333948',
'SupplNr' => 'L001',
// 'SupplPrice' => '12.50',
// 'ItemNrSuppl' => 'LF-4711',
// 'PreferredSupplier' => '1',
// 'MinOrderQty' => '10',
// 'OnlyPU' => '0',
// 'ItemDeliveryTime' => '5',
// 'IsActive' => '1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiUpdateItemSupplier', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiUpdateItemSupplier