Postman-Collection
Replacements Schreiben

pixiCreateReplacement

Legt einen Ersatzauftrag mit negativen Mengen für ausgewählte Auftragspositionen an, basierend auf Kunde und Adressen eines bestehenden Auftrags.

Legt einen neuen Ersatzauftrag an und liefert den Schlüssel des neuen Auftragskopfs. Die Verarbeitung übernimmt die interne Prozedur Pixi_CreateReplacementOrder.

  1. Liest eine Auftragsposition des Auftrags OrderNr (TOP 1 ohne Sortierung). Daraus werden Kunde, Rechnungsadresse, Lieferadresse, LocationID und LastOrdLocationID übernommen. Als Erstelldatum dient das aktuelle Datum.
  2. Kopiert die Rechnungsadresse dieser Position als neuen Datensatz in Addresses. Username wird als Ersteller und Bearbeiter gespeichert. Alle übrigen Felder werden unverändert übernommen.
  3. Liest Lieferland, Umsatzsteuerpflicht (AddrNoChargeVAT) und Shop des Kunden (CustomerOf) aus der Lieferadresse.
  4. Zerlegt Orderlines. Einträge sind durch Kommas getrennt. Jeder Eintrag hat die Form OrderlineKey;Menge. Die Menge ist optional; ohne Angabe wird die volle Menge der Originalposition verwendet.
  5. Liest aus dem Auftragskopf einer der angegebenen Positionen folgende Werte: Auftragstyp (Standard B2C), Versandkosten, Steuersätze, MwSt.-Einstellungen der Versandkosten, Währung und Address_Remarks. Zusätzlich wird die Rechnung dieser Position in Invlines ermittelt.
  6. Ermittelt einen Wechselkurs für Währung und aktuelles Datum und legt einen neuen Auftragskopf an (Pixi_OrderHeader_Insert). Der Auftrag erhält den Standard-CCP-Merchant aus der Einstellung DefaultCCPMerchant und einen Rabatt von 0. Die externe Auftragsnummer ist P + neue Auftragsnummer.
  7. Fügt je angegebener Originalposition eine Auftragsposition ein:
    • Menge negiert (-Menge bzw. -Qty), Status MIN;
    • Preise, Artikeldaten, Seriennummer, Charge und MHD übernommen;
    • LocationID aus dem Auftrag OrderNr;
    • Steuersatz neu berechnet aus Auftragstyp, Steuerpflicht, Lieferland und Steuerklasse des Artikels;
    • Positionsbeträge negiert und gerundet: brutto auf 2 Nachkommastellen bei B2C (sonst 4), netto auf 2 bei B2B (sonst 4);
    • Betragsdifferenzen negiert.
  8. Verknüpft den neuen Auftrag mit der Originalrechnung über einen Eintrag in pixi.InvoiceAttribute (TypeId 3, Wert = neue Auftragsnummer).
  9. Liefert den neuen OrderHeaderKey und schreibt die Transaktion fest.

Hinweise

  • Die gesamte Verarbeitung läuft in einer Transaktion. Bei einem Fehler führt der CATCH-Block nur ein Rollback aus. Es kommen weder Fehlermeldung noch Ergebniszeile beim Aufrufer an. Eine leere Antwort bedeutet, dass kein Ersatzauftrag angelegt wurde.
  • Die Ergebniszeile wird vor dem Commit ausgegeben. Ist der interne Fehlerzähler ungleich 0, wird die Transaktion zurückgerollt, obwohl bereits ein Schlüssel geliefert wurde.
  • @Orderlines wird an einen varchar(8000)-Parameter der internen Prozedur übergeben. Längere Listen werden abgeschnitten.
  • Die angegebenen Auftragspositionen werden nur über OrderlineKey zugeordnet. Es wird nicht geprüft, ob sie zum Auftrag OrderNr gehören. Kunde und Adressen stammen aus OrderNr; Auftragstyp, Steuersätze, Währung und verknüpfte Rechnung aus einer der angegebenen Positionen. Es sollten nur Positionen desselben Auftrags übergeben werden.
  • Welche Position von OrderNr für Kunde und Adressen verwendet wird, ist nicht festgelegt (TOP 1 ohne ORDER BY).
  • Hat eine angegebene Position keine Rechnung, wird der Verknüpfungseintrag in pixi.InvoiceAttribute ohne InvoiceId geschrieben, oder das Einfügen schlägt je nach Tabellen-Constraints fehl. Ein Fehler rollt den gesamten Aufruf zurück.
  • Positionen werden nur für Artikel angelegt, die in items existieren.
  • Lesezugriffe verwenden NOLOCK. Während des Einfügens der Positionen wird CONTEXT_INFO auf 0x10136 gesetzt, vermutlich zur Steuerung von Triggern.
  • Pixi_OrderHeader_Insert, pixi.GetExchRateID, fpixi_GetSetting, fPixi_GetCommaSplit und fPixi_GetVATRate liegen nicht vor. Ihr genaues Verhalten, einschließlich der Anlage des Auftragskopfs, ist hier nicht dokumentiert.

Parameter

Parameter Typ Standardwert Beschreibung
OrderNr
Pflicht
int –

Nummer des bestehenden Auftrags. Kunde, Rechnungsadresse, Lieferadresse und LocationID werden daraus übernommen.

Beispiel: 104512

Orderlines
Pflicht
varchar(max)
string
–

Kommagetrennte Liste der Originalpositionen im Format OrderlineKey;Menge. Die Menge ist optional; ohne Angabe wird die volle Menge der Position verwendet. Die Menge wird negativ gespeichert. Effektiv auf 8000 Zeichen begrenzt.

Beispiel: 556781;1,556782;2

Username
varchar(50)
string
API

Benutzername, der als Ersteller und Bearbeiter der neuen Adresse und Auftragspositionen gespeichert wird.

Beispiel: API

Antwort

Result-Set 1 · Wenn bei der Verarbeitung kein Fehler auftritt. Bei einem Fehler wird nichts geliefert.

Schlüssel des neu angelegten Auftragskopfs.

Spalte Typ Beschreibung
OrderHeaderKey int

OrderHeaderKey des neuen Ersatzauftrags; 0, wenn der Kopf nicht gefunden wurde.

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:pixiCreateReplacement>
      <OrderNr>104512</OrderNr>
      <Orderlines>556781;1,556782;2</Orderlines>
      <!-- <Username>API</Username> -->
    </ns1:pixiCreateReplacement>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Orderlines · Schreiben Addresses · Schreiben Customers · Lesen OrderHeader · Schreiben Invlines · Lesen items · Lesen Currency · Lesen InvoiceAttribute · Schreiben
SQL-Objekt:
dbo.pipiCreateReplacement
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben