pixiSupplierOrderLineLocQtyCreate
Legt eine lagerortbezogene Menge für eine Lieferantenbestellposition an, optional gerundet auf Verpackungseinheiten und Mindestbestellmenge.
Fügt einer bestehenden Lieferantenbestellposition eine Menge für einen bestimmten Lagerort hinzu. Das eigentliche Anlegen erledigt die interne Prozedur pixi.SupplierOrderLineLocQtyCreate.
Ablauf:
- Öffnet eine Transaktion bzw. setzt einen Savepoint, falls beim Aufruf bereits eine Transaktion offen ist.
- Ermittelt den Benutzer: Ist
UserIdleer, wird der Benutzer überUserNamegesucht. Existiert dieser Name nicht, wird der BenutzerpixiAdministrationverwendet. - Ermittelt den Lagerort in
dbo.Location. WirdLocationIdübergeben, erfolgt der Abgleich mitLocationKey. Andernfalls wirdLocationmit dem LagerortkürzelLocIDabgeglichen.LocationIdhat Vorrang vorLocation. - Prüft, ob für diese Bestellposition und diesen Lagerort bereits eine Menge in
pixi.SupplierOrderLineLocQtyexistiert. Falls ja, wird die MeldungLocation already exists for sent location.vorgemerkt. - Wurde der Lagerort gefunden:
NULL-Werte beiConsiderPackageUnitsundConsiderMinOrderQtywerden als0behandelt.- Die interne Anlage-Prozedur wird mit Bestellposition, Lagerort, Menge und beiden Schaltern aufgerufen. Sie soll die eingefügten IDs zurückliefern.
- Wurde der Lagerort nicht gefunden, wird die Meldung
Match value for parameter Location does not exists in db.vorgemerkt und nichts angelegt. - Ist eine Meldung vorgemerkt, wird eine Zeile mit
ReturnCode=ERRORundErrorMessagegeliefert. - Die eigene Transaktion wird festgeschrieben.
Bei einem SQL-Fehler wird die Transaktion nach Möglichkeit zurückgerollt und eine ERROR-Zeile mit dem SQL-Fehlertext geliefert.
Hinweise
- Die Duplikatprüfung verhindert das Anlegen nicht. Existiert für den Lagerort bereits eine Menge, wird zwar die Fehlermeldung vorgemerkt, die interne Anlage-Prozedur wird aber trotzdem aufgerufen. Der Aufruf liefert dann das Ergebnis der internen Prozedur, gefolgt von einer
ERROR-Zeile. Ob dabei ein Duplikat entsteht oder abgewiesen wird, hängt vonpixi.SupplierOrderLineLocQtyCreateab, deren Definition nicht beiliegt. - Das Verhalten der internen Prozedur ist hier nicht sichtbar. Das betrifft die gelieferten IDs, die Anwendung von Verpackungseinheiten und Mindestbestellmenge sowie weitere beschriebene Tabellen.
AppNameist Pflicht, wird im Code aber nicht verwendet.UserNameist auch dann Pflicht, wennUserIdübergeben wird.dbo.Locationundpixi.SupplierOrderLineLocQtywerden mitNOLOCKgelesen.- Bei einer äußeren Transaktion und einem nicht fatalen Fehler erfolgt kein Rollback. Bis zum Fehler vorgenommene Änderungen können in der äußeren Transaktion verbleiben.
- Bei Erfolg gibt es keine explizite Statuszeile. Geliefert wird nur das Ergebnis der internen Prozedur.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
AppName
Pflicht
|
varchar(255) string |
– |
Name der aufrufenden Anwendung. Pflicht, wird im Code aber nicht verwendet. Beispiel: |
UserId
|
int | NULL |
ID des ausführenden Benutzers. Ist der Wert leer, wird der Benutzer über Beispiel: |
UserName
Pflicht
|
varchar(50) string |
– |
Benutzername, der verwendet wird, wenn Beispiel: |
SupplierOrderLineId
Pflicht
|
int | – |
ID der Lieferantenbestellposition, die die Lagerortmenge erhält. Beispiel: |
Location
|
varchar(3) string |
NULL |
Lagerortkürzel ( Beispiel: |
LocationId
|
int | NULL |
Lagerortschlüssel ( Beispiel: |
Qty
Pflicht
|
int | – |
Menge für den Lagerort. Beispiel: |
ConsiderPackageUnits
|
bit boolean |
0 |
Gibt an, ob die interne Anlage-Prozedur Verpackungseinheiten berücksichtigt. Erlaubte Werte
Beispiel: |
ConsiderMinOrderQty
|
bit boolean |
0 |
Gibt an, ob die interne Anlage-Prozedur die Mindestbestellmenge berücksichtigt. Erlaubte Werte
Beispiel: |
Antwort
Result-Set 1 · Wenn der Lagerort gefunden wurde und die interne Prozedur pixi.SupplierOrderLineLocQtyCreate Zeilen liefert
Ergebnis der internen Anlage-Prozedur, aufgerufen mit ReturnInsertedIds = 1, vermutlich die eingefügten IDs. Die Spalten sind nicht bestimmbar, da die Definition nicht beiliegt.
Result-Set 2 · Wenn der Lagerort nicht gefunden wurde, für die Position bereits existiert oder ein SQL-Fehler auftrat
Fehler-Statuszeile.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(5) string |
Immer |
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>ERROR</ReturnCode>
<ErrorMessage>Match value for parameter Location does not exists in db. </ErrorMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Location already exists for sent location. | Für diese Lieferantenbestellposition und diesen Lagerort existiert bereits eine Menge. Die interne Anlage-Prozedur wird trotzdem aufgerufen, daher vor dem Aufruf auf bestehende Einträge prüfen. |
| ERROR | Match value for parameter Location does not exists in db. | Weder `LocationId` noch `Location` passt zu einem Lagerort in `dbo.Location`. Einen gültigen Lagerortschlüssel bzw. ein gültiges Kürzel übergeben. |
| ERROR | {ERROR_MESSAGE()} | Ein SQL-Fehler ist aufgetreten, z. B. in der internen Anlage-Prozedur. Die Meldung enthält den Fehlertext des SQL Servers. |
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:pixiSupplierOrderLineLocQtyCreate>
<AppName>MyWarehouseTool</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<SupplierOrderLineId>45871</SupplierOrderLineId>
<!-- <Location>001</Location> -->
<!-- <LocationId>1</LocationId> -->
<Qty>24</Qty>
<!-- <ConsiderPackageUnits>1</ConsiderPackageUnits> -->
<!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
</ns1:pixiSupplierOrderLineLocQtyCreate>
</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:pixiSupplierOrderLineLocQtyCreate>
<AppName>MyWarehouseTool</AppName>
<!-- <UserId>12</UserId> -->
<UserName>jdoe</UserName>
<SupplierOrderLineId>45871</SupplierOrderLineId>
<!-- <Location>001</Location> -->
<!-- <LocationId>1</LocationId> -->
<Qty>24</Qty>
<!-- <ConsiderPackageUnits>1</ConsiderPackageUnits> -->
<!-- <ConsiderMinOrderQty>0</ConsiderMinOrderQty> -->
</ns1:pixiSupplierOrderLineLocQtyCreate>
</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 = [
'AppName' => 'MyWarehouseTool',
// 'UserId' => '12',
'UserName' => 'jdoe',
'SupplierOrderLineId' => '45871',
// 'Location' => '001',
// 'LocationId' => '1',
'Qty' => '24',
// 'ConsiderPackageUnits' => '1',
// 'ConsiderMinOrderQty' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderLineLocQtyCreate', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderLineLocQtyCreate