pixiSupplierOrderLineCreate
Legt Positionen zu einer bestehenden Lieferantenbestellung im Status NEW oder BES anhand eines XML-Dokuments mit Artikeln an.
Fügt Positionen zu einer bestehenden Lieferantenbestellung hinzu.
- Der Benutzer wird über
UserNameermittelt. Ist der Name unbekannt, wird der BenutzerpixiAdministrationverwendet. ConsiderPackageUnitsundConsiderMinOrderQtywerden beiNULLauf0gesetzt.- Die Lieferantenbestellung wird in
SupplierOrderüberId = SupplierOrderIdoderInternalNumber = SupplierOrderNrgesucht. Es muss genau eine Bestellung gefunden werden:- kein Treffer: Fehler Purchase order does not exist!
- mehr als ein Treffer: Fehler Parameters @SupplierOrderId and @SupplierOrderNr belong to different purchase order!
- Die Bestellung muss den Status
1(NEW) oder2(BES) haben. Andernfalls liefert der Aufruf Purchase order is not in status NEW or BES! - Sind alle Prüfungen erfolgreich, legt die interne Prozedur
pixi.SupplierOrderLineCreatedie Positionen an. Sie erhält die Bestell-ID, die Benutzer-ID, beide Schalter undPurchaseOrderXML.
Der Aufruf liefert eine Ergebnismenge mit Statuszeilen (Status, StatusDescription, ItemId), sortiert nach Status und ItemId.
Hinweise
- Das eigentliche Anlegen der Positionen erfolgt in
pixi.SupplierOrderLineCreate, das nicht beigefügt ist. Daher lässt sich hier Folgendes nicht dokumentieren:- die erwartete Struktur von
PurchaseOrderXML - wie Verpackungseinheiten und Mindestbestellmengen angewendet werden
- welche Tabellen geschrieben werden
- welche Status- und Beschreibungswerte bei Erfolg im Ergebnis erscheinen
- die erwartete Struktur von
pixi.SupplierOrderLineCreatewird mit@pipiSupplierOrderLineCreate_ReturnInfo = 1aufgerufen. Vermutlich schreibt es seine Ergebnisse je Artikel in die temporäre Ergebnistabelle, die dieser Aufruf zurückgibt.- Nur einen der Parameter
SupplierOrderIdoderSupplierOrderNrübergeben oder sicherstellen, dass beide zur selben Bestellung gehören. Die Suche verwendetOR, daher führen zwei verschiedene Treffer zu einem Fehler. Sind beideNULL, wird nichts gefunden und Purchase order does not exist! zurückgegeben. - Die Suche nach der Bestellung verwendet
NOLOCK. - Der Aufruf läuft in einer eigenen Transaktion bzw. in einem Savepoint, falls bereits eine Transaktion offen ist.
- Bei einem SQL-Fehler wird die Transaktion zurückgerollt und der Fehler über
log.InsertErrorprotokolliert. Ob der Fehler an den Aufrufer weitergegeben wird, hängt von dieser nicht beigefügten Prozedur ab. In diesem Fall kann die Status-Ergebnismenge fehlen.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SupplierOrderId
|
int | NULL |
Interne ID der Lieferantenbestellung ( Beispiel: |
SupplierOrderNr
|
int | NULL |
Interne Nummer der Lieferantenbestellung ( Beispiel: |
UserName
|
varchar(50) string |
– |
Pixi-Benutzername, unter dem die Positionen angelegt werden. Bei unbekanntem Namen wird Beispiel: |
ConsiderPackageUnits
|
bit boolean |
0 |
Legt fest, ob Verpackungseinheiten beim Anlegen der Positionen berücksichtigt werden. Erlaubte Werte
Beispiel: |
ConsiderMinOrderQty
|
bit boolean |
0 |
Legt fest, ob die Mindestbestellmenge beim Anlegen der Positionen berücksichtigt wird. Erlaubte Werte
Beispiel: |
PurchaseOrderXML
Pflicht
|
xml | – |
XML-Dokument mit den anzulegenden Positionen. Es wird unverändert an Beispiel:
|
Antwort
Result-Set 1 · Immer, sofern kein SQL-Fehler auftritt
Statuszeilen aus der Prüfung oder aus dem Anlegen der Positionen, sortiert nach Status und ItemId.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
Kann leer sein |
varchar(120) string |
Status der Zeile, z. B. |
StatusDescription
Kann leer sein |
varchar(120) string |
Beschreibungstext zum Status. |
ItemId
Kann leer sein |
int |
Artikel, auf den sich die Zeile bezieht. |
Beispielantwort
<SqlRowSet1>
<row>
<Status>Error</Status>
<StatusDescription>Purchase order is not in status NEW or BES!</StatusDescription>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Purchase order does not exist! | Keine Lieferantenbestellung passt zu `SupplierOrderId` oder `SupplierOrderNr`, oder beide sind leer. Eine gültige ID oder Nummer übergeben. |
| Error | Parameters @SupplierOrderId and @SupplierOrderNr belong to different purchase order! | Die Suche hat mehr als eine Bestellung gefunden, z. B. weil ID und Nummer zu verschiedenen Bestellungen gehören. Nur einen Bezeichner oder zueinander passende Werte übergeben. |
| Error | Purchase order is not in status NEW or BES! | Die Lieferantenbestellung hat einen anderen Status als 1 (NEW) oder 2 (BES). Positionen können nur zu Bestellungen in diesen Status hinzugefügt werden. |
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:pixiSupplierOrderLineCreate>
<!-- <SupplierOrderId>1542</SupplierOrderId> -->
<!-- <SupplierOrderNr>20231</SupplierOrderNr> -->
<!-- <UserName>jdoe</UserName> -->
<!-- <ConsiderPackageUnits>1</ConsiderPackageUnits> -->
<!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
<PurchaseOrderXML><![CDATA[<PurchaseOrder><Items><Item><ItemId>4711</ItemId><Quantity>10</Quantity></Item></Items></PurchaseOrder>]]></PurchaseOrderXML>
</ns1:pixiSupplierOrderLineCreate>
</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:pixiSupplierOrderLineCreate>
<!-- <SupplierOrderId>1542</SupplierOrderId> -->
<!-- <SupplierOrderNr>20231</SupplierOrderNr> -->
<!-- <UserName>jdoe</UserName> -->
<!-- <ConsiderPackageUnits>1</ConsiderPackageUnits> -->
<!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
<PurchaseOrderXML><![CDATA[<PurchaseOrder><Items><Item><ItemId>4711</ItemId><Quantity>10</Quantity></Item></Items></PurchaseOrder>]]></PurchaseOrderXML>
</ns1:pixiSupplierOrderLineCreate>
</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 = [
// 'SupplierOrderId' => '1542',
// 'SupplierOrderNr' => '20231',
// 'UserName' => 'jdoe',
// 'ConsiderPackageUnits' => '1',
// 'ConsiderMinOrderQty' => '0',
'PurchaseOrderXML' => '<PurchaseOrder><Items><Item><ItemId>4711</ItemId><Quantity>10</Quantity></Item></Items></PurchaseOrder>',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderLineCreate', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderLineCreate