pixiTagDelete
Löscht einen Tag, der über seine ID oder über Typ und Name bestimmt wird, und entfernt alle Zuordnungen zu Artikeln oder Aufträgen.
Löscht einen Tag aus Tag zusammen mit allen Zuordnungen in TagMatch. Tags dienen zur Kennzeichnung von Objekten wie Artikeln oder Aufträgen.
Der Tag kann auf zwei Arten bestimmt werden:
- über
TagIdoder - über die Kombination aus
TypeIdundName. Beide Werte sind gemeinsam erforderlich.
Die Parameter werden in dieser Reihenfolge geprüft:
- Fehlen alle drei Parameter oder wird nur einer von
TypeIdundNameübergeben, liefert der Aufruf einen Fehler wegen fehlender Pflichtparameter. - Wird
TagIdübergeben, existiert aber kein Tag mit dieser ID, lautet die Meldung Tag does not exist. - Wird
TagIdnicht übergeben und passt kein Tag zuTypeIdundName, lautet die Meldung ebenfalls Tag does not exist. - Ist der gefundene Tag ein System-Tag (
IsSystemTag= 1), kann er nicht gelöscht werden. - Werden
TagIdsowieTypeId/Nameübergeben und verweisen sie auf zwei verschiedene Tags, liefert der Aufruf einen Fehler.
Sind alle Prüfungen bestanden, werden zuerst alle TagMatch-Zeilen des Tags gelöscht. Dadurch wird der Tag von allen zugeordneten Objekten entfernt. Danach wird der Tag selbst gelöscht. Der Aufruf liefert immer genau eine Zeile mit Status und Message.
Hinweise
- Der Aufruf läuft in einer eigenen Transaktion. Ist bereits eine Transaktion offen, wird stattdessen ein Savepoint verwendet. Bei einem unerwarteten Fehler werden die Änderungen zurückgerollt und der Fehler über
log.InsertErrorprotokolliert. Zurückgegeben wird dannStatus=Errormit den ersten 80 Zeichen der SQL-Fehlermeldung. - Fehler werden nie als
SqlMessageausgelöst. Die SpalteStatusist daher immer auszuwerten. - Stolperfalle: Wird
TagIdzusammen mit einem Paar ausTypeId/Nameübergeben, zu dem kein Tag existiert, greift die Konfliktprüfung nicht. In diesem Fall wird der Tag mitTagIdgelöscht. - Wird
TagIdzusammen mit nurTypeIdoder nurNameübergeben, erscheint der Fehler wegen fehlender Pflichtparameter, obwohlTagIdallein genügen würde. - Die Prüfungen lesen
TagmitNOLOCK. Die Löschvorgänge verwendenROWLOCK. - Die Bedeutung der
TypeId-Werte (z. B. Artikel- oder Auftrags-Tags) ist in diesem Code nicht festgelegt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
TagId
|
int | NULL |
ID des zu löschenden Tags. Alternative zur Kombination aus Beispiel: |
TypeId
|
int | NULL |
Typ des Tags ( Beispiel: |
Name
|
varchar(50) string |
NULL |
Name des Tags ( Beispiel: |
Antwort
Result-Set 1 · Immer
Eine Statuszeile mit dem Ergebnis des Löschvorgangs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(10) string |
|
Message
|
varchar(100) string |
Erfolgsmeldung oder Fehlerbeschreibung. |
Beispielantwort
<SqlRowSet1>
<row>
<Status>Success</Status>
<Message>Tag was successfully deleted. Tag was also removed from assigned objects</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Tag could not be deleted. Mandatory parameters TypeId or Name or TagId are missing | Es wurde kein Parameter übergeben oder nur einer von `TypeId` und `Name`. Entweder `TagId` oder `TypeId` und `Name` gemeinsam übergeben. |
| Error | Tag could not be deleted, Tag does not exist | Es existiert kein Tag mit der angegebenen `TagId` oder, wenn `TagId` fehlt, kein Tag mit `TypeId` und `Name`. |
| Error | System Tags (IsSystemTag) cannot be deleted | Der gefundene Tag ist als System-Tag markiert (`IsSystemTag` = 1). System-Tags können nicht gelöscht werden. |
| Error | Tag could not be deleted, use either TagId parameter or combination of TypeId and Name parameters | `TagId` und `TypeId`/`Name` verweisen auf zwei verschiedene vorhandene Tags. Nur eine Art der Identifikation verwenden. |
| Error | Unexpected error: "{error message}" | Beim Löschen ist ein unerwarteter SQL-Fehler aufgetreten, z. B. ein Sperr- oder Constraint-Problem. Die Transaktion wird zurückgerollt und der Fehler protokolliert. |
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:pixiTagDelete>
<!-- <TagId>42</TagId> -->
<!-- <TypeId>1</TypeId> -->
<!-- <Name>Sale2024</Name> -->
</ns1:pixiTagDelete>
</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:pixiTagDelete>
<!-- <TagId>42</TagId> -->
<!-- <TypeId>1</TypeId> -->
<!-- <Name>Sale2024</Name> -->
</ns1:pixiTagDelete>
</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 = [
// 'TagId' => '42',
// 'TypeId' => '1',
// 'Name' => 'Sale2024',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiTagDelete', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiTagDelete