pixiSupplierOrderLineDelete
Löscht eine oder mehrere Lieferantenbestellpositionen und liefert eine Statuszeile mit SUCCESS, WARNING oder ERROR.
Löscht Lieferantenbestellpositionen anhand ihrer IDs. Das eigentliche Löschen übernimmt die interne Prozedur pixi.SupplierOrderLineDelete. Laut Kopfkommentar wird dabei gegebenenfalls auch die Lieferantenbestellung aktualisiert.
Ablauf:
-
Eine Transaktion wird geöffnet. Ist bereits eine äußere Transaktion offen, wird stattdessen ein Savepoint gesetzt.
-
Der Benutzer wird ermittelt. Ohne
UserIdwird die ID überinf.UserGetByNameausUserNamebestimmt. Existiert der Name nicht, wird die ID des BenutzerspixiAdministrationverwendet. -
Die zu löschenden Positionen werden gesammelt:
- die einzelne ID aus
SupplierOrderLineId(der Wert0wird wieNULLbehandelt); - alle IDs aus der kommagetrennten Liste
SupplierOrderLineIds. Die Elemente werden getrimmt, leere Elemente ignoriert und Duplikate entfernt.
Beide Parameter lassen sich kombinieren.
- die einzelne ID aus
-
pixi.SupplierOrderLineDeletewird mit Benutzer-ID, Einzel-ID und ID-Liste aufgerufen. -
Es wird geprüft, ob eine der angeforderten IDs noch in
SupplierOrderLineexistiert. In diesem Fall lautet das ErgebnisWARNINGmit der MeldungSome Purchase Orderlines items from list were not deleted., sonstSUCCESS. -
Die Transaktion wird bestätigt und eine Statuszeile mit
ReturnCodeundErrorMessagegeliefert.
Tritt ein Fehler auf, wird die Transaktion zurückgerollt und eine Zeile mit ReturnCode = ERROR und dem SQL-Fehlertext zurückgegeben.
Hinweise
- Die Definition von
pixi.SupplierOrderLineDeleteliegt nicht vor. Offen bleibt daher:- welche Tabellen sie ändert;
- unter welchen Bedingungen sie das Löschen einer Position verweigert, etwa bei bereits gebuchtem Wareneingang;
- ob sie den Kopf der Lieferantenbestellung aktualisiert.
WARNINGführt nicht zu einem Rollback. Löschbare Positionen bleiben gelöscht und die Transaktion wird bestätigt.- Die Existenzprüfung nach dem Löschen liest
SupplierOrderLinemitNOLOCK. - Jedes nicht leere Element von
SupplierOrderLineIdsmuss eine Ganzzahl sein. Ein nicht numerisches Element führt zu einem Konvertierungsfehler. Der gesamte Aufruf wird dann zurückgerollt und liefertERROR. AppNameist Pflicht, wird von der Prozedur aber nicht verwendet.UserNamehat keinen Standardwert und muss immer übergeben werden, auch wennUserIdgesetzt ist.- Läuft die Prozedur innerhalb einer äußeren Transaktion, liefert sie bei Erfolg keine Statuszeile. Das betrifft normale SOAP-Aufrufe nicht.
- Tritt innerhalb einer äußeren, noch bestätigbaren Transaktion ein Fehler auf, wird der Savepoint nicht zurückgerollt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
AppName
Pflicht
|
varchar(255) string |
– |
Name der aufrufenden Anwendung. Pflichtparameter, wird von der Prozedur aber nicht verwendet. Beispiel: |
UserId
|
int | NULL |
ID des Pixi-Benutzers, der das Löschen ausführt. Bei Beispiel: |
UserName
Pflicht
|
varchar(50) string |
– |
Pixi-Benutzername. Dient zur Ermittlung der Benutzer-ID, wenn Beispiel: |
SupplierOrderLineId
|
int | NULL |
ID einer einzelnen zu löschenden Lieferantenbestellposition. Beispiel: |
SupplierOrderLineIds
|
varchar(8000) string |
– |
Kommagetrennte Liste der zu löschenden Lieferantenbestellpositions-IDs. Leerzeichen um die Elemente werden entfernt, leere Elemente ignoriert. Alle Elemente müssen Ganzzahlen sein. Kombinierbar mit Beispiel: |
Antwort
Result-Set 1 · Bei normalen SOAP-Aufrufen immer. Bei Erfolg innerhalb einer äußeren Transaktion nicht geliefert.
Statuszeile mit dem Ergebnis des Löschvorgangs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(20) string |
(Hinweis: Der englische Begriff steht für den Rückgabewert; die Bedeutung ist identisch.) |
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Bei |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>WARNING</ReturnCode>
<ErrorMessage>Some Purchase Orderlines items from list were not deleted.</ErrorMessage>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| WARNING | Some Purchase Orderlines items from list were not deleted. | Mindestens eine der angeforderten Lieferantenbestellpositions-IDs existiert nach dem Löschen noch. Die interne Prozedur hat sie nicht gelöscht; der Grund ist in diesem Code nicht ersichtlich. Andere Positionen wurden gelöscht und die Änderungen bestätigt. Vor einem erneuten Versuch den Status der verbliebenen Positionen prüfen. |
| ERROR | {ERROR_MESSAGE()} | Beliebiger SQL-Fehler während der Verarbeitung, zum Beispiel ein Konvertierungsfehler, wenn `SupplierOrderLineIds` ein nicht numerisches Element enthält, oder ein von `pixi.SupplierOrderLineDelete` ausgelöster Fehler. Die Transaktion wird zurückgerollt. In der Liste nur ganzzahlige IDs übergeben. |
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:pixiSupplierOrderLineDelete>
<AppName>MyShopConnector</AppName>
<!-- <UserId>12</UserId> -->
<UserName>api.user</UserName>
<!-- <SupplierOrderLineId>45871</SupplierOrderLineId> -->
<!-- <SupplierOrderLineIds>45872,45873,45874</SupplierOrderLineIds> -->
</ns1:pixiSupplierOrderLineDelete>
</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:pixiSupplierOrderLineDelete>
<AppName>MyShopConnector</AppName>
<!-- <UserId>12</UserId> -->
<UserName>api.user</UserName>
<!-- <SupplierOrderLineId>45871</SupplierOrderLineId> -->
<!-- <SupplierOrderLineIds>45872,45873,45874</SupplierOrderLineIds> -->
</ns1:pixiSupplierOrderLineDelete>
</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' => 'MyShopConnector',
// 'UserId' => '12',
'UserName' => 'api.user',
// 'SupplierOrderLineId' => '45871',
// 'SupplierOrderLineIds' => '45872,45873,45874',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderLineDelete', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderLineDelete