pixiSetItemSupplier
Legt die Lieferantenzuordnung (AddItems-Zeile) eines Artikels an oder aktualisiert sie, inklusive Lieferantenpreis, Lieferanten-Artikelnummer, EAN und Bestelleinstellungen.
Pflegt die Lieferantendaten eines Artikels in AddItems für den in SupplNr angegebenen Lieferanten.
Prüfungen
ItemKey = 0sowie leere Zeichenketten inEAN,ItemNrSupplundItemNrIntwerden als NULL behandelt.- Werden
ItemKeyundItemNrIntgemeinsam übergeben, müssen beide initemszum selben Artikel gehören. - Der Lieferant
SupplNrmuss inSuppliersexistieren. - Mindestens einer der Parameter
ItemKey,EAN,ItemNrSupploderItemNrIntmuss angegeben sein.
Ermittlung des Artikels
Der Artikel wird in den vorhandenen AddItems-Zeilen gesucht (verknüpft mit items). Eine Zeile passt, wenn eine dieser Bedingungen zutrifft:
ItemRef = ItemKeyEANUPC = EANItemNrInt = ItemNrIntItemNrSuppl = ItemNrSupplundSupplNr = SupplNr
Es muss genau ein Artikel gefunden werden, sonst wird eine Fehlerzeile geliefert.
- Bei
AddEAN = 0ist es ein Fehler, wenn für den Lieferanten mehr als eine passendeAddItems-Zeile existiert. - Bei
AddEAN = 1wird eine Warnung geliefert, wenn bereits eine Zeile mit derselbenEANund demselben Lieferanten existiert.
Schreiben
- Bei
PreferredSupplier = 1wird zuerstPreferredSupplierauf allenAddItems-Zeilen des Artikels auf 0 gesetzt, damit nur eine Zeile bevorzugt bleibt. - Bei
AddEAN = 0und vorhandener passenderAddItems-Zeile des Lieferanten wird die älteste Zeile (kleinstesUpdateDate) aktualisiert. Nicht übergebene Parameter behalten die bisherigen Werte. Für Preis, Lieferanten-Artikelnummer und EAN dienen die Werte des Artikelstamms als Rückfall. Rückgabe:Record updated. - Andernfalls (noch keine Zeile für diesen Lieferanten oder
AddEAN = 1) wird eine neueAddItems-Zeile angelegt. Die Werte stammen aus den Parametern, mit Rückfall auf den Artikelstamm (EANUPC,ItemNrSuppl,SupplPrice).ItemNrInt,IntLinkNR1,IntLinkNRundPricewerden vom Artikel übernommen,AutoPricewird auf 0 gesetzt. Rückgabe:New record inserted.
Der Aufruf liefert immer genau eine Statuszeile mit Status und Message.
Hinweise
- Der Artikel muss bereits mindestens eine
AddItems-Zeile besitzen. Die Suche läuft nur überAddItems. Ein Artikel ohne Lieferantenzeile liefert daherNo items found with given parameters., auch wennItemKeygültig ist. - Bei
AddEAN = 1mit einer neuen EAN lässt sich der Artikel nur über einen vorhandenen Wert finden. DaherItemKeyoderItemNrIntübergeben, da die neue EAN inAddItemsnoch nicht existiert. - Die Suchbedingungen sind mit OR verknüpft. Werden mehrere Kennungen übergeben, die auf verschiedene Artikel zeigen, folgt
More then one item was identified .... - Beim Anlegen einer neuen Zeile werden
MinOrderQtyundSupplDeliveryTimenur aus den Parametern übernommen (NULL, wenn nicht angegeben).OrderOnlyPackageUnitsundPreferredSuppliersind standardmäßig 0. - In der Erfolgsmeldung werden NULL-Werte nicht behandelt. Ist
ItemNrSupploderEANUPCim Ergebnis NULL, istMessageNULL. - Die Schreibzugriffe laufen in einer Transaktion. Bei bereits offener Transaktion des Aufrufers wird stattdessen ein Savepoint gesetzt. Im Fehlerfall werden die Änderungen zurückgerollt, der Fehler wird über
log.InsertErrorprotokolliert (Definition nicht beigefügt) und eineError-Zeile mit dem SQL-Fehlertext geliefert. - Lesezugriffe verwenden
NOLOCK, UpdatesROWLOCK.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interner Schlüssel des Artikels ( Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Interne Artikelnummer. Wird zusätzlich Beispiel: |
SupplNr
Pflicht
|
varchar(4) string |
– |
Lieferantennummer. Sie muss in Beispiel: |
SupplPrice
|
money decimal |
NULL |
Einkaufspreis beim Lieferanten. Ohne Angabe bleibt der bisherige Wert erhalten; bei neuer Zeile wird der Wert aus dem Artikelstamm verwendet. Beispiel: |
EAN
|
varchar(13) string |
NULL |
EAN/UPC. Dient zur Suche des Artikels und wird in Beispiel: |
ItemNrSuppl
|
varchar(50) string |
NULL |
Artikelnummer des Lieferanten. Dient nur zusammen mit Beispiel: |
AddEAN
|
bit boolean |
0 |
Bei 1 wird immer eine neue Erlaubte Werte
Beispiel: |
PreferredSupplier
|
smallint int |
NULL |
Kennzeichen für den bevorzugten Lieferanten. Bei 1 werden alle anderen Erlaubte Werte
Beispiel: |
MinOrderQty
|
int | NULL |
Mindestbestellmenge beim Lieferanten. Ohne Angabe bleibt der bisherige Wert erhalten; eine neue Zeile erhält NULL. Beispiel: |
OnlyPU
|
bit boolean |
NULL |
Nur in Verpackungseinheiten bestellen ( Beispiel: |
ItemDeliveryTime
|
int | NULL |
Lieferzeit des Lieferanten ( Beispiel: |
Antwort
Result-Set 1 · Immer; genau eine Statuszeile (Fehler, Warnung, Update- oder Insert-Ergebnis).
Statuszeile mit dem Ergebnis des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(19) string |
|
Message
Kann leer sein |
varchar string |
Fehlertext oder bei Erfolg die gespeicherten 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 | ItemNrInt {ItemNrInt} not match to ItemKey {ItemKey} | `ItemKey` und `ItemNrInt` wurden gemeinsam übergeben, gehören aber nicht zum selben Artikel. Nur einen Wert übergeben oder die Werte korrigieren. |
| Error | Supplier with SupplNr:{SupplNr} does not exist. | In `Suppliers` existiert kein Lieferant mit der angegebenen `SupplNr`. |
| Error | Please specify at least one parameter. | Keiner der Parameter `ItemKey`, `EAN`, `ItemNrSuppl`, `ItemNrInt` wurde übergeben. |
| Error | More then one item was identified with the given parameters. | Die Kennungen treffen auf mehrere Artikel oder (bei `AddEAN = 0`) auf mehrere `AddItems`-Zeilen desselben Lieferanten zu. Eine eindeutigere Kennung wie `ItemKey` verwenden. |
| Warning | Item with EANUPC: {EAN} and Supplier number "{SupplNr}" already exists. | Bei `AddEAN = 1` existiert bereits eine `AddItems`-Zeile mit dieser EAN und diesem Lieferanten; es wird nichts angelegt. |
| Error | No items found with given parameters. | Keine `AddItems`-Zeile passt zu den Kennungen. Tritt auch auf, wenn der Artikel existiert, aber noch keine `AddItems`-Zeile hat. |
| Error | {ERROR_MESSAGE()} | Beim Aktualisieren oder Anlegen ist ein SQL-Fehler aufgetreten. 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:pixiSetItemSupplier>
<!-- <ItemKey>10452</ItemKey> -->
<!-- <ItemNrInt>ART-100245</ItemNrInt> -->
<SupplNr>L001</SupplNr>
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <ItemNrSuppl>LF-4711</ItemNrSuppl> -->
<!-- <AddEAN>0</AddEAN> -->
<!-- <PreferredSupplier>1</PreferredSupplier> -->
<!-- <MinOrderQty>10</MinOrderQty> -->
<!-- <OnlyPU>0</OnlyPU> -->
<!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
</ns1:pixiSetItemSupplier>
</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:pixiSetItemSupplier>
<!-- <ItemKey>10452</ItemKey> -->
<!-- <ItemNrInt>ART-100245</ItemNrInt> -->
<SupplNr>L001</SupplNr>
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <EAN>4006381333931</EAN> -->
<!-- <ItemNrSuppl>LF-4711</ItemNrSuppl> -->
<!-- <AddEAN>0</AddEAN> -->
<!-- <PreferredSupplier>1</PreferredSupplier> -->
<!-- <MinOrderQty>10</MinOrderQty> -->
<!-- <OnlyPU>0</OnlyPU> -->
<!-- <ItemDeliveryTime>5</ItemDeliveryTime> -->
</ns1:pixiSetItemSupplier>
</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' => '10452',
// 'ItemNrInt' => 'ART-100245',
'SupplNr' => 'L001',
// 'SupplPrice' => '12.50',
// 'EAN' => '4006381333931',
// 'ItemNrSuppl' => 'LF-4711',
// 'AddEAN' => '0',
// 'PreferredSupplier' => '1',
// 'MinOrderQty' => '10',
// 'OnlyPU' => '0',
// 'ItemDeliveryTime' => '5',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetItemSupplier', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetItemSupplier