pixiSetItemBuyingInfoXML
Aktualisiert Einkaufsdaten wie Mindestbestand, Mindestbestellmenge, Bestelleinheit, Soll- und Sicherheitsbestand für mehrere Artikel aus einem XML-Dokument.
Liest pro Artikel ein Item-Element aus /BuyingInfo/Item (elementbasiert) und schreibt die übergebenen Werte in die Artikelstammdaten, die lagerspezifischen Artikeldaten und die Lieferanten-Artikeldaten.
Ermittlung des Artikels
Ein Artikel kann über ItemKey, ItemNrInt oder EAN identifiziert werden. Die Suche erfolgt in dieser Reihenfolge: über ItemKey, dann über ItemNrInt, dann über EAN. Jeder Treffer überschreibt die Kennungen mit denen des gefundenen Artikels, ein späterer Treffer hat also Vorrang. Einträge, zu denen kein Artikel gefunden wird, werden ohne Meldung übergangen.
Bereinigung der Werte
- Leere Textfelder (
ItemNrInt,EAN,Location,SupplierCode) sowie ein leerer oder mit0belegterItemKeygelten als nicht übergeben. - Mengenfelder (
MinStockQty,MinOrderQty,OrderUnit,VPE,TargetStock,SafetyStock) werden nur verwendet, wenn sie numerisch sind; andernfalls werden sie ignoriert. OrderUnitundVPEwerden zusammengeführt: IstOrderUnitangegeben, wird dieser Wert für beide verwendet, sonstVPEfür beide.- Ein negativer
TargetStockwird auf0gesetzt. - Nicht übergebene Felder (NULL) bleiben unverändert.
Was aktualisiert wird
MinStockQty: im Artikelstamm (items) nur, wenn keineLocationangegeben ist; inItemLocationSpecificfür alle Lager des Artikels, wenn keineLocationangegeben ist, sonst nur für dieses Lager.MinOrderQty: gleiche Regel wieMinStockQty; zusätzlich beim Lieferanten-Artikel (AddItems) für den inSupplierCodeangegebenen Lieferanten (unabhängig vonLocation).OrderUnit/VPE: nur im Artikelstamm und nur, wenn keineLocationangegeben ist.TargetStockundSafetyStock: nur inItemLocationSpecific, für alle Lager oder nur für die angegebeneLocation.
Ergebnis
Liefert pro gefundenem Artikel eine Zeile mit den ermittelten Kennungen und den übernommenen Werten.
Hinweise
- Alle Änderungen laufen in einer Transaktion (bzw. einem Savepoint, wenn der Aufrufer bereits eine Transaktion geöffnet hat). Bei einem Fehler werden die Änderungen zurückgerollt und der Fehler über
log.InsertErrorprotokolliert; dieses Objekt liegt nicht vor, daher ist offen, ob der Fehler an den Aufrufer weitergegeben wird. In diesem Fall wird keine Ergebnismenge geliefert. ISNUMERICakzeptiert auch Werte wie1.5oder1e3. Solche Werte bestehen die Prüfung, scheitern aber bei der Umwandlung nachintund brechen den gesamten Aufruf mit Rollback ab. Nur ganze Zahlen übergeben.- Die Artikelsuche verwendet
NOLOCK. Teilen sich mehrere Artikel dieselbe EAN, kann die EAN-Suche einen beliebigen davon wählen und einen Treffer überItemKeyoderItemNrIntüberschreiben. - Werte können nicht geleert werden: Ein leeres Element bedeutet "nicht ändern". Zum Zurücksetzen einer Menge
0übergeben. Locationwird in der Ergebnismenge nicht zurückgegeben, und die Zeile zeigt nicht, ob ein Lager- oder Lieferantendatensatz tatsächlich existierte.- Der Kopfkommentar ("Set Tags for Items") entspricht nicht der tatsächlichen Funktion der Prozedur.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
BuyingXML
|
varchar(max) xml |
NULL |
XML-Dokument mit einem Beispiel:
|
Antwort
Result-Set 1 · Bei Erfolg (kein Fehler während der Verarbeitung)
Eine Zeile pro XML-Eintrag, zu dem ein Artikel gefunden wurde, mit den ermittelten Kennungen und den übernommenen Werten.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Schlüssel des gefundenen Artikels. |
ItemNrInt
Kann leer sein |
varchar(50) string |
Interne Artikelnummer des gefundenen Artikels. |
EAN
Kann leer sein |
varchar(13) string |
EAN/UPC des gefundenen Artikels. |
MinStockQty
Kann leer sein |
varchar(10) string |
Übernommener Mindestbestand; NULL, wenn nicht übergeben. |
MinOrderQty
Kann leer sein |
varchar(10) string |
Übernommene Mindestbestellmenge; NULL, wenn nicht übergeben. |
SupplierCode
Kann leer sein |
varchar(4) string |
Lieferantenkürzel aus der Eingabe; NULL, wenn nicht übergeben. |
TargetStock
Kann leer sein |
varchar(10) string |
Übernommener Sollbestand (negative Werte auf 0 gesetzt); NULL, wenn nicht übergeben. |
SafetyStock
Kann leer sein |
varchar(10) string |
Übernommener Sicherheitsbestand; NULL, wenn nicht übergeben. |
PackingUnit
Kann leer sein |
varchar(10) string |
Übernommene Bestell-/Verpackungseinheit ( |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>10045</ItemKey>
<ItemNrInt>A-10045</ItemNrInt>
<EAN>4006381333931</EAN>
<MinStockQty>20</MinStockQty>
<MinOrderQty>50</MinOrderQty>
<SupplierCode>L001</SupplierCode>
<TargetStock>100</TargetStock>
<SafetyStock>15</SafetyStock>
<PackingUnit>10</PackingUnit>
</row>
<row>
<ItemKey>10046</ItemKey>
<ItemNrInt>A-10046</ItemNrInt>
<EAN>4006381333948</EAN>
<MinStockQty>5</MinStockQty>
<TargetStock>30</TargetStock>
<SafetyStock>3</SafetyStock>
<PackingUnit>6</PackingUnit>
</row>
</SqlRowSet1>
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:pixiSetItemBuyingInfoXML>
<!-- <BuyingXML><![CDATA[<BuyingInfo><Item><ItemNrInt>A-10045</ItemNrInt><ItemKey>10045</ItemKey><EAN>4006381333931</EAN><MinStockQty>20</MinStockQty><MinOrderQty>50</MinOrderQty><Location>001</Location><OrderUnit>10</OrderUnit><VPE>10</VPE><SupplierCode>L001</SupplierCode><TargetStock>100</TargetStock><SafetyStock>15</SafetyStock></Item><Item><ItemNrInt>A-10046</ItemNrInt><ItemKey></ItemKey><EAN></EAN><MinStockQty>5</MinStockQty><MinOrderQty></MinOrderQty><Location></Location><OrderUnit></OrderUnit><VPE>6</VPE><SupplierCode></SupplierCode><TargetStock>30</TargetStock><SafetyStock>3</SafetyStock></Item></BuyingInfo>]]></BuyingXML> -->
</ns1:pixiSetItemBuyingInfoXML>
</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:pixiSetItemBuyingInfoXML>
<!-- <BuyingXML><![CDATA[<BuyingInfo><Item><ItemNrInt>A-10045</ItemNrInt><ItemKey>10045</ItemKey><EAN>4006381333931</EAN><MinStockQty>20</MinStockQty><MinOrderQty>50</MinOrderQty><Location>001</Location><OrderUnit>10</OrderUnit><VPE>10</VPE><SupplierCode>L001</SupplierCode><TargetStock>100</TargetStock><SafetyStock>15</SafetyStock></Item><Item><ItemNrInt>A-10046</ItemNrInt><ItemKey></ItemKey><EAN></EAN><MinStockQty>5</MinStockQty><MinOrderQty></MinOrderQty><Location></Location><OrderUnit></OrderUnit><VPE>6</VPE><SupplierCode></SupplierCode><TargetStock>30</TargetStock><SafetyStock>3</SafetyStock></Item></BuyingInfo>]]></BuyingXML> -->
</ns1:pixiSetItemBuyingInfoXML>
</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 = [
// 'BuyingXML' => '<BuyingInfo><Item><ItemNrInt>A-10045</ItemNrInt><ItemKey>10045</ItemKey><EAN>4006381333931</EAN><MinStockQty>20</MinStockQty><MinOrderQty>50</MinOrderQty><Location>001</Location><OrderUnit>10</OrderUnit><VPE>10</VPE><SupplierCode>L001</SupplierCode><TargetStock>100</TargetStock><SafetyStock>15</SafetyStock></Item><Item><ItemNrInt>A-10046</ItemNrInt><ItemKey></ItemKey><EAN></EAN><MinStockQty>5</MinStockQty><MinOrderQty></MinOrderQty><Location></Location><OrderUnit></OrderUnit><VPE>6</VPE><SupplierCode></SupplierCode><TargetStock>30</TargetStock><SafetyStock>3</SafetyStock></Item></BuyingInfo>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetItemBuyingInfoXML', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetItemBuyingInfoXML