pixiTagMatchDeleteForItems
Entfernt Tag-Zuordnungen (TagMatch) von Artikeln für eine als XML übergebene Liste von Tag/Artikel-Paaren und liefert je Paar eine Statuszeile.
Löscht Zuordnungen von Artikel-Tags zu Artikeln als Massenoperation.
Eingabe
TagsXML enthält je Artikel ein Item-Element mit einer TagList aus Tag-Elementen. Jedes Tag-Element ist eine Anfrage (Tag/Artikel-Paar). Der Artikel wird entweder über ItemId (Artikelschlüssel) oder über ItemNrInt (interne Artikelnummer, Suche in ItemCode mit Codetyp 2) identifiziert. Ist ItemId angegeben, hat diese Vorrang vor ItemNrInt. Die Werte 0 für TagId/ItemId sowie eine leere ItemNrInt gelten als nicht angegeben.
Prüfung je Paar
TagIdfehlt oder wederItemIdnochItemNrIntangegeben →Error/ Mandatory parameter is missing.ItemNrIntangegeben, aber nicht gefunden,ItemIdnicht initemsvorhanden oderTagIdkein existierender Tag vom Typ1(Artikel-Tag) →Error/ One of the provided values is not valid.- Tag und Artikel gültig und Zuordnung in
TagMatchvorhanden → Zuordnung wird gelöscht,Success/ Tag was successfully removed from item. - Tag und Artikel gültig, aber keine Zuordnung vorhanden →
Warning/ Tag is not assigned to that item.
Ausgabe
Eine Ergebnismenge mit einer Zeile je verarbeitetem Tag-Element (sortiert nach der Position im XML) mit TagId, der ermittelten ItemId, der übergebenen ItemNrInt, Status und Message. Ungültige Paare verhindern nicht die Verarbeitung der übrigen Paare.
Hinweise
- Der gesamte Aufruf läuft in einer Transaktion (
XACT_ABORT ON); innerhalb einer bestehenden Transaktion wird stattdessen ein Savepoint gesetzt. - Bei einem unerwarteten SQL-Fehler wird die Transaktion zurückgerollt und der Fehler über
log.InsertErrorprotokolliert. Die Prozedur liefert in diesem Fall keine Ergebnismenge; eine leere Antwort ist daher als Fehler zu werten. - Ist
TagsXMLnicht angegeben (NULL) oder enthält es keineTag-Elemente, wird nichts gelöscht und es werden keine Zeilen (bzw. keine Ergebnismenge) geliefert. - Sind
ItemIdundItemNrIntbeide angegeben, wird nurItemIdverwendet; die Übereinstimmung beider Werte wird nicht geprüft. - Passt eine
ItemNrIntinItemCodezu mehreren Artikeln, kann ein Paar mehrere Ergebniszeilen erzeugen. - Lesezugriffe verwenden
NOLOCK, das LöschenROWLOCK. - Es werden nur Tags mit
TypeId = 1(Artikel-Tags) berücksichtigt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
TagsXML
|
varchar(max) xml |
NULL |
XML-Dokument mit den Artikeln und den zu entfernenden Tags. Pfad Beispiel:
|
Antwort
Result-Set 1 · Bei Erfolg (kein unerwarteter SQL-Fehler); eine Zeile je Tag-Element im XML
Verarbeitungsergebnis je angefragtem Tag/Artikel-Paar, sortiert nach Position im XML.
| Spalte | Typ | Beschreibung |
|---|---|---|
TagId
Kann leer sein |
int |
Tag-ID aus dem XML ( |
ItemId
Kann leer sein |
int |
Artikelschlüssel, entweder aus dem XML oder über |
ItemNrInt
Kann leer sein |
varchar(50) string |
Interne Artikelnummer wie im XML übergeben. |
Status
|
varchar(254) string |
|
Message
|
varchar(2000) string |
Meldungstext zum Status. |
Beispielantwort
<SqlRowSet1>
<row>
<TagId>5</TagId>
<ItemId>1234</ItemId>
<Status>Success</Status>
<Message>Tag was successfully removed from item</Message>
</row>
<row>
<TagId>7</TagId>
<ItemId>1234</ItemId>
<Status>Warning</Status>
<Message>Tag is not assigned to that item</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Mandatory parameter is missing | Das `Tag`-Element hat keine `TagId` (oder 0), oder das `Item` hat weder `ItemId` noch `ItemNrInt`. Tag und Artikelkennung angeben. |
| Error | One of the provided values is not valid | Die `ItemNrInt` wurde nicht gefunden, die `ItemId` existiert nicht in `items` oder die `TagId` ist kein existierender Artikel-Tag (Typ 1). |
| Warning | Tag is not assigned to that item | Tag und Artikel sind gültig, aber es gibt keine zu löschende Zuordnung in `TagMatch`. |
| Error | Something went wrong, an undefined error occurred | Ersatzmeldung für eine Zeile ohne definierten Status; im Normalbetrieb nicht zu erwarten. |
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:pixiTagMatchDeleteForItems>
<!-- <TagsXML><![CDATA[<Tags><Item><ItemId>1234</ItemId><ItemNrInt></ItemNrInt><TagList><Tag><TagId>5</TagId></Tag><Tag><TagId>7</TagId></Tag></TagList></Item><Item><ItemId>0</ItemId><ItemNrInt>A-10001</ItemNrInt><TagList><Tag><TagId>5</TagId></Tag></TagList></Item></Tags>]]></TagsXML> -->
</ns1:pixiTagMatchDeleteForItems>
</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:pixiTagMatchDeleteForItems>
<!-- <TagsXML><![CDATA[<Tags><Item><ItemId>1234</ItemId><ItemNrInt></ItemNrInt><TagList><Tag><TagId>5</TagId></Tag><Tag><TagId>7</TagId></Tag></TagList></Item><Item><ItemId>0</ItemId><ItemNrInt>A-10001</ItemNrInt><TagList><Tag><TagId>5</TagId></Tag></TagList></Item></Tags>]]></TagsXML> -->
</ns1:pixiTagMatchDeleteForItems>
</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 = [
// 'TagsXML' => '<Tags><Item><ItemId>1234</ItemId><ItemNrInt></ItemNrInt><TagList><Tag><TagId>5</TagId></Tag><Tag><TagId>7</TagId></Tag></TagList></Item><Item><ItemId>0</ItemId><ItemNrInt>A-10001</ItemNrInt><TagList><Tag><TagId>5</TagId></Tag></TagList></Item></Tags>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiTagMatchDeleteForItems', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiTagMatchDeleteForItems