Postman-Collection
Orders Lesen

pixiCanMergeOrders

Prüft, ob zwei Aufträge zusammengeführt werden können, und liefert ein Kennzeichen sowie einen Grundcode mit Text.

Prüft, ob der Quellauftrag (SourceOrderNr) in den Zielauftrag (TargetOrderNr) zusammengeführt werden kann. Der Aufruf ändert keine Daten.

Die Prüfungen laufen in dieser Reihenfolge. Die erste fehlschlagende Prüfung setzt CanMerge = 0 und den passenden Grund. Die weiteren Prüfungen entfallen dann:

  1. Beide Aufträge vorhanden: In OrderHeader müssen für die beiden Auftragsnummern genau zwei Zeilen existieren. Andernfalls lautet der Grund 401.
  2. Gleicher Kunde: CustRef beider Aufträge muss übereinstimmen. Andernfalls lautet der Grund 402.
  3. Status der Auftragspositionen: Keine Auftragsposition der beiden Aufträge darf einen anderen Status als ANG haben. Andernfalls lautet der Grund 403.
  4. Zahlungsart: APayment der über AddrRef referenzierten Adressen muss gleich sein und darf nicht K (Kreditkarte) sein. Andernfalls lautet der Grund 404.
  5. Picklisten: Keine Auftragsposition der beiden Aufträge darf auf einer Pickliste stehen, deren PLHexpiryDate in der Zukunft liegt und deren ReservedOrderNr leer oder 0 ist. Andernfalls lautet der Grund 405.
  6. Währung und Auftragsart: CurrencyId muss übereinstimmen, sonst lautet der Grund 406. Danach muss OrderType übereinstimmen, sonst lautet der Grund 407.

Sind alle Prüfungen erfolgreich, liefert der Aufruf CanMerge = 1 und Reason = '200 OK'. Er liefert immer genau eine Zeile mit CanMerge und Reason. Dieselben Werte werden in die Ausgabeparameter geschrieben, und CanMerge ist zusätzlich der Rückgabewert der Prozedur.

Hinweise

  • Alle Lesezugriffe verwenden NOLOCK, das Ergebnis kann daher auf nicht festgeschriebenen Daten beruhen. Unmittelbar vor dem eigentlichen Zusammenführen erneut prüfen.
  • Sind TargetOrderNr und SourceOrderNr gleich, wird nur eine Kopfzeile gefunden, das Ergebnis ist dann 401.
  • Ein NULL-Wert in CustRef, APayment, CurrencyId oder OrderType lässt den Vergleich fehlschlagen und führt zum jeweiligen Fehlercode.
  • Aufträge ohne Auftragspositionen bestehen die Statusprüfung (403).
  • Wird die Adresse eines Auftrags (AddrRef) nicht in Addresses gefunden, liefert der Join keine Zeile, und die Zahlungsartprüfung (404) entfällt faktisch.
  • Die Spalte ReservedOrderNr in der Picklistenprüfung ist nicht mit einem Tabellennamen qualifiziert. Aus dem Code geht nicht hervor, ob sie zu PLitem oder plheader gehört.
  • Der Grundtext beginnt mit einem HTTP-ähnlichen numerischen Code (200, 401–407), der sich für die programmatische Auswertung eignet.

Parameter

Parameter Typ Standardwert Beschreibung
TargetOrderNr
Pflicht
int –

Auftragsnummer des Zielauftrags, in den der Quellauftrag zusammengeführt würde.

Beispiel: 100234

SourceOrderNr
Pflicht
int –

Auftragsnummer des Quellauftrags, der in den Zielauftrag zusammengeführt würde.

Beispiel: 100235

CanMerge
OUTPUT
int NULL

Ausgabe: 1, wenn die Aufträge zusammengeführt werden können, sonst 0. Ein übergebener Wert wird ignoriert.

Erlaubte Werte

  • 1 – Aufträge können zusammengeführt werden
  • 0 – Aufträge können nicht zusammengeführt werden, siehe Reason
Reason
OUTPUT
varchar(128)
string
NULL

Ausgabe: Grundcode mit Text, z. B. 200 OK oder 402 Orders must belong to the same customer. Ein übergebener Wert wird ignoriert.

Antwort

Result-Set 1 · Immer

Eine Zeile mit dem Ergebnis der Zusammenführungsprüfung.

Spalte Typ Beschreibung
CanMerge int

1 = Aufträge können zusammengeführt werden, 0 = nicht möglich.</br>

Reason varchar(128)
string

200 OK bei Erfolg, sonst Code und Text der ersten fehlgeschlagenen Prüfung (401–407).

Fehlermeldungen

Status Meldung Ursache
0 401 Both orders must exist Eine oder beide Auftragsnummern existieren nicht in `OrderHeader`, oder beide Parameter enthalten dieselbe Auftragsnummer. Zwei verschiedene, vorhandene Auftragsnummern übergeben.
0 402 Orders must belong to the same customer Die Aufträge haben unterschiedliche (oder NULL-)Werte in `CustRef`. Nur Aufträge desselben Kunden können zusammengeführt werden.
0 403 All involved orderlines must have status ANG Mindestens eine Auftragsposition eines der beiden Aufträge hat einen anderen Status als `ANG`.
0 404 Payment types on both orders must match and not be a creditcard type Die Zahlungsarten (`APayment`) der Auftragsadressen unterscheiden sich, sind NULL oder sind `K` (Kreditkarte).
0 405 None of the orderlines in either orders can be on picklists Mindestens eine Auftragsposition steht auf einer nicht abgelaufenen Pickliste ohne reservierte Auftragsnummer.
0 406 Orders must have same currency Die Aufträge haben unterschiedliche Werte in `CurrencyId`.
0 407 Orders must have same order type Die Aufträge haben dieselbe Währung, aber unterschiedliche Werte in `OrderType`.

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:pixiCanMergeOrders>
      <TargetOrderNr>100234</TargetOrderNr>
      <SourceOrderNr>100235</SourceOrderNr>
      <!-- <CanMerge>?</CanMerge> -->
      <!-- <Reason>?</Reason> -->
    </ns1:pixiCanMergeOrders>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

OrderHeader · Lesen Orderlines · Lesen Addresses · Lesen PLitem · Lesen plheader · Lesen
SQL-Objekt:
dbo.pipiCanMergeOrders
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben