pixiSupplierOrderDelete
Löscht eine oder mehrere Lieferantenbestellungen, identifiziert über ID oder interne Nummer, und liefert eine Statuszeile.
Löscht Lieferantenbestellungen. Die zu löschenden Bestellungen können auf vier Arten übergeben werden, die sich beliebig kombinieren lassen:
SupplierOrderId: eine einzelne ID einer Lieferantenbestellung.SupplierOrderIds: eine kommagetrennte Liste von IDs.SupplierOrderNr: eine einzelne interne Bestellnummer (SupplierOrder.InternalNumber). Sie wird in die zugehörige ID aufgelöst.SupplierOrderNrs: eine kommagetrennte Liste interner Bestellnummern. Sie werden in IDs aufgelöst.
Werte 0, NULL oder Leerstring gelten als "nicht angegeben". Alle aus diesen Parametern ermittelten IDs werden zu einer Kandidatenliste zusammengeführt. Diese Liste wird als kommagetrennter String an die interne Prozedur pixi.SupplierOrderDelete übergeben, die das eigentliche Löschen ausführt.
Anschließend wird geprüft, ob noch eine der Kandidaten-IDs in SupplierOrder vorhanden ist:
- Ist keine mehr vorhanden, wird
ReturnCode=SUCCESSmit leererErrorMessagegeliefert. - Ist mindestens eine noch vorhanden, wird
ReturnCode=WARNINGmit der Meldung Some Purchase Orders from list were not deleted. geliefert. Welche Bestellungen nicht gelöscht wurden, wird nicht angegeben.
Bei einem Fehler wird die Transaktion zurückgerollt und eine Zeile mit ReturnCode = ERROR und dem SQL-Fehlertext geliefert.
Hinweise
- Die eigentliche Löschlogik (welche Bestellungen gelöscht werden dürfen, welche abhängigen Daten entfernt werden) liegt in
pixi.SupplierOrderDelete, deren Definition nicht vorliegt. Deren Regeln und eventuelle eigene Ergebnismengen sind unbekannt. - Die Verarbeitung läuft in einer Transaktion. Besteht beim Aufrufer bereits eine offene Transaktion, wird stattdessen ein Savepoint verwendet, und bei Erfolg wird keine Statuszeile geliefert; nur die Fehlerzeile wird dann zurückgegeben. Ein normaler SOAP-Aufruf hat keine äußere Transaktion und erhält immer eine Statuszeile.
AppNameist deklariert, wird aber nicht verwendet.- IDs in
SupplierOrderIdswerden nicht auf Existenz geprüft. Nicht existierende IDs führen nicht zu einer Warnung, da die abschließende Prüfung nur noch vorhandene Kandidaten betrachtet. - Nicht numerische Einträge in
SupplierOrderIdsoderSupplierOrderNrsführen zu einem Konvertierungsfehler und einerERROR-Zeile; es wird nichts gelöscht. - Wird keine Bestellung angegeben, wird eine leere Liste (
NULL) anpixi.SupplierOrderDeleteübergeben. Wie diese Prozedur damit umgeht, ist nicht ersichtlich. - Die Auflösung interner Nummern und die abschließende Existenzprüfung verwenden
NOLOCK. SupplierOrderIdsundSupplierOrderNrssind auf 8000 Zeichen begrenzt.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
AppName
|
varchar(255) string |
NULL |
Name der aufrufenden Anwendung. Deklariert, aber im Code nicht verwendet. Beispiel: |
SupplierOrderId
|
int | NULL |
ID einer einzelnen zu löschenden Lieferantenbestellung. Beispiel: |
SupplierOrderIds
|
varchar(8000) string |
– |
Kommagetrennte Liste von IDs der zu löschenden Lieferantenbestellungen. Leerzeichen um Einträge werden entfernt. Leer bedeutet nicht angegeben. Beispiel: |
SupplierOrderNr
|
int | NULL |
Interne Nummer ( Beispiel: |
SupplierOrderNrs
|
varchar(8000) string |
– |
Kommagetrennte Liste interner Nummern der zu löschenden Lieferantenbestellungen. Jeder Eintrag muss eine Ganzzahl sein. Leer bedeutet nicht angegeben. Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg oder Warnung, nur wenn der Aufruf nicht innerhalb einer äußeren Transaktion erfolgt.
Statuszeile des Löschvorgangs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(20) string |
|
ErrorMessage
Kann leer sein |
varchar(100) string |
|
Result-Set 2 · Bei einem Fehler.
Fehlerzeile, nachdem die Transaktion (bzw. der Savepoint) zurückgerollt wurde.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(5) string |
Immer |
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
SQL-Fehlermeldung des Fehlers. |
Beispielantwort
<SqlRowSet1>
<row>
<ReturnCode>SUCCESS</ReturnCode>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| WARNING | Some Purchase Orders from list were not deleted. | Mindestens eine der angeforderten Lieferantenbestellungen ist nach Ausführung von `pixi.SupplierOrderDelete` noch vorhanden, z. B. weil deren Regeln das Löschen verhindern. Bestellungen einzeln prüfen. |
| ERROR | {ERROR_MESSAGE()} | Beliebiger SQL-Fehler während der Verarbeitung, z. B. ein nicht numerischer Eintrag in `SupplierOrderIds` oder `SupplierOrderNrs` (Konvertierungsfehler) oder ein Fehler aus `pixi.SupplierOrderDelete`. Alle Änderungen werden zurückgerollt. |
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:pixiSupplierOrderDelete>
<!-- <AppName>ShopConnector</AppName> -->
<!-- <SupplierOrderId>1532</SupplierOrderId> -->
<!-- <SupplierOrderIds>1533,1534,1540</SupplierOrderIds> -->
<!-- <SupplierOrderNr>20345</SupplierOrderNr> -->
<!-- <SupplierOrderNrs>20346,20347</SupplierOrderNrs> -->
</ns1:pixiSupplierOrderDelete>
</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:pixiSupplierOrderDelete>
<!-- <AppName>ShopConnector</AppName> -->
<!-- <SupplierOrderId>1532</SupplierOrderId> -->
<!-- <SupplierOrderIds>1533,1534,1540</SupplierOrderIds> -->
<!-- <SupplierOrderNr>20345</SupplierOrderNr> -->
<!-- <SupplierOrderNrs>20346,20347</SupplierOrderNrs> -->
</ns1:pixiSupplierOrderDelete>
</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' => 'ShopConnector',
// 'SupplierOrderId' => '1532',
// 'SupplierOrderIds' => '1533,1534,1540',
// 'SupplierOrderNr' => '20345',
// 'SupplierOrderNrs' => '20346,20347',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSupplierOrderDelete', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSupplierOrderDelete