pixiCreateSupplierOrderFromProfile
Legt Lieferantenbestellungen anhand eines gespeicherten Bestellvorschlagsprofils an und liefert die Nummern der erzeugten Bestellungen.
Führt den Bestellvorschlag für ein gespeichertes Profil aus und bestätigt das Ergebnis in einem Schritt. Dadurch werden Lieferantenbestellungen angelegt oder erweitert.
Ablauf:
- Prüft, ob
ProfileIdübergeben wurde und ob ein Pixi-Benutzer mit dem NamenAPIexistiert. Dieser Benutzer wird als ausführender Benutzer weitergegeben. - Liest das Profil-XML aus
pixi.SupplierOrderSuggestionProfile.Datazur angegebenenId. Fehlen Profil oder Daten, wird eine Fehlerzeile geliefert. - Überträgt die Profileinstellungen unter
/SuggestionProfileDboauf die Parameter des Bestellvorschlags:OrderMethod:OrderOnDemand= 1,OrderForTargetStock= 2,OrderOnStockTurnover= 3.SupplierPriority:LowestPrice= 1 (Standard),FastestDelivery= 2,LatestDelivery= 3.CalculationSuggestionLocation:CalculateSuggestionForEachLocationSeparately= 0 (Standard),CalculateSuggestionsBasedOnSummarizedParametersForSelectedLocations= 1.ConsiderationOfSuppliers:FromSelectedSuppliers= 0 (Standard),IfSelectedSupplierIsOptimal= 1.SupplierOrdersCreation:CreateOnlyNewSupplierOrders= 0 (Standard),AddSuggestedItemsToOpenSupplierOrders= 1.SelectedLocations/int,SelectedSuppliers/intsowie die Tag-IDs inTagKeysOr,TagKeysAndundTagKeysNotwerden zu kommagetrennten Listen zusammengefasst.ConsiderPackagingUnit,ConsiderMinimumOrderAmount,DeliveryLocationId,OrderLocationId,ExcludeSuppliersWithZeroPriceundIncludeOversoldItemswerden direkt übernommen.- Nur bei
OrderOnStockTurnover:TurnoverInDays,ConsiderReorderLevelund der Verkaufszeitraum. BeiStockTurnoverSalesOption=SalesPerDayForLastXDaysumfasst der Zeitraum die letztenSalesForLastXDaysTage bis jetzt, sonst geltenSalesFrom/SalesTo.
- Erzeugt aus der aktuellen Uhrzeit eine Laufnummer (
yyMMddHHmmss) und ruftpixi.SupplierOrderSuggestionPrepareDataund danachpixi.SupplierOrderSuggestionConfirmDataauf. Die Validierung wird beim Bestätigen übersprungen. - Liefert je Lieferantenbestellung dieses Laufs eine Zeile mit der internen Bestellnummer und der Lieferantennummer. Wurde keine Bestellung verknüpft, wird eine
INFO-Zeile geliefert.
Hinweise
- Das eigentliche Anlegen der Lieferantenbestellungen erfolgt in
pixi.SupplierOrderSuggestionPrepareDataundpixi.SupplierOrderSuggestionConfirmData. Deren Definitionen liegen nicht vor, daher sind die beschriebenen Tabellen und die genauen Regeln hier nicht dokumentiert. Beide werden mit@ShowOutputSet = 0aufgerufen, was vermutlich deren eigene Ergebnismengen unterdrückt. - Die gesamte Verarbeitung läuft in einer Transaktion. Besteht beim Aufrufer bereits eine offene Transaktion, wird stattdessen ein Savepoint gesetzt. Bei einer Ausnahme wird zurückgerollt und statt eines SQL-Fehlers eine
ERROR-Zeile geliefert. - Der Benutzer
APImuss inUCS_USERSvorhanden sein. Es gibt keinen Rückgriff auf einen anderen Benutzer. - Die Laufnummer wird sekundengenau aus der aktuellen Uhrzeit gebildet. Zwei Aufrufe in derselben Sekunde können dieselbe Nummer erhalten und ihre Ergebnisse vermischen.
- Werte im Profil, die nicht den genannten Texten entsprechen, lassen die Standardwerte unverändert. Bei unbekannter
OrderMethodbleibt die BestellmethodeNULL. - Enthält eine Tag-Liste keine Einträge, wird dafür
NULLstatt einer leeren Zeichenkette übergeben. - Profil und Ergebnis werden mit
NOLOCKgelesen.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ProfileId
|
smallint int |
NULL |
Id des Bestellvorschlagsprofils in Beispiel: |
Antwort
Result-Set 1 · Wenn ProfileId fehlt, der Benutzer API nicht existiert oder das Profil nicht gefunden wird
Statuszeile mit dem Validierungsfehler.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
|
varchar(53) string |
Fehlertext. |
Result-Set 2 · Bei Erfolg, wenn mindestens eine Lieferantenbestellung mit dem Vorschlagslauf verknüpft ist
Eine Zeile je Lieferantenbestellung, die durch diesen Lauf angelegt oder erweitert wurde.
| Spalte | Typ | Beschreibung |
|---|---|---|
SupplOrderNr
Kann leer sein |
string |
Interne Nummer der Lieferantenbestellung ( |
SupplNr
Kann leer sein |
string |
Lieferantennummer ( |
Result-Set 3 · Wenn keine Lieferantenbestellung angelegt wurde oder eine Ausnahme auftritt
Statuszeile mit INFO (nichts angelegt) oder ERROR (Ausnahme, Änderungen zurückgerollt).
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
|
Message
|
nvarchar(4000) string |
Infotext oder Fehlertext einschließlich der SQL-Fehlermeldung. |
Beispielantwort
<SqlRowSet1>
<row>
<SupplOrderNr>BE-2024-00125</SupplOrderNr>
<SupplNr>L1001</SupplNr>
</row>
<row>
<SupplOrderNr>BE-2024-00126</SupplOrderNr>
<SupplNr>L1017</SupplNr>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Profile Id is a mandatory parameter. | `ProfileId` wurde nicht übergeben oder ist NULL. Die Profil-Id immer angeben. |
| ERROR | UserName "API" does not exist. | Es gibt keinen Pixi-Benutzer `API` in `UCS_USERS`. Diesen Benutzer vor der Nutzung des Calls anlegen. |
| ERROR | Supplier/purchase order suggestion profile not found. | Es existiert kein Profil mit dieser Id oder dessen `Data` ist leer. Profil-Id prüfen. |
| INFO | No supplier/purchase orders created. | Der Vorschlagslauf hat keine Lieferantenbestellungen erzeugt, z. B. weil mit den Profileinstellungen kein Artikel bestellt werden muss. |
| ERROR | Unhandled exception occured: {error} | Beim Vorbereiten oder Bestätigen des Vorschlags ist ein SQL-Fehler aufgetreten. Alle Änderungen werden zurückgerollt; `{error}` enthält die ursprüngliche SQL-Meldung. |
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:pixiCreateSupplierOrderFromProfile>
<!-- <ProfileId>3</ProfileId> -->
</ns1:pixiCreateSupplierOrderFromProfile>
</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:pixiCreateSupplierOrderFromProfile>
<!-- <ProfileId>3</ProfileId> -->
</ns1:pixiCreateSupplierOrderFromProfile>
</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 = [
// 'ProfileId' => '3',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCreateSupplierOrderFromProfile', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCreateSupplierOrderFromProfile