pixiSetInvoiceShippingInformation
Aktualisiert Paketanzahl, Netto- und Bruttopaketgewicht sowie Versanddienstleister einer vorhandenen Rechnung und liefert die gespeicherten Werte.
Setzt Versandinformationen an einer einzelnen Rechnung in der Tabelle Invoices, identifiziert über InvoiceNr.
- Zuerst wird geprüft, ob eine Rechnung mit der angegebenen
InvoiceNrexistiert. Falls nicht, wird eine Statuszeile mitStatus=400geliefert und nichts geändert. - Die aktuellen Werte von
PackageNetWeight,PackageGrossWeight,PackagesundShipVendorwerden gelesen. - Die Rechnung wird aktualisiert. Jedes Feld wird nur überschrieben, wenn der zugehörige Parameter nicht
NULList. Weggelassene oder mitNULLübergebene Parameter behalten den bisherigen Wert. Damit sind Teilaktualisierungen möglich, z. B. nur die Paketanzahl. - Wurde mindestens eine Zeile aktualisiert, wird
Status=200mit den gespeicherten Werten der Rechnung geliefert. Andernfalls wirdStatus=500mit den aktuellen Werten geliefert.
Hinweise
- Ein Feld kann mit diesem Aufruf nicht auf
NULLzurückgesetzt werden, daNULL-Parameter "bisherigen Wert beibehalten" bedeuten. ShipVendorwird nicht validiert. Jeder Wert mit bis zu 3 Zeichen wird unverändert geschrieben.- Gewichte werden nicht auf Plausibilität geprüft, z. B. ein Bruttogewicht kleiner als das Nettogewicht oder negative Werte.
- Die Existenzprüfung und das Lesen der alten Werte erfolgen mit
NOLOCK. Eine explizite Transaktion wird nicht verwendet. - Der
500-Zweig tritt praktisch nur auf, wenn die Rechnung zwischen Prüfung und Update gelöscht wird. Die Ergebniszeile enthält dann in der Regel keine Daten. - Haben mehrere Zeilen dieselbe
InvoiceNr, werden alle aktualisiert und alle geliefert. - Die Spaltentypen im Ergebnis sind aus den im Code deklarierten Variablen abgeleitet. Die Tabellendefinition von
Invoicesliegt nicht vor.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceNr
|
varchar(20) string |
NULL |
Nummer der zu aktualisierenden Rechnung. Praktisch erforderlich: Ohne passende Rechnung liefert der Aufruf Status Beispiel: |
PackageNetWeight
|
float decimal |
NULL |
Neues Nettogewicht der Pakete. Beispiel: |
PackageGrossWeight
|
float decimal |
NULL |
Neues Bruttogewicht der Pakete. Beispiel: |
Packages
|
int | NULL |
Neue Paketanzahl. Beispiel: |
ShipVendor
|
varchar(3) string |
NULL |
Neues Kürzel des Versanddienstleisters mit bis zu 3 Zeichen. Der Wert wird nicht validiert. Beispiel: |
Antwort
Result-Set 1 · Wenn die Rechnung existiert und mindestens eine Zeile aktualisiert wurde (Status = 200)
Erfolgszeile mit den gespeicherten Versandinformationen der Rechnung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
int |
Immer |
Message
|
varchar(21) string |
|
InvoiceNr
|
varchar(20) string |
Rechnungsnummer. |
Packages
Kann leer sein |
int |
Paketanzahl nach dem Update. |
PackageNetWeight
Kann leer sein |
float decimal |
Nettogewicht nach dem Update. |
PackageGrossWeight
Kann leer sein |
float decimal |
Bruttogewicht nach dem Update. |
ShipVendor
Kann leer sein |
varchar(3) string |
Kürzel des Versanddienstleisters nach dem Update. |
Result-Set 2 · Wenn die Rechnung existierte, aber keine Zeile aktualisiert wurde (Status = 500)
Fehlerzeile mit denselben Spalten wie die Erfolgszeile, gefüllt aus den aktuellen Rechnungsdaten, sofern noch vorhanden.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
int |
Immer |
Message
|
varchar(35) string |
|
InvoiceNr
|
varchar(20) string |
Rechnungsnummer. |
Packages
Kann leer sein |
int |
Aktuelle Paketanzahl. |
PackageNetWeight
Kann leer sein |
float decimal |
Aktuelles Nettogewicht. |
PackageGrossWeight
Kann leer sein |
float decimal |
Aktuelles Bruttogewicht. |
ShipVendor
Kann leer sein |
varchar(3) string |
Aktuelles Kürzel des Versanddienstleisters. |
Result-Set 3 · Wenn keine Rechnung mit @InvoiceNr existiert (Status = 400)
Fehlerzeile ohne Rechnungsdaten.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
int |
Immer |
Message
|
varchar(38) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<Status>200</Status>
<Message>Data updated in pixi*</Message>
<InvoiceNr>RE2024001234</InvoiceNr>
<Packages>2</Packages>
<PackageNetWeight>2.35</PackageNetWeight>
<PackageGrossWeight>2.8</PackageGrossWeight>
<ShipVendor>DHL</ShipVendor>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 400 | Invoice Nr could not be found in pixi* | Es existiert keine Rechnung mit der angegebenen `InvoiceNr`, oder `InvoiceNr` wurde nicht übergeben. Die Rechnungsnummer prüfen. |
| 500 | Data could not be updated in pixi*. | Das Update hat keine Zeile betroffen, z. B. weil die Rechnung zwischen Existenzprüfung und Update gelöscht wurde. Erneut versuchen oder die Rechnung prüfen. |
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:pixiSetInvoiceShippingInformation>
<!-- <InvoiceNr>RE2024001234</InvoiceNr> -->
<!-- <PackageNetWeight>2.35</PackageNetWeight> -->
<!-- <PackageGrossWeight>2.8</PackageGrossWeight> -->
<!-- <Packages>2</Packages> -->
<!-- <ShipVendor>DHL</ShipVendor> -->
</ns1:pixiSetInvoiceShippingInformation>
</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:pixiSetInvoiceShippingInformation>
<!-- <InvoiceNr>RE2024001234</InvoiceNr> -->
<!-- <PackageNetWeight>2.35</PackageNetWeight> -->
<!-- <PackageGrossWeight>2.8</PackageGrossWeight> -->
<!-- <Packages>2</Packages> -->
<!-- <ShipVendor>DHL</ShipVendor> -->
</ns1:pixiSetInvoiceShippingInformation>
</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 = [
// 'InvoiceNr' => 'RE2024001234',
// 'PackageNetWeight' => '2.35',
// 'PackageGrossWeight' => '2.8',
// 'Packages' => '2',
// 'ShipVendor' => 'DHL',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetInvoiceShippingInformation', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetInvoiceShippingInformation