pixiItemSearch
Sucht Artikel nach Name bzw. Artikelcode, EAN/UPC, Konfigurationstyp und Lieferant und liefert Artikelzeilen inklusive Lieferantenpreisen und offenen Lieferantenbestellmengen.
Wrapper um die interne Prozedur GOSItemSearch1. Die Parameter werden weitergereicht; Lieferantenpreise und Statistiken werden immer angefordert. Da kein Benutzername übergeben wird, sind Lieferanten- (EK-)Preise immer sichtbar.
Ablauf:
- Ist
SupplNrleer, wirdShowOnlyItemsForExactSupplierauf0gesetzt. RowCount=0wird durch die EinstellungItemSearchLimitersetzt. Ist auch diese0, gilt300.- Ist
EANUPCgesetzt, werden die Artikel-IDs gesammelt, deren Code inpixi.ItemCodeexakt übereinstimmt. Dabei zählen nur Codetypen, die als scannbar markiert sind. - Ist
ItemNamegesetzt und hat der EAN-Schritt nichts gefunden, wirdItemNamemit allen Artikelcodes verglichen:- Passt genau ein Code exakt, ist dieser Artikel das Ergebnis. Die Freitextsuche wird dann deaktiviert und Codetyp
1verwendet. - Andernfalls werden alle Artikel gesammelt, deren Code mit
ItemNamebeginnt.ItemNamedient dann zusätzlich als Smart-Search-Begriff.
- Passt genau ein Code exakt, ist dieser Artikel das Ergebnis. Die Freitextsuche wird dann deaktiviert und Codetyp
ConfigTypewird als Filter für den Konfigurationstyp (TonTrArt) weitergegeben.SupplNrwird als Lieferantenfilter weitergegeben.LocIDbestimmt das Lager (Standard001).- Es wird immer die Datenbankwährung verwendet. Ein Wechselkurs wird nicht übergeben.
- Pro Artikel wird die offene Menge aus Lieferantenbestellungen berechnet: bestellt minus geliefert minus nicht geliefert. Gezählt werden nur Lieferantenbestellungen mit vollständig offenem Status und Mengen für das gewählte Lager. Bei angegebener
SupplNrzählen nur Bestellungen dieses Lieferanten. - Die abschließende Abfrage liefert
SELECT DISTINCT TOP (RowCount)Zeilen. Sie wird dynamisch aufgebaut.
Die Abfrage hat kein ORDER BY; die ORDER-BY-Klausel ist im Code auskommentiert. Die Reihenfolge der Zeilen ist daher nicht garantiert.
Hinweise
- Ergebnisspalten, Artikelfilter (Lieferant, Konfigurationstyp, Smart Search) und Joins stammen aus der Prozedur
pixi_ItemSearchPrepareDynamicQuery. Deren Definition liegt nicht vor, daher kann die genaue Spaltenliste hier nicht dokumentiert werden. - Alle Lesezugriffe verwenden
NOLOCK; Ergebnisse können daher nicht festgeschriebene Daten enthalten. - Das Verhalten hängt von den Einstellungen
ItemSearchLimit,MultiCurrencyEnabledundHalOrdersActiveDaysab. Die Alt-EinstellungShowSupplPriceOnlyToTheseUserswird gelesen, hat aber keine Wirkung, da kein Benutzername übergeben wird. ShowStatistics = 1wird anGOSItemSearch1übergeben, im vorliegenden Code dieser Prozedur aber nicht verwendet.- Stolperfalle: Bei genau einem exakten Code-Treffer über
ItemNamesetzt der Code zuerstItemNameauf NULL und kopiert den Wert danach nachEANUPC. Dadurch wird auchEANUPCNULL. - Einfache Anführungszeichen in
ItemNameundSupplNrwerden maskiert, bevor sie in das dynamische SQL eingesetzt werden.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
RowCount
|
int | 0 |
Maximale Anzahl Zeilen. Bei Beispiel: |
ItemName
|
varchar(100) string |
– |
Suchbegriff. Ein exakter Einzeltreffer auf einen beliebigen Artikelcode liefert diesen Artikel. Andernfalls werden Artikel gesammelt, deren Code mit dem Begriff beginnt, und der Begriff dient zusätzlich als Smart Search über die Artikeldaten. Beispiel: |
ConfigType
|
varchar(4) string |
– |
Filter auf den Konfigurationstyp, wird als |
SupplNr
|
varchar(4) string |
– |
Lieferantennummer. Dient als Lieferantenfilter und beschränkt die offenen Lieferantenbestellmengen auf diesen Lieferanten. Beispiel: |
EANUPC
|
varchar(13) string |
– |
EAN/UPC-Code. Wird exakt mit Artikelcodes verglichen, deren Codetyp scannbar ist. Beispiel: |
LocID
|
varchar(3) string |
001 |
Lager-ID für Bestandsdaten und offene Lieferantenbestellmengen. Beispiel: |
ShowOnlyItemsForExactSupplier
|
bit boolean |
0 |
Bei Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein)
Artikelzeilen aus der dynamischen Abfrage, begrenzt auf RowCount eindeutige Zeilen, ohne garantierte Reihenfolge. Die Spalten werden von pixi_ItemSearchPrepareDynamicQuery festgelegt, deren Definition nicht vorliegt. Sie umfassen Artikeldaten, Lieferantenpreise und Bestandsdaten zum Lager; die offenen Lieferantenbestelldaten werden in einer temporären Tabelle berechnet.
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:pixiItemSearch>
<!-- <RowCount>50</RowCount> -->
<!-- <ItemName>T-Shirt</ItemName> -->
<!-- <ConfigType>?</ConfigType> -->
<!-- <SupplNr>L001</SupplNr> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
<!-- <LocID>001</LocID> -->
<!-- <ShowOnlyItemsForExactSupplier>0</ShowOnlyItemsForExactSupplier> -->
</ns1:pixiItemSearch>
</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:pixiItemSearch>
<!-- <RowCount>50</RowCount> -->
<!-- <ItemName>T-Shirt</ItemName> -->
<!-- <ConfigType>?</ConfigType> -->
<!-- <SupplNr>L001</SupplNr> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
<!-- <LocID>001</LocID> -->
<!-- <ShowOnlyItemsForExactSupplier>0</ShowOnlyItemsForExactSupplier> -->
</ns1:pixiItemSearch>
</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 = [
// 'RowCount' => '50',
// 'ItemName' => 'T-Shirt',
// 'ConfigType' => '?',
// 'SupplNr' => 'L001',
// 'EANUPC' => '4006381333931',
// 'LocID' => '001',
// 'ShowOnlyItemsForExactSupplier' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiItemSearch', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiItemSearch