pixiSetItemStatus
Aktiviert oder deaktiviert einen Artikel oder dessen Lieferantenzuordnung und stellt den Artikel für den Shop-Export in die Warteschlange.
Setzt den Status eines Artikels.
- Artikel ermitteln. Der Artikel wird in
ItemsüberItemKey(nur wennItemKeyübergeben wird) oder überItemNrIntgesucht. Wird kein Artikel gefunden, wird Status404geliefert. Werden mehrere Artikel gefunden, wird Status409geliefert. Das kann auch passieren, wennItemKeyundItemNrIntgemeinsam übergeben werden und auf verschiedene Artikel verweisen. - Status setzen.
- Ohne
SupplierID(oder mit Leerstring): Das FlagEnableddes Artikels inItemswird auf den Wert vonEnabledgesetzt. - Mit
SupplierID: Der Lieferantendatensatz des Artikels inAddItems(über den Artikel undSupplNr=SupplierID) wird gesucht. Bei keinem oder mehreren Treffern wird Status404bzw.409geliefert. Bei genau einem Treffer wird dessen FlagActiveaufEnabledgesetzt. Das FlagEnableddes Artikels selbst bleibt in diesem Fall unverändert. - Schlägt das Update fehl, wird Status
500mit der SQL-Fehlermeldung geliefert.
- Ohne
- Bei Erfolg wird der Artikel zur Neuberechnung und zum erzwungenen Export in den Shop in die Warteschlange gestellt. Danach wird der Artikel geliefert, mit
ItemKey,ItemNrInt,Enabled, der übergebenenSupplNrund, falls ein Lieferant übergeben wurde, dem FlagActivedes Lieferantendatensatzes.
Im Fehlerfall wird stattdessen eine einzelne Zeile mit Status und ErrorMsg geliefert.
Hinweise
- Leere Fehlermeldung: Wird
ItemKeynicht übergeben und der Artikel nicht gefunden, ergibt die404-Meldung NULL. Grund ist, dass die MeldungItemKeyohne NULL-Behandlung verkettet, sodassErrorMsgleer sein kann. Maßgeblich istStatus. - Leeres Ergebnis trotz Erfolg: Das Erfolgsergebnis verknüpft
ItemsmitAddItems. Ein Artikel ohne Lieferantendatensatz (AddItems) liefert daher keine Zeile, obwohl das Update erfolgreich war. - Nebeneffekt bei Erfolg:
Pixi_ExportItemChangesToShopfügt den Artikel mitForceToExport = 1inpixi.ItemRecalculateStockQueueein. Im Fehlerfall wird kein Export eingereiht. - Transaktionen und Sperren: Es wird keine explizite Transaktion verwendet. Lesezugriffe nutzen
NOLOCK, UpdatesROWLOCK. - Temporäre Tabellen: Sie werden über
util.TempTableDropgelöscht, dessen Definition nicht beiliegt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemNrInt
|
varchar(50) string |
NULL |
Interne Artikelnummer. Dient zur Suche des Artikels, wenn Beispiel: |
ItemKey
|
int | NULL |
Interner Schlüssel des Artikels. Alternative zu Beispiel: |
Enabled
|
bit boolean |
1 |
Neuer Status. Er wird in Erlaubte Werte
Beispiel: |
SupplierID
|
varchar(4) string |
NULL |
Lieferantennummer ( Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg (Status 200); kann leer sein, wenn der Artikel keinen AddItems-Datensatz hat
Der aktualisierte Artikel. Ohne SupplierID wird eine eindeutige Zeile geliefert, bei der SupplNr und Active NULL sind.
| Spalte | Typ | Beschreibung |
|---|---|---|
ItemKey
|
int |
Interner Schlüssel des Artikels |
ItemNrInt
Kann leer sein |
varchar(50) string |
Interne Artikelnummer |
Enabled
Kann leer sein |
bit boolean |
Aktuelles Aktiv-Flag des Artikels |
SupplNr
Kann leer sein |
varchar(4) string |
Übergebene Lieferantennummer oder NULL |
Active
Kann leer sein |
bit boolean |
Aktiv-Flag des Lieferantendatensatzes. NULL, wenn kein Lieferant übergeben wurde. |
Result-Set 2 · Im Fehlerfall (Status 404, 409 oder 500)
Statuszeile mit der Fehlerbeschreibung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(3) string |
Fehlercode: |
ErrorMsg
Kann leer sein |
varchar(2000) string |
Fehlermeldung; kann NULL sein (siehe Hinweise) |
Beispielantwort
<SqlRowSet1>
<row>
<ItemKey>4711</ItemKey>
<ItemNrInt>A-10045</ItemNrInt>
<Enabled>1</Enabled>
<SupplNr>LIE1</SupplNr>
<Active>0</Active>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 404 | Item with ItemNrInt/ItemKey: {ItemNrInt}/{ItemKey} was not found. | Kein Artikel passt zu `ItemKey` oder `ItemNrInt`. Wurde `ItemKey` nicht übergeben, ist die Meldung NULL. |
| 409 | Item with ItemNrInt: {ItemNrInt} could not be uniquely identified. {RowCount} items found. | Mehrere Artikel passen, z. B. wenn `ItemKey` und `ItemNrInt` auf verschiedene Artikel verweisen. Nur einen Identifikator übergeben. |
| 404 | Item with ItemNrInt/ItemKey: {ItemNrInt}/{ItemKey} and SupplierID: "{SupplierID}" was not found. | Der Artikel hat keinen `AddItems`-Datensatz für den angegebenen Lieferanten. |
| 409 | Item with ItemNrInt/ItemKey: {ItemNrInt}/{ItemKey} and SupplierID: "{SupplierID}" could not be uniquely identified. {RowCount} items found. | Der Artikel hat mehrere `AddItems`-Datensätze für den angegebenen Lieferanten. |
| 500 | {ERROR_MESSAGE()} | Das Update von `Items` bzw. `AddItems` ist fehlgeschlagen; der SQL-Fehlertext wird geliefert. |
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:pixiSetItemStatus>
<!-- <ItemNrInt>A-10045</ItemNrInt> -->
<!-- <ItemKey>4711</ItemKey> -->
<!-- <Enabled>0</Enabled> -->
<!-- <SupplierID>LIE1</SupplierID> -->
</ns1:pixiSetItemStatus>
</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:pixiSetItemStatus>
<!-- <ItemNrInt>A-10045</ItemNrInt> -->
<!-- <ItemKey>4711</ItemKey> -->
<!-- <Enabled>0</Enabled> -->
<!-- <SupplierID>LIE1</SupplierID> -->
</ns1:pixiSetItemStatus>
</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 = [
// 'ItemNrInt' => 'A-10045',
// 'ItemKey' => '4711',
// 'Enabled' => '0',
// 'SupplierID' => 'LIE1',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetItemStatus', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetItemStatus