pixiCADeleteEvent
Löscht ein Kundenkonto-Ereignis (CustomerAccount-Eintrag) samt Rechnung, Bankzuordnungen und Kontozuordnungen, sofern das Löschen erlaubt ist.
Löscht ein Ereignis aus dem Kundenkonto (CustomerAccount), identifiziert über den Schlüssel CAref.
Ablauf:
- Der gemeinsame API-Envelope prüft die Aufrufhäufigkeit. Ist das Limit überschritten, wird eine Zeile
ResultCode/ResultTextmit Code502geliefert, und es passiert nichts weiter. - Ist
CArefNULL, wird eine Zeile mitReturnCode = 'ERROR'geliefert. - Andernfalls läuft die interne Prozedur
Pixi_CA_DeleteEventmit dem BenutzernamenAPIin einer Transaktion:- Die Funktion
fPixi_CA_canIdeleteEvententscheidet, ob das Ereignis gelöscht werden darf. Falls nicht, wird nichts geändert undSuccess = 0geliefert. - Ist eine Rechnung verknüpft (
InvoiceRef), wird diese überPixi_DeleteInvoicegelöscht. - Bankzuordnungen (
BankMatch) der verknüpften Bankzeile (BanklineRef) werden gelöscht. UpdateEmp/UpdateDatewerden am Ereignis und an allenCustomerAccountMatch-Zeilen gesetzt, in denen das Ereignis alsCAref1oderCAref2vorkommt. Diese Zuordnungen werden anschließend gelöscht.- Die
CustomerAccount-Zeile selbst wird gelöscht. - Danach versucht der Code, einen verknüpften
DTAUS-Datensatz (nur wenn dessen Status das Löschen erlaubt) bzw. eine verknüpfte manuelle Buchung (CustomerAccountManualBookings) zu entfernen.
- Die Funktion
- Eine Zeile mit
Success(1 = gelöscht, 0 = nicht gelöscht) undErrorMessagewird geliefert.
Hinweise
- Alle Änderungen laufen in einer Transaktion; bei einem Fehler wird zurückgerollt, der Fehler per
RAISERROR(Schweregrad 16, alsSqlMessage) erneut ausgelöst und trotzdem eine Zeile mitSuccess = 0und dem Fehlertext geliefert. - Die Regeln von
fPixi_CA_canIdeleteEventund das Verhalten vonPixi_DeleteInvoiceliegen nicht vor; welche Ereignisse löschbar sind und ob das Löschen der Rechnung zusätzliche Ergebnismengen liefert, ist aus diesem Code nicht ersichtlich. - Die Ermittlung des verknüpften
DTAUS-Datensatzes und der manuellen Buchung liestDTAUSref/ManualBookingRefausCustomerAccount, nachdem diese Zeile bereits gelöscht wurde; die Unterabfragen finden daher praktisch nichts. Laut Code-Kommentar übernimmt ein Trigger das Löschen ausDTAUSundCustomerAccountManualBookings; dieser Trigger liegt nicht vor. - Ist das Löschen nicht erlaubt, erzeugt die interne Prozedur nur ein
PRINT('Event CANNOT Be Deleted'), das nicht als Zeile sichtbar ist; maßgeblich istSuccess = 0. - Die Ausgabeparameter
ResultCode/ResultTextenthalten das Envelope-Ergebnis (200/OKbei normaler Ausführung). - Lesezugriffe mit
NOLOCK, Schreibzugriffe mitROWLOCK. Jeder Aufruf aktualisiertAPI_STATISTICS.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
CAref
Pflicht
|
int | – |
Schlüssel des zu löschenden Kundenkonto-Ereignisses ( Beispiel: |
ResultCode
OUTPUT
|
char(3) string |
NULL |
Ausgabe: Ergebniscode des API-Envelopes, |
ResultText
OUTPUT
|
varchar(1024) string |
NULL |
Ausgabe: Ergebnistext des API-Envelopes, |
Antwort
Result-Set 1 · Wenn das Aufruflimit überschritten ist (Code 502)
Statuszeile des API-Envelopes; es wird nichts gelöscht.
| Spalte | Typ | Beschreibung |
|---|---|---|
ResultCode
|
char(3) string |
|
ResultText
|
varchar(1024) string |
Meldung mit der verbleibenden Wartezeit in Millisekunden. |
Result-Set 2 · Wenn CAref NULL ist
Fehlerzeile bei fehlendem Schlüssel.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(5) string |
Immer |
ErrorMessage
|
varchar(20) string |
|
Result-Set 3 · Wenn CAref angegeben ist und der Envelope 200 liefert
Ergebnis des Löschversuchs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Success
Kann leer sein |
int |
|
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Leerer String bei Erfolg oder wenn das Löschen nicht erlaubt ist; bei einem Fehler der SQL-Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<Success>1</Success>
<ErrorMessage/>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 502 | ({value}) Frequency quote exceeded. Next call to this function can be made in ca. {value} milliseconds | Der Aufruf erfolgte vor Ablauf des in `API_CONTROL` konfigurierten Mindestabstands. Die angegebene Zeit abwarten und erneut aufrufen. |
| ERROR | CAref cannot be NULL | `CAref` wurde nicht übergeben oder ist NULL. Den Schlüssel des Kundenkonto-Ereignisses übergeben. |
| RAISERROR | Pixi_CA_DeleteEvent: deleting of DTAUS record not allowed | Ein verknüpfter DTAUS-Datensatz konnte nicht gelöscht werden, weil sein Status das Löschen nicht erlaubt. Die Transaktion wird zurückgerollt, anschließend folgt eine Zeile mit `Success = 0`. |
| RAISERROR | {value} | Jeder andere SQL-Fehler beim Löschen (z. B. in `Pixi_DeleteInvoice`) wird mit dem Originaltext erneut ausgelöst; die Transaktion wird zurückgerollt und `Success = 0` mit demselben Text geliefert. |
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:pixiCADeleteEvent>
<CAref>123456</CAref>
<!-- <ResultCode>?</ResultCode> -->
<!-- <ResultText>?</ResultText> -->
</ns1:pixiCADeleteEvent>
</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:pixiCADeleteEvent>
<CAref>123456</CAref>
<!-- <ResultCode>?</ResultCode> -->
<!-- <ResultText>?</ResultText> -->
</ns1:pixiCADeleteEvent>
</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 = [
'CAref' => '123456',
// 'ResultCode' => '?',
// 'ResultText' => '?',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCADeleteEvent', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCADeleteEvent