pixiSetItemEan
Setzt einen neuen EAN/UPC-Code für genau einen Artikel, der über Artikelschlüssel, interne Artikelnummer, Lieferantenartikelnummer oder aktuelle EAN ermittelt wird.
Ersetzt den EAN/UPC-Code eines einzelnen Artikels.
-
Mindestens ein Identifikator muss übergeben werden:
ItemKey,ItemNrInt,OldEanoderItemNrSuppl. Andernfalls lautet das Ergebnis401 No item ID provided. -
Die Prozedur zählt die Artikel, auf die irgendeiner der übergebenen Identifikatoren passt. Die Identifikatoren werden mit
ORverknüpft, nicht mitAND.- Kein Treffer:
402 Item not found. - Mehr als ein Treffer:
403 More than one item is found. Das gilt auch, wenn mehrere Identifikatoren übergeben werden, die auf unterschiedliche Artikel zeigen.
- Kein Treffer:
-
Bei genau einem Treffer wird die Einstellung
BMECatImport_Update_EANUPCgeprüft. Ist sie0oder nicht vorhanden, wird nichts geändert und das Ergebnis lautet405 .... -
Andernfalls wird in einer Transaktion
EANUPCaufNewEangesetzt:- in
Itemsfür den Artikel, - in
AddItemsfür alle Datensätze, derenItemRefauf den Artikel verweist.
Bei Erfolg lautet das Ergebnis
200 Item updated. Bei einem SQL-Fehler wird die Transaktion zurückgerollt und das Ergebnis lautet404 Unexpected error: .... - in
Der Ergebnistext wird immer in den Ausgabeparameter ResultMessage geschrieben. Zusätzlich wird er als einzeilige Ergebnismenge zurückgegeben, sofern SupressDataset nicht 1 ist.
Hinweise
- Fehler werden nicht ausgelöst. Sie werden als Text zurückgegeben, dessen erste drei Zeichen ein Statuscode sind (
200,401–405). Aufrufer sollten dieses Präfix auswerten. - Die Einstellung
BMECatImport_Update_EANUPCwird überfpixi_GetSettinggelesen. Eine fehlende Einstellung gilt als0; die Einstellung muss also mit einem Wert ungleich0vorhanden sein. NewEanwird nicht geprüft:- keine Prüfziffer- oder Formatprüfung,
- keine Eindeutigkeitsprüfung gegenüber anderen Artikeln,
NULLwird nicht abgewiesen und würde die EAN leeren.
- Da
ItemKeymit''verglichen wird, gilt einItemKeyvon0als "nicht übergeben". - Die Artikelsuche erfolgt mit
NOLOCK. - Der Text einer
404-Meldung wird auf 256 Zeichen gekürzt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interner Schlüssel des Artikels ( Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Interne Artikelnummer ( Beispiel: |
OldEan
|
varchar(13) string |
NULL |
Aktuelle EAN/UPC des Artikels ( Beispiel: |
ItemNrSuppl
|
varchar(50) string |
NULL |
Lieferantenartikelnummer ( Beispiel: |
NewEan
Pflicht
|
varchar(13) string |
– |
Neuer EAN/UPC-Code, der in Beispiel: |
SupressDataset
|
bit boolean |
0 |
Steuert, ob das Ergebnis zusätzlich als Ergebnismenge zurückgegeben wird. Erlaubte Werte
Beispiel: |
ResultMessage
OUTPUT
|
varchar(256) string |
NULL |
Ausgabe: Statuscode gefolgt von einem Meldungstext, z. B. |
Antwort
Result-Set 1 · Wenn SupressDataset 0 oder NULL ist
Eine Zeile mit der Ergebnismeldung, sowohl bei Erfolg als auch bei Fehlern.
| Spalte | Typ | Beschreibung |
|---|---|---|
ResultMessage
|
varchar(256) string |
Statuscode ( |
Beispielantwort
<SqlRowSet1>
<row>
<ResultMessage>200 Item updated</ResultMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 401 | 401 No item ID provided | Keiner der Parameter `ItemKey`, `ItemNrInt`, `OldEan` oder `ItemNrSuppl` wurde übergeben (oder alle sind leer bzw. 0). Mindestens einen Identifikator übergeben. |
| 402 | 402 Item not found | Kein Artikel passt zu einem der übergebenen Identifikatoren. |
| 403 | 403 More than one item is found | Die Identifikatoren treffen auf mehr als einen Artikel zu, z. B. bei nicht eindeutiger EAN oder Lieferantenartikelnummer oder bei mehreren Identifikatoren für unterschiedliche Artikel. Einen eindeutigen Identifikator wie `ItemKey` verwenden. |
| 404 | 404 Unexpected error: {ErrorNumber} {ErrorMessage} | Beim Update ist ein SQL-Fehler aufgetreten. Die Transaktion wird zurückgerollt; es wird nichts geändert. |
| 405 | 405 Setting BMECatImport_Update_EANUPC is off which is preventing the EAN from being updated | Die Einstellung `BMECatImport_Update_EANUPC` ist `0` oder nicht vorhanden. Die Einstellung aktivieren, um EAN-Änderungen zu erlauben. |
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:pixiSetItemEan>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-10001</ItemNrInt> -->
<!-- <OldEan>4006381333931</OldEan> -->
<!-- <ItemNrSuppl>SUP-778899</ItemNrSuppl> -->
<NewEan>4012345678901</NewEan>
<!-- <SupressDataset>0</SupressDataset> -->
<!-- <ResultMessage>?</ResultMessage> -->
</ns1:pixiSetItemEan>
</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:pixiSetItemEan>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-10001</ItemNrInt> -->
<!-- <OldEan>4006381333931</OldEan> -->
<!-- <ItemNrSuppl>SUP-778899</ItemNrSuppl> -->
<NewEan>4012345678901</NewEan>
<!-- <SupressDataset>0</SupressDataset> -->
<!-- <ResultMessage>?</ResultMessage> -->
</ns1:pixiSetItemEan>
</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 = [
// 'ItemKey' => '12345',
// 'ItemNrInt' => 'ART-10001',
// 'OldEan' => '4006381333931',
// 'ItemNrSuppl' => 'SUP-778899',
'NewEan' => '4012345678901',
// 'SupressDataset' => '0',
// 'ResultMessage' => '?',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetItemEan', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetItemEan