initaler Upload

This commit is contained in:
2024-06-19 16:20:26 +02:00
parent f24aec09ce
commit 13067f6424

265
Funke/FUN_loesch_akten.jpl Normal file
View File

@@ -0,0 +1,265 @@
//////////////////////////////////
//
// leere Akten löschen
//
// geschrieben von calb / 2020.07.01
//
// (c) d.velop AG 2020
//
//////////////////////////////////
//////////////////////////////////
//
// Dieses Skript löscht leere Akten. Dazu ist eine Aktenart konfigurierbar. Das Skript iteriert dann über die Akten dieser Aktenart
// und löscht die Akten, die kene Kind-Elemente haben, d.h. leer sind.
//
vars vers = "0.1 calb d.AG/PS 2020.07.01 Initialversion"
//
// create table d3_loesch_akten
// (
// doku_id varchar(50),
// status varchar(20)
// );
//
// create unique index idx_doku_idx on d3_komplett (doku_id);
//////////////////////////////////
// Konfiguration
// debug = 1 => es werden keine Änderungen an der DB durchgeführt
// debug = 0 => es werden Änderungen an der DB durchgeführt
vars debug = 0
// Aktenart der zu löschenden Akten
vars aktenart_kuerzel = "ADEB"
// Anzahl der Dokumente, die in einem Skriptdurchlauf bearbeitet werden
vars anzahl_doks_pro_durchlauf = 4
//////////////////////////////////
vars ergebnis, dokart_lang
call bkklog( 4, "*********************************************" )
call bkklog( 4, "* FUN_loesch_akten.jpl *" )
call bkklog( 4, "* calb/d.velop AG 25.06.2020 *" )
call bkklog( 4, "*********************************************" )
call bkklog( 4, "* " ## vers )
call bkklog( 4, "* DEBUG : " ## debug )
ergebnis = api_function( "document_type_get_long", aktenart_kuerzel )
if ( ergebnis == 0 )
{
dokart_lang = api_single_info
}
else
{
call bkklog( 2, "* Aktenart konnte nicht korrekt bestimmt werden: " ## ergebnis )
call bkklog( 2, "* FUN_loesch_akten.jpl beendet sich ..." )
return ergebnis
}
call bkklog( 4, "* Aktenart : " ## dokart_lang ## " (" ## aktenart_kuerzel ## ")")
call bkklog( 4, "* anzahl_doks_pro_durchlauf : " ## anzahl_doks_pro_durchlauf )
// Los geht's ......
call bkklog( 4, "*********************************************" )
///////////////////////////////////////////////////////////////////////
vars anzahl, ergebnis, i
vars d3db = "d3" ## d3fc_server_kuerzel ## ".INFORMATION_SCHEMA.TABLES"
anzahl = pruefe_ob_tabelle_existiert( "d3_loesch_akten" )
if ( anzahl == 0 )
{
// Tabelle existiert nicht, wird angelegt
call bkklog( 1, "DB-Tabelle d3_loesch_akten nicht gefunden. Lege Tabelle an ...")
dbms sql create table d3_loesch_akten ( doku_id varchar(50), status varchar(20) )
dbms sql create unique index idx_doku_idx on d3_loesch_akten (doku_id)
anzahl = pruefe_ob_tabelle_existiert( "d3_loesch_akten" )
if ( anzahl == 0 )
{
call bkklog( 2, "Es gab ein Problem beim Anlegen der Tabelle. Bitte legen Sie die Tabelle manuell an und starten das Skript erneut.")
}
else
{
call bkklog( 1, "DB-Tabelle d3_loesch_akten wurde angelegt.")
}
}
else
{
call bkklog( 4, "DB-Tabelle d3_loesch_akten gefunden.")
}
call bkklog( 4, "*********************************************" )
vars doku_id[ anzahl_doks_pro_durchlauf ]
vars i
dbms alias doku_id
dbms sql select doku_id from firmen_spezifisch where kue_dokuart = :+aktenart_kuerzel and doku_id not in (select doku_id from d3_loesch_akten )
anzahl = @dmrowcount
dbms alias
for i = 1 while i <= anzahl step 1
{
// Prüfen, ob die Akte Kind-Elemente hat
// falls ja: nächste
// falls nein: Löschen
ergebnis = api_function( "link_get_children", doku_id[ i ], "Master" )
if ( ergebnis == 0 )
{
// Das Ermitteln der Kind-Elemente hat funktioniert.
// Jetzt wird geprüft, ob die Anzahl 0 (null) oder > 0 ist.
if ( api_single_info == 0 )
{
// Keine Kinder gefunden. Akte wird gelöscht:
if ( debug == 0 )
{
ergebnis = api_function( "document_delete", "leere Akten nach Kd.-Nr.-Änderung", 1, 1, doku_id[ i ], "Master" )
if ( ergebnis == 0 )
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " wurde gelöscht." )
}
else
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " konnte nicht gelöscht werden: RC " ## ergebnis )
}
}
else
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " wurde nicht gelöscht wegen eingeschaltetem DEBUG-Modus." )
}
}
else
{
// Die Akte hat Kind-Elemente, darf nicht gelöscht werden. Die Akte wird in die Tabelle eingetragen, damit sie beim nächsten
// Durchlauf nicht mehr berücksichtigt wird.
dbms sql insert into d3_loesch_akten ( doku_id, status ) values ( :+doku_id[ i ], '0' )
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " hat Kind-Elemente und wurde zurückgelegt.")
}
}
else
{
// Es gab ein Problem beim Ermitteln der Kind-Elemente. Die Akte wird mit Fehlerstatus zurückgelegt.
dbms sql insert into d3_loesch_akten ( doku_id, status ) values ( :+doku_id[ i ], :+ergebnis )
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## ": Fehler beim Ermitteln der Kind-Elemente; Akte wurde mit RC " ## ergebnis ## " zurückgelegt.")
}
}
string proc pruefe_ob_tabelle_existiert( tab_name )
{
vars anzahl
dbms alias anzahl
dbms sql select count(*) anzahl from :d3db where table_name = :+tab_name;
dbms alias
return anzahl
}
proc bkklog( loglevel, message )
{
vars l_logdirect = "BEIDE"
vars l_logdatei = "D\:\\d3\\apps\\log.txt"
vars l_loglevel = 5
vars zeitstempel, loglevel_lang, d3loglevel, logmessage
if ( loglevel == 5 )
{
loglevel_lang = "DEBUG"
// Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log.
d3loglevel = 9
}
if ( loglevel == 4 )
{
loglevel_lang = "INFO."
d3loglevel = 6
}
if ( loglevel == 3 )
{
loglevel_lang = "WARN."
d3loglevel = 6
}
if ( loglevel == 2 )
{
loglevel_lang = "ERROR"
d3loglevel = 0
}
if ( loglevel == 1 )
{
loglevel_lang = "FATAL"
d3loglevel = 0
}
if ( loglevel <= l_loglevel )
{
if ( ( l_logdirect == "DATEI" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe in Datei
zeitstempel = sm_sdtime( "n%4y.%0m.%0d %0h\:%0M\:%0s" )
logmessage = zeitstempel ## " " ## loglevel_lang ## " " ## message
call api_function( "file_add_line", l_logdatei, logmessage, "APPEND" )
}
if ( ( l_logdirect == "D3LOG" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe im d.3 Log
logmessage = loglevel_lang ## " " ## message
call api_log( d3loglevel, logmessage )
}
}
}