pixiDispoGetItems
Liefert einen Block von Artikeln mit bevorzugtem Lieferanten, Preisen, Bestand und lagerortspezifischen Dispositionsdaten für den Export in die Logcontrol-Dispo-Software.
Exportiert Artikelstammdaten für die Dispositionssoftware von Logcontrol. Der Aufruf arbeitet blockweise.
- Kandidatenauswahl: Aus
itemswerden die erstenItemCountArtikel mitItemKeygrößer alsItemKeyStart(aufsteigend nachItemKey) samt Standardlieferant gelesen. - Bevorzugter Lieferant: Existiert ein
AddItems-Datensatz mitPreferredSupplier = 1, ersetzt dessen Lieferant den Standardlieferanten des Artikels. - Zusatzdaten je Artikel:
- Artikel-Tags (Tags mit
TypeId = 1) als kommagetrennte Liste, - das früheste
OrderDatealler Auftragspositionen des Artikels, - die Summe der Lagerplatzmengen (
BinItemQTY) über alle Lagerplätze in Lagerorten, die kein Sonderlager sind (SpecialStock <> 1).
- Artikel-Tags (Tags mit
- Ergebnis: eine Zeile je Artikel und Lagerort aus
ItemLocationSpecific. Es werden nur Zeilen geliefert, bei denen- der Lieferant in
Suppliersexistiert, - ein
AddItems-Datensatz für Artikel und diesen Lieferanten vorhanden ist, - der Lagerort kein Sonderlager ist,
- und, falls
LocationIdsangegeben ist, dieLocIDin der kommagetrennten Liste enthalten ist.
- der Lieferant in
Die Sortierung erfolgt aufsteigend nach ItemKey. Dezimalwerte (SupplPrice, Price) werden als Text mit Komma als Dezimaltrennzeichen geliefert, Datumswerte im Format tt.mm.jjjj. Einfache und doppelte Anführungszeichen werden aus dem Artikelnamen entfernt.
Paging: Für den nächsten Block ItemKeyStart auf den höchsten ItemKey des vorherigen Blocks setzen.
Hinweise
- Alle Lesezugriffe erfolgen mit
NOLOCK; das Ergebnis kann nicht festgeschriebene Daten enthalten. ItemCountbegrenzt die Anzahl der Kandidatenartikel, nicht die Anzahl der Ergebniszeilen. Durch die Zeilen je Lagerort können es mehr Zeilen sein; durch die Inner Joins (Lieferant,AddItems,ItemLocationSpecific, Lagerort ohne Sonderlager, Lagerortfilter) können es weniger oder gar keine sein, obwohl weitere Artikel existieren. Ein leeres Ergebnis bedeutet daher nicht zwingend das Ende der Artikelliste;ItemKeyStartsollte über den Blockbereich weitergesetzt werden, statt abzubrechen.Quantitywird über die Auftragspositionsdaten verknüpft: Für Artikel ohne Auftragsposition istQuantityimmer0, auch wenn Bestand vorhanden ist.Quantityist die Summe über alle Lagerorte ohne Sonderlager, nicht die Menge des Lagerorts inLocationId(dafürLocationQuantity).Tagsbeginnt mit einem führenden Leerzeichen (nur das erste Komma wird entfernt); Sonderzeichen wie&werden durch die Verkettung XML-maskiert.- Ein leerer oder nur aus Leerzeichen bestehender Wert für
LocationIdswird wieNULLbehandelt (kein Lagerortfilter). Listeneinträge werden getrimmt und alsvarchar(10)verglichen. VATLevel:LbeiMwStSatz = 2,0beiMwStSatz = 3, sonstH.Typist immer0100.- Temporäre Tabellen werden über
util.TempTableDropgelöscht (nicht beigefügt).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKeyStart
|
int | 0 |
Es werden nur Artikel mit einem Beispiel: |
LocationIds
|
varchar(max) string |
NULL |
Optionale kommagetrennte Liste von Lagerort-IDs ( Beispiel: |
ItemCount
|
int | 1000 |
Maximale Anzahl der je Aufruf aus Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein)
Eine Zeile je Artikel und Lagerort mit Lieferanten-, Preis-, Bestands- und Dispositionsdaten, sortiert nach ItemKey.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Artikelschlüssel. |
SupplPrice
Kann leer sein |
varchar(30) string |
Einkaufspreis des Lieferanten aus |
ITemName
Kann leer sein |
string |
Artikelname ohne einfache und doppelte Anführungszeichen. |
VPE
|
decimal |
Verpackungseinheit ( |
MinStockQty
|
decimal |
Mindestbestand des Artikels in diesem Lagerort, |
MinOrderQty
|
decimal |
Mindestbestellmenge in diesem Lagerort, |
SupplNr
|
varchar(4) string |
Lieferantennummer (bevorzugter Lieferant, falls definiert, sonst Standardlieferant des Artikels). |
TontrText
|
string |
Text der Konfigurationsart ( |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer. |
ItemNrSuppl
Kann leer sein |
string |
Lieferantenartikelnummer aus |
Quantity
|
int |
Gesamte Lagerplatzmenge über alle Lagerorte ohne Sonderlager; |
ExportDate
|
varchar(10) string |
Aktuelles Datum im Format |
Typ
|
varchar(4) string |
Konstanter Satztyp |
SupplName
Kann leer sein |
string |
Name des Lieferanten. |
CreateDate
Kann leer sein |
varchar(10) string |
Anlagedatum des Artikels im Format |
OrderDate
|
varchar(10) string |
Frühestes Bestelldatum einer Auftragsposition des Artikels im Format |
Tags
|
varchar(4000) string |
Kommagetrennte Artikel-Tags (mit führendem Leerzeichen), leer wenn keine. |
SupplierDeliveryDays
|
int |
Standardlieferzeit des Lieferanten in Tagen, |
ACTIVE
Kann leer sein |
boolean |
Aktiv-Kennzeichen des Artikels ( |
Price
Kann leer sein |
varchar(30) string |
Verkaufspreis des Artikels als Text mit Komma als Dezimaltrennzeichen. |
VATLevel
|
varchar(1) string |
Mehrwertsteuerstufe: |
IsBundle
Kann leer sein |
boolean |
Kennzeichen, ob der Artikel ein Bundle ist. |
LocationId
Kann leer sein |
string |
Lagerort-ID ( |
LocationQuantity
Kann leer sein |
decimal |
Lagerortspezifische Menge aus |
TargetStock
|
decimal |
Sollbestand in diesem Lagerort, |
SafetyStock
|
decimal |
Sicherheitsbestand in diesem Lagerort, |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>1024</ItemKey>
<SupplPrice>4,2500</SupplPrice>
<ITemName>Kaffeebecher Keramik 300 ml</ITemName>
<VPE>6</VPE>
<MinStockQty>20</MinStockQty>
<MinOrderQty>12</MinOrderQty>
<SupplNr>L001</SupplNr>
<TontrText>-</TontrText>
<ItemNrInt>KB-300</ItemNrInt>
<ItemNrSuppl>MUG-300-W</ItemNrSuppl>
<Quantity>148</Quantity>
<ExportDate>14.05.2024</ExportDate>
<Typ>0100</Typ>
<SupplName>Keramik Großhandel GmbH</SupplName>
<CreateDate>03.02.2021</CreateDate>
<OrderDate>11.02.2021</OrderDate>
<Tags> Küche, Geschenk</Tags>
<SupplierDeliveryDays>5</SupplierDeliveryDays>
<ACTIVE>1</ACTIVE>
<Price>9,9500</Price>
<VATLevel>H</VATLevel>
<IsBundle>0</IsBundle>
<LocationId>001</LocationId>
<LocationQuantity>148</LocationQuantity>
<TargetStock>200</TargetStock>
<SafetyStock>30</SafetyStock>
</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:pixiDispoGetItems>
<!-- <ItemKeyStart>0</ItemKeyStart> -->
<!-- <LocationIds>001,002</LocationIds> -->
<!-- <ItemCount>1000</ItemCount> -->
</ns1:pixiDispoGetItems>
</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:pixiDispoGetItems>
<!-- <ItemKeyStart>0</ItemKeyStart> -->
<!-- <LocationIds>001,002</LocationIds> -->
<!-- <ItemCount>1000</ItemCount> -->
</ns1:pixiDispoGetItems>
</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 = [
// 'ItemKeyStart' => '0',
// 'LocationIds' => '001,002',
// 'ItemCount' => '1000',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDispoGetItems', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDispoGetItems