Postman-Collection
Orders Schreiben

pixiTagMatchDeleteForOrders

Entfernt Tag-Zuordnungen (TagMatch) von Aufträgen für die per XML übergebenen Tag/Auftrag-Paare und liefert pro Paar eine Statuszeile.

Löscht die Zuordnung von Auftrags-Tags zu Aufträgen. Die Paare werden in TagsXML übergeben; jedes Tag-Element unterhalb von /Tags/Order/TagList ist ein Eintrag.

Ablauf:

  1. Das XML wird elementbasiert gelesen. Für jedes Tag wird TagId aus dem Tag-Element, OrderId und OrderNrExternal aus dem übergeordneten Order-Element gelesen. Eine TagId oder OrderId von 0 sowie eine leere OrderNrExternal gelten als nicht angegeben.
  2. Der Auftrag wird in OrderHeader ermittelt: über OrderNr = OrderId und über OrderNrExternal. Der über OrderId gefundene OrderHeaderKey hat Vorrang; wird dort keiner gefunden, wird der über OrderNrExternal gefundene verwendet. Ist nur OrderNrExternal angegeben, wird als OrderId die OrderNr des gefundenen Auftrags zurückgegeben.
  3. Jeder Eintrag wird geprüft:
    • keine TagId oder weder OrderId noch OrderNrExternal → Error Mandatory parameter is missing
    • Auftrag nicht gefunden oder Tag nicht als Auftrags-Tag (Tag.TypeId = 2) vorhanden → Error One of the provided values is not valid
  4. Für gültige Einträge wird eine bestehende TagMatch-Zeile mit diesem Tag und Auftragskopf gesucht. Existiert sie, erhält der Eintrag Success Tag was successfully removed from order und die TagMatch-Zeile wird gelöscht. Existiert sie nicht, erhält der Eintrag Warning Tag is not assigned to that order.
  5. Pro Eintrag wird eine Ergebniszeile zurückgegeben, sortiert in der Reihenfolge der Einträge im XML.

Hinweise

  • Berücksichtigt werden nur Tags mit TypeId = 2 (Auftrags-Tags).
  • Der Aufruf läuft in einer eigenen Transaktion bzw. in einem Savepoint, wenn bereits eine Transaktion offen ist.
  • Bei einem unerwarteten Fehler (z. B. ungültiges XML) wird die Transaktion zurückgerollt, der Fehler über log.InsertError (nicht beigefügt) protokolliert und keine Ergebnismenge zurückgegeben. Der Text Unexpected error: "…" wird intern gebildet, aber nicht ausgegeben.
  • Lesezugriffe auf OrderHeader, Tag und TagMatch erfolgen mit NOLOCK; das Löschen mit ROWLOCK.
  • Teilen sich mehrere Aufträge dieselbe OrderNrExternal, kann ein Eintrag mehrere Ergebniszeilen liefern und der Tag wird von allen passenden Aufträgen entfernt.
  • Wird dasselbe Tag/Auftrag-Paar doppelt übergeben, erhalten beide Einträge Success; die TagMatch-Zeile wird einmal gelöscht.
  • Der Kopfkommentar der Prozedur lautet Create TagMatch for Order, der Code entfernt jedoch ausschließlich Zuordnungen.

Parameter

Parameter Typ Standardwert Beschreibung
TagsXML
varchar(max)
xml
NULL

XML-Dokument mit den Aufträgen und den zu entfernenden Tags. Jedes Order-Element enthält OrderId (Pixi-OrderNr) und/oder OrderNrExternal sowie eine TagList mit einem oder mehreren Tag-Elementen mit jeweils einer TagId.

Beispiel:

<Tags>
  <Order>
    <OrderId>104512</OrderId>
    <OrderNrExternal>SHOP-2024-0815</OrderNrExternal>
    <TagList>
      <Tag>
        <TagId>7</TagId>
      </Tag>
      <Tag>
        <TagId>12</TagId>
      </Tag>
    </TagList>
  </Order>
</Tags>

Antwort

Result-Set 1 · Bei erfolgreicher Ausführung (nicht bei einem unerwarteten Fehler)

Eine Statuszeile pro Tag-Eintrag im XML, sortiert nach der Position im XML.

Spalte Typ Beschreibung
TagId
Kann leer sein
int

Tag-ID aus dem XML (NULL, wenn fehlend oder 0).

OrderId
Kann leer sein
int

Auftragsnummer (OrderNr) aus dem XML oder über OrderNrExternal ermittelt.

OrderNrExternal
Kann leer sein
varchar(50)
string

Externe Auftragsnummer aus dem XML.

OrderHeaderKey
Kann leer sein
int

Interner Schlüssel des ermittelten Auftrags; NULL, wenn der Auftrag nicht gefunden wurde.

Status varchar(254)
string

Success, Warning oder Error.

Message varchar(2000)
string

Ergebnismeldung zum Eintrag.

Fehlermeldungen

Status Meldung Ursache
Error Mandatory parameter is missing Der Eintrag hat keine `TagId` oder weder `OrderId` noch `OrderNrExternal` (0 und leere Zeichenketten gelten als fehlend).
Error One of the provided values is not valid Der Auftrag wird über `OrderId`/`OrderNrExternal` nicht gefunden oder die `TagId` existiert nicht als Auftrags-Tag (`TypeId = 2`).
Warning Tag is not assigned to that order Tag und Auftrag sind gültig, es besteht aber keine Zuordnung, die entfernt werden könnte.
Error Something went wrong, an undefined error occurred Ersatzmeldung für einen Eintrag, der die Prüfung nicht besteht, ohne einer konkreten Regel zu entsprechen.

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:pixiTagMatchDeleteForOrders>
      <!-- <TagsXML><![CDATA[<Tags><Order><OrderId>104512</OrderId><OrderNrExternal>SHOP-2024-0815</OrderNrExternal><TagList><Tag><TagId>7</TagId></Tag><Tag><TagId>12</TagId></Tag></TagList></Order></Tags>]]></TagsXML> -->
    </ns1:pixiTagMatchDeleteForOrders>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

OrderHeader · Lesen Tag · Lesen TagMatch · Schreiben
SQL-Objekt:
dbo.pipiTagMatchDeleteForOrders
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben