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.
- Liest eine Auftragsposition des Auftrags
OrderNr(TOP 1ohne Sortierung). Daraus werden Kunde, Rechnungsadresse, Lieferadresse,LocationIDundLastOrdLocationIDübernommen. Als Erstelldatum dient das aktuelle Datum. - Kopiert die Rechnungsadresse dieser Position als neuen Datensatz in
Addresses.Usernamewird als Ersteller und Bearbeiter gespeichert. Alle übrigen Felder werden unverändert übernommen. - Liest Lieferland, Umsatzsteuerpflicht (
AddrNoChargeVAT) und Shop des Kunden (CustomerOf) aus der Lieferadresse. - Zerlegt
Orderlines. Einträge sind durch Kommas getrennt. Jeder Eintrag hat die FormOrderlineKey;Menge. Die Menge ist optional; ohne Angabe wird die volle Menge der Originalposition verwendet. - Liest aus dem Auftragskopf einer der angegebenen Positionen folgende Werte: Auftragstyp (Standard
B2C), Versandkosten, Steuersätze, MwSt.-Einstellungen der Versandkosten, Währung undAddress_Remarks. Zusätzlich wird die Rechnung dieser Position inInvlinesermittelt. - 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 EinstellungDefaultCCPMerchantund einen Rabatt von 0. Die externe Auftragsnummer istP+ neue Auftragsnummer. - Fügt je angegebener Originalposition eine Auftragsposition ein:
- Menge negiert (
-Mengebzw.-Qty), StatusMIN; - Preise, Artikeldaten, Seriennummer, Charge und MHD übernommen;
LocationIDaus dem AuftragOrderNr;- 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 beiB2B(sonst 4); - Betragsdifferenzen negiert.
- Menge negiert (
- Verknüpft den neuen Auftrag mit der Originalrechnung über einen Eintrag in
pixi.InvoiceAttribute(TypeId3, Wert = neue Auftragsnummer). - Liefert den neuen
OrderHeaderKeyund 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.
@Orderlineswird an einenvarchar(8000)-Parameter der internen Prozedur übergeben. Längere Listen werden abgeschnitten.- Die angegebenen Auftragspositionen werden nur über
OrderlineKeyzugeordnet. Es wird nicht geprüft, ob sie zum AuftragOrderNrgehören. Kunde und Adressen stammen ausOrderNr; 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
OrderNrfür Kunde und Adressen verwendet wird, ist nicht festgelegt (TOP 1ohneORDER BY). - Hat eine angegebene Position keine Rechnung, wird der Verknüpfungseintrag in
pixi.InvoiceAttributeohneInvoiceIdgeschrieben, 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
itemsexistieren. - Lesezugriffe verwenden
NOLOCK. Während des Einfügens der Positionen wirdCONTEXT_INFOauf0x10136gesetzt, vermutlich zur Steuerung von Triggern. Pixi_OrderHeader_Insert,pixi.GetExchRateID,fpixi_GetSetting,fPixi_GetCommaSplitundfPixi_GetVATRateliegen 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 Beispiel: |
Orderlines
Pflicht
|
varchar(max) string |
– |
Kommagetrennte Liste der Originalpositionen im Format Beispiel: |
Username
|
varchar(50) string |
API |
Benutzername, der als Ersteller und Bearbeiter der neuen Adresse und Auftragspositionen gespeichert wird. Beispiel: |
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 |
|
Beispielantwort
<SqlRowSet1>
<row>
<OrderHeaderKey>98765</OrderHeaderKey>
</row>
</SqlRowSet1>
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>
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:pixiCreateReplacement>
<OrderNr>104512</OrderNr>
<Orderlines>556781;1,556782;2</Orderlines>
<!-- <Username>API</Username> -->
</ns1:pixiCreateReplacement>
</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 = [
'OrderNr' => '104512',
'Orderlines' => '556781;1,556782;2',
// 'Username' => 'API',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCreateReplacement', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCreateReplacement