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:
- Beide Aufträge vorhanden: In
OrderHeadermüssen für die beiden Auftragsnummern genau zwei Zeilen existieren. Andernfalls lautet der Grund401. - Gleicher Kunde:
CustRefbeider Aufträge muss übereinstimmen. Andernfalls lautet der Grund402. - Status der Auftragspositionen: Keine Auftragsposition der beiden Aufträge darf einen anderen Status als
ANGhaben. Andernfalls lautet der Grund403. - Zahlungsart:
APaymentder überAddrRefreferenzierten Adressen muss gleich sein und darf nichtK(Kreditkarte) sein. Andernfalls lautet der Grund404. - Picklisten: Keine Auftragsposition der beiden Aufträge darf auf einer Pickliste stehen, deren
PLHexpiryDatein der Zukunft liegt und derenReservedOrderNrleer oder 0 ist. Andernfalls lautet der Grund405. - Währung und Auftragsart:
CurrencyIdmuss übereinstimmen, sonst lautet der Grund406. Danach mussOrderTypeübereinstimmen, sonst lautet der Grund407.
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
TargetOrderNrundSourceOrderNrgleich, wird nur eine Kopfzeile gefunden, das Ergebnis ist dann401. - Ein
NULL-Wert inCustRef,APayment,CurrencyIdoderOrderTypelä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 inAddressesgefunden, liefert der Join keine Zeile, und die Zahlungsartprüfung (404) entfällt faktisch. - Die Spalte
ReservedOrderNrin der Picklistenprüfung ist nicht mit einem Tabellennamen qualifiziert. Aus dem Code geht nicht hervor, ob sie zuPLitemoderplheadergehö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: |
SourceOrderNr
Pflicht
|
int | – |
Auftragsnummer des Quellauftrags, der in den Zielauftrag zusammengeführt würde. Beispiel: |
CanMerge
OUTPUT
|
int | NULL |
Ausgabe: 1, wenn die Aufträge zusammengeführt werden können, sonst 0. Ein übergebener Wert wird ignoriert. Erlaubte Werte
|
Reason
OUTPUT
|
varchar(128) string |
NULL |
Ausgabe: Grundcode mit Text, z. B. |
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 |
|
Beispielantwort
<SqlRowSet1>
<row>
<CanMerge>0</CanMerge>
<Reason>403 All involved orderlines must have status ANG</Reason>
</row>
</SqlRowSet1>
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>
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:pixiCanMergeOrders>
<TargetOrderNr>100234</TargetOrderNr>
<SourceOrderNr>100235</SourceOrderNr>
<!-- <CanMerge>?</CanMerge> -->
<!-- <Reason>?</Reason> -->
</ns1:pixiCanMergeOrders>
</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 = [
'TargetOrderNr' => '100234',
'SourceOrderNr' => '100235',
// 'CanMerge' => '?',
// 'Reason' => '?',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCanMergeOrders', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCanMergeOrders