pixiGetResolvedItemDependencies
Löst eine Liste von Artikeln in die tatsächlichen Lagerartikel auf: Nicht-Bundle-Artikel bleiben erhalten, Bundles werden durch ihre Bestandteile mit multiplizierten Mengen ersetzt.
Nimmt eine Liste von Artikeln mit Mengen als XML entgegen und liefert die Artikel, von denen die Anfrage tatsächlich abhängt, z. B. um Bestand für einen Auftrag zu prüfen oder zu reservieren.
Ablauf:
- Das XML in
ItemXMLwird ab/Items/Itemgelesen. JedesItemkann den Artikel überItemKey, überItemNrIntoder über beide identifizieren und enthält eine MengeQty. - Fehlende Kennungen werden aus der Tabelle
Itemsergänzt: fehltItemKey, wird er überItemNrIntermittelt; fehltItemNrInt, wird sie überItemKeyermittelt. - Einträge, deren
ItemKeynicht ermittelt werden kann (unbekannte Artikelnummer), werden ohne Meldung verworfen. - Auflösung:
- Artikel mit
IsBundle = 0werden mit der angefragten MengeQtygeliefert. - Artikel mit
IsBundle = 1werden selbst nicht geliefert. Stattdessen wird jeder Bestandteil ausBundleItemsmit der MengeQty× Bestandteilmenge geliefert.
- Artikel mit
- Das Ergebnis wird nach
ItemKeygruppiert: Mengen desselben Artikels (mehrfach angegeben oder in mehreren Bundles enthalten) werden summiert.
Wird ItemXML nicht übergeben, wird eine leere Ergebnismenge geliefert. Eine Sortierung ist nicht festgelegt.
Hinweise
- Nur lesend; alle Zugriffe auf
ItemsundBundleItemserfolgen mitNOLOCK, daher können nicht festgeschriebene Daten geliefert werden. - Bundles werden nur eine Ebene tief aufgelöst. Ein Bestandteil, der selbst ein Bundle ist, wird unverändert geliefert und nicht weiter aufgelöst.
- Sind
ItemKeyundItemNrIntbeide angegeben, wirdItemKeyverwendet;ItemNrIntwird nicht dagegen geprüft. - Unbekannte Artikel werden ohne Fehlermeldung verworfen; bei Bedarf das Ergebnis mit der Anfrage abgleichen.
- Fehlt
Qtybei einem Eintrag, ist dessen MengeNULLund trägt nicht zur summiertenQtybei (die Summe istNULL, wenn alle BeiträgeNULLsind). - Ungültiges XML führt zu einem SQL-Fehler aus
sp_xml_preparedocument, der alsSqlMessagezurückkommt. - Der Datentyp der gelieferten
Qtyhängt vom Typ vonBundleItems.Qtyab, der im Code nicht sichtbar ist.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemXML
|
varchar(max) xml |
NULL |
XML-Liste der angefragten Artikel. Wurzel Beispiel:
|
Antwort
Result-Set 1 · Immer (leer, wenn ItemXML NULL ist oder kein Artikel aufgelöst werden konnte)
Eine Zeile je aufgelöstem Lagerartikel mit der benötigten Gesamtmenge.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Schlüssel des aufgelösten Artikels (Nicht-Bundle-Artikel aus der Anfrage oder Bundle-Bestandteil). |
ItemNrInt
Kann leer sein |
varchar(50) string |
Interne Artikelnummer des aufgelösten Artikels aus |
Qty
Kann leer sein |
decimal |
Benötigte Gesamtmenge: Summe der angefragten Mengen, bei Bundle-Bestandteilen multipliziert mit der Bestandteilmenge. |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>1052</ItemKey>
<ItemNrInt>ART-10052</ItemNrInt>
<Qty>3</Qty>
</row>
<row>
<ItemKey>1077</ItemKey>
<ItemNrInt>ART-10077</ItemNrInt>
<Qty>2</Qty>
</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:pixiGetResolvedItemDependencies>
<!-- <ItemXML><![CDATA[<Items><Item><ItemKey>1052</ItemKey><ItemNrInt>ART-10052</ItemNrInt><Qty>2</Qty></Item><Item><ItemNrInt>BUNDLE-200</ItemNrInt><Qty>1</Qty></Item></Items>]]></ItemXML> -->
</ns1:pixiGetResolvedItemDependencies>
</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:pixiGetResolvedItemDependencies>
<!-- <ItemXML><![CDATA[<Items><Item><ItemKey>1052</ItemKey><ItemNrInt>ART-10052</ItemNrInt><Qty>2</Qty></Item><Item><ItemNrInt>BUNDLE-200</ItemNrInt><Qty>1</Qty></Item></Items>]]></ItemXML> -->
</ns1:pixiGetResolvedItemDependencies>
</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 = [
// 'ItemXML' => '<Items><Item><ItemKey>1052</ItemKey><ItemNrInt>ART-10052</ItemNrInt><Qty>2</Qty></Item><Item><ItemNrInt>BUNDLE-200</ItemNrInt><Qty>1</Qty></Item></Items>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetResolvedItemDependencies', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetResolvedItemDependencies