pixiGetInvoicePackage
Liefert die Versandpakete einer Rechnung (Labels, Tracking-IDs, Gewicht, Paketmaße), ausgewählt über Rechnungsnummer, Rechnungs-ID oder Paket-ID.
Liest die zu einer Rechnung gespeicherten Pakete aus pixi.InvoicePackage, zusammen mit dem Code der Paketmaße, der externen Auftragsnummer und der Rechnungsnummer.
Parameterbehandlung und Prüfungen (jede fehlgeschlagene Prüfung liefert eine einzelne Status/Message-Zeile mit Status = Error):
- Ein leeres
InvoiceNumberwird alsNULLbehandelt. Mindestens einer der ParameterInvoiceNumber,InvoiceId,PackageIdmuss angegeben werden. InvoiceNumberwird in eine Rechnungs-ID aufgelöst (erster Treffer aufInvoiceNr).- Ist
InvoiceIdoder die aufgelöste ID gesetzt, muss mindestens eine davon inInvoicesexistieren. - Ist
PackageIdangegeben, muss das Paket existieren. - Verweisen
InvoiceIdundInvoiceNumberauf unterschiedliche Rechnungen, schlägt der Aufruf fehl. - Sind Paket und Rechnung angegeben, muss das Paket zu dieser Rechnung gehören.
Auswahl
- Die maßgebliche Rechnung ist
InvoiceId, andernfalls die ausInvoiceNumberermittelte Rechnung. - Geliefert werden alle Pakete, deren Paket-ID
PackageIdentspricht oder deren Rechnungs-ID der maßgeblichen Rechnung entspricht. Ist eine Rechnung angegeben, werden alle ihre Pakete geliefert, auch wenn zusätzlichPackageIdangegeben ist. Ist nurPackageIdangegeben, wird nur dieses Paket geliefert. InvoiceNrundOrderNrExternalsind in jeder Zeile gleich. Sie stammen von der Rechnung (direkt angegeben oder über das Paket), die mit Auftragspositionen verknüpft ist:OrderNrExternalkommt vom Auftrag mit der höchstenOrder_Idder Rechnungspositionen.- Eine Sortierung ist nicht festgelegt.
Wird kein Paket gefunden, wird eine Info-Zeile geliefert.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK, daher können nicht festgeschriebene Daten geliefert werden. - Die Antwortstruktur unterscheidet sich: Bei Fehlern oder ohne Treffer wird statt der Paketzeilen eine
Status/Message-Zeile geliefert. Auf eine SpalteStatusprüfen. - Eine nicht existierende Rechnungsnummer wird ohne
InvoiceIdnicht als Fehler gemeldet. OhnePackageIdliefert der Aufruf dann dieInfo-Zeile. MitPackageIdliefert er nur dieses Paket. - Existiert
InvoiceIdnicht, ist aberInvoiceNumbergültig, lautet der Fehler "Two different invoices" statt "No invoice found". - Eine Rechnung wird für
InvoiceNr/OrderNrExternalignoriert, wenn sie keine Rechnungspositionen hat oder eine ihrer Rechnungspositionen keinen Verweis auf eine Auftragsposition besitzt. Dann sind beide SpaltenNULL, die Pakete werden aber trotzdem geliefert. - Der Rückgabewert ist 1 bei Fehlern und sonst 0. Er ist nicht Teil der SOAP-Ergebniszeilen.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceNumber
|
varchar(20) string |
NULL |
Rechnungsnummer ( Beispiel: |
InvoiceId
|
int | NULL |
Interne Rechnungs-ID ( Beispiel: |
PackageId
|
int | NULL |
ID eines Pakets in Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg, wenn mindestens ein Paket gefunden wird
Eine Zeile pro gefundenem Rechnungspaket.
| Spalte | Typ | Beschreibung |
|---|---|---|
PackageId
|
int |
ID des Pakets. |
InvoiceId
Kann leer sein |
int |
ID der Rechnung, zu der das Paket gehört. |
GrossWeight
Kann leer sein |
money decimal |
Bruttogewicht des Pakets. |
ShippingLabelUrl
Kann leer sein |
varchar(8000) string |
URL des Versandlabels. |
TrackingId
Kann leer sein |
varchar(512) string |
Tracking-ID der Sendung. |
TimesLabelPrinted
Kann leer sein |
tinyint int |
Anzahl, wie oft das Label gedruckt wurde. |
ReturnLabelUrl
Kann leer sein |
varchar(8000) string |
URL des Retourenlabels. |
ReturnTrackingId
Kann leer sein |
varchar(512) string |
Tracking-ID der Retourensendung. |
PackageDimensionId
Kann leer sein |
int |
ID der Paketmaße. |
ExternalShipmentId
Kann leer sein |
varchar(512) string |
Sendungs-ID beim Versanddienstleister. |
MessageFromProvider
Kann leer sein |
varchar(max) string |
Vom Versanddienstleister zurückgegebene Meldung. |
MessageFromProviderDetail
Kann leer sein |
varchar(max) string |
Detailmeldung des Versanddienstleisters. |
OrderNrExternal
Kann leer sein |
varchar(50) string |
Externe Auftragsnummer des über die Rechnungspositionen verknüpften Auftrags mit der höchsten |
InvoiceNr
Kann leer sein |
varchar(20) string |
Rechnungsnummer der ermittelten Rechnung. In allen Zeilen gleich. |
PackageDimensionCode
Kann leer sein |
nvarchar(100) string |
Code der Paketmaße aus |
Result-Set 2 · Wenn kein Paket zu den Parametern gefunden wird
Info-Zeile statt Paketzeilen.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(4) string |
Immer |
Message
|
varchar(41) string |
Infotext. |
Result-Set 3 · Wenn eine Parameterprüfung fehlschlägt
Fehlerzeile. Die Prozedur bricht danach ab.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
Kann leer sein |
varchar string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<PackageId>4321</PackageId>
<InvoiceId>98765</InvoiceId>
<GrossWeight>2.3500</GrossWeight>
<ShippingLabelUrl>https://labels.example.com/4321.pdf</ShippingLabelUrl>
<TrackingId>00340434161094042557</TrackingId>
<TimesLabelPrinted>1</TimesLabelPrinted>
<ReturnLabelUrl>https://labels.example.com/4321-return.pdf</ReturnLabelUrl>
<ReturnTrackingId>00340434161094042558</ReturnTrackingId>
<PackageDimensionId>3</PackageDimensionId>
<ExternalShipmentId>SHP-778899</ExternalShipmentId>
<MessageFromProvider>OK</MessageFromProvider>
<OrderNrExternal>SHOP-100045</OrderNrExternal>
<InvoiceNr>RE2024-001234</InvoiceNr>
<PackageDimensionCode>M</PackageDimensionCode>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | At least one of the parameters needs to be provided | `InvoiceNumber` (oder leer), `InvoiceId` und `PackageId` fehlen alle. Mindestens einen davon angeben. |
| Error | No invoice found with invoice id: {InvoiceId} or invoice number: {InvoiceNumber} | `InvoiceId` wurde angegeben, existiert aber nicht, und `InvoiceNumber` verweist auf keine existierende Rechnung. |
| Error | No invoice package found with package Id: {PackageId} | Die angegebene `PackageId` existiert nicht in `pixi.InvoicePackage`. |
| Error | Two different invoices found with provided parameters InvoiceId: {InvoiceId} and InvoiceNumber: {InvoiceNumber} | `InvoiceId` und `InvoiceNumber` verweisen auf unterschiedliche Rechnungen. Das tritt auch auf, wenn `InvoiceId` nicht existiert, `InvoiceNumber` aber gültig ist. Nur einen der Parameter oder übereinstimmende Werte übergeben. |
| Error | PackageId: {PackageId} does not belong to invoice with InvoiceId: {InvoiceId} or InvoiceNumber: {InvoiceNumber} | Das angegebene Paket gehört zu einer anderen Rechnung als der über `InvoiceId`/`InvoiceNumber` angegebenen. |
| Info | No records found with provided parameters | Die Prüfungen waren erfolgreich, aber es wurde kein Paket gefunden, z. B. weil die Rechnung keine Pakete hat oder die Rechnungsnummer nicht existiert. |
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:pixiGetInvoicePackage>
<!-- <InvoiceNumber>RE2024-001234</InvoiceNumber> -->
<!-- <InvoiceId>98765</InvoiceId> -->
<!-- <PackageId>4321</PackageId> -->
</ns1:pixiGetInvoicePackage>
</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:pixiGetInvoicePackage>
<!-- <InvoiceNumber>RE2024-001234</InvoiceNumber> -->
<!-- <InvoiceId>98765</InvoiceId> -->
<!-- <PackageId>4321</PackageId> -->
</ns1:pixiGetInvoicePackage>
</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 = [
// 'InvoiceNumber' => 'RE2024-001234',
// 'InvoiceId' => '98765',
// 'PackageId' => '4321',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetInvoicePackage', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetInvoicePackage