Postman-Collection
Orders Schreiben

pixiMergeOrders

Führt einen Quell-Auftrag mit einem Ziel-Auftrag zusammen, indem alle Auftragspositionen und Bundle-Positionen verschoben und Steuersätze sowie Versandkosten neu berechnet werden.

Überträgt den Inhalt des Auftrags SourceOrderNr in den Auftrag TargetOrderNr.

  1. Die Auftragsköpfe beider Aufträge werden gelesen (Auftragsart, Währung, Versandkosten).
  2. Bei unterschiedlicher Auftragsart oder Währung wird ein Fehler ausgelöst und abgebrochen. Das geschieht auch, wenn keiner der beiden Aufträge existiert.
  3. pipiCanMergeOrders wird ausgeführt. Diese Prozedur prüft die folgenden Bedingungen und liefert eine eigene Ergebniszeile (CanMerge, Reason):
    • beide Aufträge existieren
    • beide gehören zum selben Kunden
    • alle Positionen haben Status ANG
    • beide haben dieselbe Zahlungsart, die keine Kreditkarte K sein darf
    • keine Position liegt auf einer aktiven Pickliste
    • beide haben dieselbe Währung und Auftragsart
  4. Ist die Zusammenführung erlaubt, laufen die folgenden Schritte in einer Transaktion:
    • Die Versandkosten im Kopf des Ziel-Auftrags werden auf die höheren Versandkosten der beiden Aufträge gesetzt.
    • Alle vorhandenen Positionen und Bundle-Positionen des Ziel-Auftrags erhalten diese Versandkosten sowie UpdateEmp und UpdateDate.
    • Die Positionen des Quell-Auftrags werden in den Ziel-Auftrag verschoben. Sie übernehmen Rechnungs- und Lieferadresse, Order_Id, OrderNrExternal und VoucherID der Positionen des Ziel-Auftrags.
    • Ihr TaxRate wird über fPixi_GetVATRate neu berechnet. Grundlage sind die Auftragsart des Quell-Auftrags sowie Land und Steuerpflicht der Ziel-Lieferadresse.
    • Bei Einstellung CalculateBundleVAT = 0 erhalten Bundle-Komponenten den Steuersatz ihrer Bundle-Position.
    • Die Bundle-Positionen des Quell-Auftrags werden ebenso verschoben. Bei CalculateBundleVAT = 1 ist ihr Steuersatz der nach Nettobetrag gewichtete Durchschnitt der Komponenten, sonst der Wert aus der Steuerfunktion.
    • Bankzuordnungen (BankMatch) des Quell-Auftrags werden dem Ziel-Auftrag zugeordnet.
    • Der Discount im Kopf des Quell-Auftrags wird auf 0 gesetzt.
  5. Zurückgegeben wird ResultMessage:
    • 200 OK bei Erfolg
    • der Grundcode aus pipiCanMergeOrders (401–407), wenn die Zusammenführung nicht erlaubt ist
    • 500 Unexpected error, wenn die Transaktion fehlschlägt

UpdateEmp wird auf Employee mit dem Zusatz (API) gesetzt, ohne Mitarbeiterangabe auf API.

Hinweise

  • Der Aufruf liefert zwei Ergebnismengen. SqlRowSet1 stammt aus pipiCanMergeOrders (CanMerge, Reason). SqlRowSet2 enthält ResultMessage.
  • Der Kopf des Quell-Auftrags wird nicht gelöscht. Er bleibt ohne Positionen und mit Discount = 0 bestehen.
  • Beim Aktualisieren der Versandkosten in OrderHeader wird CONTEXT_INFO 0x66666 gesetzt, um den Update-Trigger zu umgehen.
  • Die aus den Ziel-Positionen übernommenen Werte (Adressen, Order_Id, OrderNrExternal, VoucherID) stammen aus einer beliebigen Position des Ziel-Auftrags. Hat der Ziel-Auftrag keine Positionen, werden diese Werte bei den verschobenen Positionen NULL.
  • Quell-Positionen, deren ItemRef keinen passenden Eintrag in items hat, werden nicht verschoben.
  • Auch Bundle-Positionen ohne Komponenten werden nicht verschoben.
  • Bei CalculateBundleVAT = 1 führt eine Nettosumme von 0 über die Komponenten eines Bundles zu einem Divisionsfehler. Die Transaktion wird dann zurückgerollt und 500 Unexpected error geliefert.
  • Fehlerdetails werden dabei nicht zurückgegeben; jeder Fehler in der Transaktion liefert nur 500 Unexpected error.
  • Lesezugriffe erfolgen mit NOLOCK.
  • fPixi_GetDefaultCountryCode, das in fPixi_GetVATRate verwendet wird, liegt nicht vor, daher ist die Ermittlung des Standardlandes hier nicht vollständig beschreibbar.

Parameter

Parameter Typ Standardwert Beschreibung
TargetOrderNr
Pflicht
int –

Auftragsnummer des Ziel-Auftrags, der die Positionen aufnimmt.

Beispiel: 100245

SourceOrderNr
Pflicht
int –

Auftragsnummer des Quell-Auftrags, dessen Positionen in den Ziel-Auftrag verschoben werden.

Beispiel: 100251

Employee
varchar(50)
string
NULL

Mitarbeitername, der mit dem Zusatz (API) in UpdateEmp geschrieben wird. Bei NULL wird API verwendet.

Beispiel: jdoe

ResultMessage
OUTPUT
varchar(128)
string
NULL

Ausgabe: Ergebniscode mit Text, z. B. 200 OK, ein Grund 401–407 aus pipiCanMergeOrders oder 500 Unexpected error.

Antwort

Result-Set 1 · Immer, wenn die Prüfungen von Auftragsart und Währung bestanden sind (geliefert von pipiCanMergeOrders).

Ergebnis der Vorprüfung der Zusammenführung.

Spalte Typ Beschreibung
CanMerge int

1, wenn die Aufträge zusammengeführt werden können, sonst 0.ICON

Reason varchar(128)
string

Grundcode mit Text, z. B. 200 OK oder 403 All involved orderlines must have status ANG.

Result-Set 2 · Immer, wenn die Prüfungen von Auftragsart und Währung bestanden sind.

Endergebnis der Zusammenführung.

Spalte Typ Beschreibung
ResultMessage
Kann leer sein
varchar(128)
string

200 OK bei Erfolg, der Grund der Vorprüfung bei Ablehnung oder 500 Unexpected error.

Fehlermeldungen

Status Meldung Ursache
RAISERROR Different order types can not be merged. Die beiden Aufträge haben unterschiedliche Auftragsarten oder keiner der Aufträge existiert. Nur Aufträge derselben Auftragsart zusammenführen.
RAISERROR Orders with different currency can not be merged. Die beiden Aufträge haben unterschiedliche Währungen. Nur Aufträge derselben Währung zusammenführen.
401 401 Both orders must exist Eine der Auftragsnummern existiert nicht.
402 402 Orders must belong to the same customer Die Aufträge gehören zu unterschiedlichen Kunden (`CustRef`).
403 403 All involved orderlines must have status ANG Mindestens eine Position eines der Aufträge hat nicht den Status `ANG`.
404 404 Payment types on both orders must match and not be a creditcard type Die Zahlungsarten der Rechnungsadressen unterscheiden sich oder die Zahlungsart ist Kreditkarte `K`.
405 405 None of the orderlines in either orders can be on picklists Eine Position liegt auf einer nicht abgelaufenen Pickliste. Zuerst von der Pickliste entfernen.
406 406 Orders must have same currency Die Währungen unterscheiden sich. Dies wird normalerweise vorher durch die RAISERROR-Prüfung abgefangen.
407 407 Orders must have same order type Die Auftragsarten unterscheiden sich. Dies wird normalerweise vorher durch die RAISERROR-Prüfung abgefangen.
500 500 Unexpected error Während der Transaktion ist ein Fehler aufgetreten, z. B. eine Division durch null beim Bundle-Steuerdurchschnitt. Alle Änderungen werden zurückgerollt.

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:pixiMergeOrders>
      <TargetOrderNr>100245</TargetOrderNr>
      <SourceOrderNr>100251</SourceOrderNr>
      <!-- <Employee>jdoe</Employee> -->
      <!-- <ResultMessage>?</ResultMessage> -->
    </ns1:pixiMergeOrders>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

OrderHeader · Schreiben Orderlines · Schreiben BundleOrderlines · Schreiben BankMatch · Schreiben Addresses · Lesen items · Lesen Settings · Lesen VATs · Lesen Countries · Lesen PLitem · Lesen plheader · Lesen
SQL-Objekt:
dbo.pipiMergeOrders
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben