pixiGetInvoicePackageLines
Liefert die Paketpositionen von Rechnungspaketen zu einer Rechnung (per ID oder Nummer) oder zu einem einzelnen Paket mit Artikelnummer, Rechnungsposition und Menge.
Liefert die Positionen von Rechnungspaketen (pixi.InvoicePackageLines). Jede Position verknüpft ein Paket mit einer Rechnungsposition und einer Menge.
Eingabe und Prüfung
- Mindestens einer der Parameter
InvoiceNumber,InvoiceIdoderPackageIdmuss angegeben sein. Eine leereInvoiceNumbergilt als nicht angegeben. InvoiceNumberwird in einen Rechnungsschlüssel aufgelöst. SindInvoiceIdundInvoiceNumberbeide angegeben, müssen sie auf dieselbe Rechnung verweisen.- Ist
PackageIdangegeben, muss das Paket Paketpositionen haben. Ist zusätzlich eine Rechnung angegeben, muss das Paket zu dieser Rechnung gehören. - Ist eine Rechnung angegeben, muss mindestens ein Paket dieser Rechnung Paketpositionen haben.
- Schlägt eine Prüfung fehl, wird eine Zeile
Status/MessagemitStatus=Errorzurückgegeben. Danach folgt keine weitere Ergebnismenge.
Auswahl
- Nur Rechnung angegeben: Alle Pakete der Rechnung werden verwendet.
PackageIdangegeben, mit oder ohne Rechnung: Nur dieses Paket wird verwendet.- Rechnungen werden verworfen, wenn sie keine Rechnungspositionen haben oder wenn eine verknüpfte Rechnungsposition keinen Bezug zu einer Auftragsposition (
OrderLineRef) hat. - Die Paketpositionen werden mit den Rechnungspositionen der ausgewählten Rechnungen abgeglichen. Es werden nur Positionen geliefert, deren Artikel eine interne Artikelnummer hat (
pixi.ItemCode, Codetyp 2). InvoiceNrhat in allen Zeilen denselben Wert. Es ist die Nummer der ausgewählten Rechnung.
Die Ergebnismenge hat keine explizite Sortierung. Passt keine Position, wird eine Statuszeile mit Info geliefert.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK. Daten, die gleichzeitig geschrieben werden, können unbestätigt erscheinen. - Laut einem Code-Kommentar werden diese Pakete vom Delphi-ShipOut-Prozess angelegt.
- Stolperfalle: Die Rechnung wird komplett verworfen, wenn eine ihrer verknüpften Rechnungspositionen keinen
OrderLineRefhat. Dann liefert der Aufruf dieInfo-Zeile und keine Positionen, auch wenn die Rechnung Paketpositionen hat. - Positionen, deren Artikel keine interne Artikelnummer hat (Codetyp 2 in
pixi.ItemCode), erscheinen nicht. Hat ein Artikel mehrere Codes vom Typ 2, werden seine Positionen mehrfach geliefert. - Fehler- und Infozeilen kommen in der normalen Ergebnismenge mit den Spalten
StatusundMessagezurück. Es wird kein SQL-Fehler ausgelöst. Der Rückgabewert ist 1 bei Fehlern, sonst 0.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceNumber
|
varchar(20) string |
NULL |
Rechnungsnummer ( Beispiel: |
InvoiceId
|
int | NULL |
Rechnungsschlüssel ( Beispiel: |
PackageId
|
int | NULL |
ID eines Rechnungspakets. Ist sie angegeben, werden nur die Positionen dieses Pakets geliefert. Ist zusätzlich eine Rechnung angegeben, muss das Paket zu ihr gehören. Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg, wenn mindestens eine passende Paketposition gefunden wird
Eine Zeile je Paketposition mit Rechnung, Artikel und Menge.
| Spalte | Typ | Beschreibung |
|---|---|---|
PackageId
|
int |
ID des Rechnungspakets. |
InvoiceId
|
int |
Rechnungsschlüssel der Rechnungsposition. |
InvoiceNr
Kann leer sein |
varchar(20) string |
Rechnungsnummer der ausgewählten Rechnung. In allen Zeilen gleich. |
ItemKey
|
int |
Artikelschlüssel ( |
ItemNrInt
|
varchar(50) string |
Interne Artikelnummer aus |
InvlineKey
|
int |
Schlüssel der Rechnungsposition. |
Quantity
Kann leer sein |
int |
Menge der Rechnungsposition in diesem Paket. |
Result-Set 2 · Wenn eine Prüfung fehlschlägt (Error) oder keine passenden Positionen gefunden werden (Info)
Statuszeile anstelle von Daten.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
|
Message
|
varchar(max) string |
Meldungstext. |
Beispielantwort
<SqlRowSet1>
<row>
<PackageId>10452</PackageId>
<InvoiceId>58231</InvoiceId>
<InvoiceNr>RE2024001234</InvoiceNr>
<ItemKey>3315</ItemKey>
<ItemNrInt>ART-100245</ItemNrInt>
<InvlineKey>912877</InvlineKey>
<Quantity>2</Quantity>
</row>
<row>
<PackageId>10452</PackageId>
<InvoiceId>58231</InvoiceId>
<InvoiceNr>RE2024001234</InvoiceNr>
<ItemKey>4120</ItemKey>
<ItemNrInt>ART-200871</ItemNrInt>
<InvlineKey>912878</InvlineKey>
<Quantity>1</Quantity>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | At least one of the parameters needs to be provided | Keiner der Parameter `InvoiceNumber`, `InvoiceId` und `PackageId` wurde angegeben, oder `InvoiceNumber` war leer. Mindestens einen davon angeben. |
| Error | No invoice found with invoice id: {InvoiceId} or invoice number: {InvoiceNumber} | Die angegebene Rechnungs-ID oder Rechnungsnummer existiert nicht in `Invoices`. |
| Error | No invoice package lines found with package Id: {PackageId} | Für die angegebene `PackageId` gibt es keine Paketpositionen in `pixi.InvoicePackageLines`. |
| Error | Two different invoices found with provided parameters invoice Id: {InvoiceId} and invoice number: {InvoiceNumber} | `InvoiceId` und `InvoiceNumber` verweisen auf unterschiedliche Rechnungen. Nur einen der beiden Parameter oder passende Werte übergeben. |
| Error | Package Id: {PackageId} does not belong to invoice with invoice Id: {InvoiceId} or invoice number: {InvoiceNumber} | Das angegebene Paket gehört zu einer anderen Rechnung. |
| Error | No package lines found with package Id: {PackageId} or with invoice Id/invoice number: {InvoiceId}/{InvoiceNumber} | Keines der Pakete der angegebenen Rechnung hat Paketpositionen. |
| Info | No records found with provided parameters | Alle Prüfungen waren erfolgreich, aber keine Position passte. Zum Beispiel wurde die Rechnung wegen Rechnungspositionen ohne Bezug zu einer Auftragsposition verworfen, oder die Artikel haben keine interne Artikelnummer. |
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:pixiGetInvoicePackageLines>
<!-- <InvoiceNumber>RE2024001234</InvoiceNumber> -->
<!-- <InvoiceId>58231</InvoiceId> -->
<!-- <PackageId>10452</PackageId> -->
</ns1:pixiGetInvoicePackageLines>
</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:pixiGetInvoicePackageLines>
<!-- <InvoiceNumber>RE2024001234</InvoiceNumber> -->
<!-- <InvoiceId>58231</InvoiceId> -->
<!-- <PackageId>10452</PackageId> -->
</ns1:pixiGetInvoicePackageLines>
</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' => 'RE2024001234',
// 'InvoiceId' => '58231',
// 'PackageId' => '10452',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiGetInvoicePackageLines', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiGetInvoicePackageLines