Merge branch 'main' of https://git.tyrion.myds.me/Christian/d.velop
This commit is contained in:
291
DMG Dental/Geschäftspartner-ID ändern/DMG_gesch_id_wechsel.jpl
Normal file
291
DMG Dental/Geschäftspartner-ID ändern/DMG_gesch_id_wechsel.jpl
Normal file
@@ -0,0 +1,291 @@
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////
|
||||
//
|
||||
// Geschäftspartner-IDs ändern
|
||||
//
|
||||
// geschrieben von calb / 2019.01.23
|
||||
//
|
||||
// (c) d.velop AG 2019
|
||||
//
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////
|
||||
//
|
||||
// Dieses Skript passt Geschäftspartner-ID von verschiedenen Dokumentarten an
|
||||
//
|
||||
vars vers = "0.1 calb d.AG/PS 2019.01.23 Initialversion"
|
||||
//
|
||||
//////////////////////////////////
|
||||
|
||||
// Konfiguration
|
||||
|
||||
|
||||
// debug = 1 => es werden keine Änderungen am Dokumentbestand durchgeführt
|
||||
// debug = 0 => es werden Änderungen am Dokumentbestand durchgeführt
|
||||
vars debug = 1
|
||||
|
||||
|
||||
// db_tabelle => Tabelle, in der die zu ändernden Werte gefunden werden.
|
||||
vars db_tabelle = "d3_mapping"
|
||||
|
||||
// spalte_alter_wert => DB-Spalte, in der der alte Wert gefunden werden kann
|
||||
vars spalte_alter_wert = "Kunde_alt"
|
||||
|
||||
// spalte_neuer_wert => DB-Spalte, in der der neue Wert gefunden werden kann
|
||||
vars spalte_neuer_wert = "Kunde_neu"
|
||||
|
||||
// spalte_status => DB-Spalte, in der der Status des Eintrags festgehalten wird
|
||||
vars spalte_status = "status"
|
||||
|
||||
// liste_dokuarten => Liste von Dokumentarten, in denen das Update durchgeführt werden soll
|
||||
vars liste_dokuarten = "AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK"
|
||||
//vars liste_dokuarten = "EVERT,DFOT"
|
||||
|
||||
// zu_aenderndes_ddf => DDF, in welchem die Information geändert werden soll
|
||||
vars zu_aenderndes_ddf = "6"
|
||||
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
call dmglog( 4, "*********************************************" )
|
||||
call dmglog( 4, "* DMG_gesch_id_wechsel.jpl *" )
|
||||
call dmglog( 4, "* calb/d.velop AG *" )
|
||||
call dmglog( 4, "*********************************************" )
|
||||
call dmglog( 4, "* " ## vers )
|
||||
call dmglog( 4, "* db_tabelle : " ## db_tabelle )
|
||||
call dmglog( 4, "* spalte_alter_wert : " ## spalte_alter_wert )
|
||||
call dmglog( 4, "* spalte_neuer_wert : " ## spalte_neuer_wert )
|
||||
call dmglog( 4, "* spalte_status : " ## spalte_status )
|
||||
call dmglog( 4, "* liste_dokuarten : " ## liste_dokuarten )
|
||||
call dmglog( 4, "* zu_aenderndes_ddf : " ## zu_aenderndes_ddf )
|
||||
call dmglog( 4, "* DEBUG : " ## debug )
|
||||
|
||||
|
||||
// Los geht's ......
|
||||
|
||||
call dmglog( 4, "*********************************************" )
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
vars spalte_aw[5000], spalte_nw[5000]
|
||||
|
||||
vars doku_id[500000]
|
||||
|
||||
vars anzahl, anzahl2, i, j, k, dokuarten, ergebnis, kaputt
|
||||
|
||||
|
||||
kaputt = 0
|
||||
k = 0
|
||||
|
||||
// Zuerst ein Select auf die Tabelle, um festzustellen, was alles getan werden muss.
|
||||
|
||||
dbms alias spalte_aw, spalte_nw
|
||||
dbms sql select :spalte_alter_wert, :spalte_neuer_wert \
|
||||
from :db_tabelle \
|
||||
where :spalte_status = '' or :spalte_status is null
|
||||
anzahl = @dmrowcount
|
||||
dbms alias
|
||||
|
||||
call dmglog( 4, "Es wurden " ## anzahl ## " Treffer gefunden." )
|
||||
|
||||
// Aufbereiten der Dokumentartenliste:
|
||||
if ( @length( liste_dokuarten ) > 0 )
|
||||
{
|
||||
ergebnis = api_function( "string_replace", liste_dokuarten, " ", "" )
|
||||
|
||||
liste_dokuarten = api_converted_string
|
||||
|
||||
ergebnis = api_function( "string_split", liste_dokuarten, "," )
|
||||
|
||||
if ( ergebnis > 0 )
|
||||
{
|
||||
for j = 1 while j <= ergebnis step 1
|
||||
{
|
||||
dokuarten = dokuarten ## "'" ## api_splitted_string[ j ] ## "', "
|
||||
}
|
||||
|
||||
dokuarten = dokuarten( 1, @length(dokuarten) -1 )
|
||||
}
|
||||
|
||||
call dmglog( 5, "Dokuarten " ## dokuarten )
|
||||
}
|
||||
|
||||
call dmglog( 4, "*******************" )
|
||||
|
||||
|
||||
for i = 1 while i <= anzahl step 1
|
||||
{
|
||||
call dmglog( 4, i ## ": Alter Wert: " ## spalte_aw[ i ] ## " | Neuer Wert: " ## spalte_nw[ i ] )
|
||||
|
||||
call dmglog( 4, i ## ": Suche zu ändernde Dokumente ...")
|
||||
|
||||
dbms alias doku_id
|
||||
dbms sql select doku_id from firmen_spezifisch \
|
||||
where kue_dokuart in ( :dokuarten ) \
|
||||
and dok_dat_feld_:zu_aenderndes_ddf = :+spalte_aw[ i ]
|
||||
anzahl2 = @dmrowcount
|
||||
dbms alias
|
||||
|
||||
call dmglog( 4, i ## ": Es wurden " ## anzahl2 ## " zu ändernde Dokumente gefunden.")
|
||||
|
||||
call dmglog( 4, i ## ": ******************************************" )
|
||||
|
||||
for j = 1 while j <= anzahl2 step 1
|
||||
{
|
||||
k = 1
|
||||
call dmglog( 4, i ## ": bearbeite DokuID " ## doku_id[ j ] ## " ...")
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = api_function( "attribute_update_single", zu_aenderndes_ddf, spalte_nw[ i ], "", doku_id[ j ], "Master" )
|
||||
}
|
||||
else
|
||||
{
|
||||
call dmglog( 3, i ## " / " ## j ## ": hier findet jetzt keine Dokumentänderung statt. \:-(")
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
call dmglog( 4, i ## " / " ## j ## ": DokuID " ## doku_id[ j ] ## " erfolgreich aktualisiert." )
|
||||
}
|
||||
else
|
||||
{
|
||||
call dmglog( 2, i ## " / " ## j ## ": Fehler " ## ergebnis ## " beim Setzen des Attributes (attribute_update_single) bei DokuID " ## doku_id[ j ] )
|
||||
kaputt = 1
|
||||
}
|
||||
call dmglog( 4, i ## ": ==========================================" )
|
||||
|
||||
}
|
||||
|
||||
//call dmglog( 5, "kaputt: " ## kaputt )
|
||||
if ( debug == 0 )
|
||||
{
|
||||
if ( k == 1 )
|
||||
{
|
||||
if ( kaputt == 0 )
|
||||
{
|
||||
dbms sql update :db_tabelle set :spalte_status = 'fertig' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
||||
}
|
||||
else
|
||||
{
|
||||
dbms sql update :db_tabelle set :spalte_status = 'Problem' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dbms sql update :db_tabelle set :spalte_status = 'keine Treffer' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
||||
}
|
||||
}
|
||||
|
||||
kaputt = 0
|
||||
k = 0
|
||||
|
||||
call dmglog( 4, "*********************************************" )
|
||||
}
|
||||
|
||||
|
||||
|
||||
call dmglog( 4, "Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ..." )
|
||||
call dmglog( 4, "*********************************************" )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
proc dmglog( 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 )
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
87
DMG Dental/Geschäftspartner-ID ändern/readme.txt
Normal file
87
DMG Dental/Geschäftspartner-ID ändern/readme.txt
Normal file
@@ -0,0 +1,87 @@
|
||||
Rahmen
|
||||
======
|
||||
|
||||
Es sollen Geschäftspartner-IDs geändert werden. Bereitgestellt wird eine Tabelle, in der der alte und der neue Wert angegeben sind. Pro Kombination aus altem und neuem Wert kann es mehrere Dokumente geben, die zu ändern sind.
|
||||
|
||||
Die zugrundeliegende Tabelle sieht folgendermaßen aus:
|
||||
|
||||
CREATE TABLE [dbo].[d3_mapping](
|
||||
[Kunde_alt] [varchar](50) NULL,
|
||||
[Kunde_neu] [varchar](50) NULL,
|
||||
[status] [varchar](20) NULL
|
||||
)
|
||||
|
||||
|
||||
Log-Augabe
|
||||
==========
|
||||
|
||||
Die Log-Ausgaben wurden gekürzt. Es sollte hier aber klar sein was dabei rauskommt.
|
||||
|
||||
2019.01.24 12:13:58 INFO. *********************************************
|
||||
2019.01.24 12:13:58 INFO. * DMG_gesch_id_wechsel.jpl *
|
||||
2019.01.24 12:13:58 INFO. * calb/d.velop AG *
|
||||
2019.01.24 12:13:58 INFO. *********************************************
|
||||
2019.01.24 12:13:58 INFO. * 0.1 calb d.AG/PS 2019.01.23 Initialversion
|
||||
2019.01.24 12:13:58 INFO. * db_tabelle : d3_mapping
|
||||
2019.01.24 12:13:58 INFO. * spalte_alter_wert : Kunde_alt
|
||||
2019.01.24 12:13:58 INFO. * spalte_neuer_wert : Kunde_neu
|
||||
2019.01.24 12:13:58 INFO. * spalte_status : status
|
||||
2019.01.24 12:13:58 INFO. * liste_dokuarten : AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK
|
||||
2019.01.24 12:13:58 INFO. * zu_aenderndes_ddf : 6
|
||||
2019.01.24 12:13:58 INFO. * DEBUG : 1
|
||||
2019.01.24 12:13:58 INFO. *********************************************
|
||||
2019.01.24 12:13:59 INFO. Es wurden 27 Treffer gefunden.
|
||||
2019.01.24 12:13:59 DEBUG Dokuarten 'AGSP','DMY','DKOR','DRECH','DVER','DKRE','DAGES','DGS','AAUF','DAB','DVPM','DFUEK','DESDO','DARTE','DLIEF','DVORK','DREKL','DGEAK'
|
||||
2019.01.24 12:13:59 INFO. *******************
|
||||
2019.01.24 12:13:59 INFO. 1: Alter Wert: 101800 | Neuer Wert: 37474
|
||||
2019.01.24 12:13:59 INFO. 1: Suche zu ändernde Dokumente ...
|
||||
2019.01.24 12:13:59 INFO. 1: Es wurden 2723 zu ändernde Dokumente gefunden.
|
||||
2019.01.24 12:13:59 INFO. 1: ******************************************
|
||||
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939873 ...
|
||||
2019.01.24 12:13:59 WARN. 1 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:13:59 INFO. 1 / 1: DokuID P003939873 erfolgreich aktualisiert.
|
||||
2019.01.24 12:13:59 INFO. 1: ==========================================
|
||||
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939874 ...
|
||||
2019.01.24 12:13:59 WARN. 1 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:13:59 INFO. 1 / 2: DokuID P003939874 erfolgreich aktualisiert.
|
||||
2019.01.24 12:13:59 INFO. 1: ==========================================
|
||||
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939875 ...
|
||||
2019.01.24 12:13:59 WARN. 1 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:13:59 INFO. 1 / 3: DokuID P003939875 erfolgreich aktualisiert.
|
||||
2019.01.24 12:13:59 INFO. 1: ==========================================
|
||||
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939876 ...
|
||||
2019.01.24 12:13:59 WARN. 1 / 4: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:13:59 INFO. 1 / 4: DokuID P003939876 erfolgreich aktualisiert.
|
||||
2019.01.24 12:13:59 INFO. 1: ==========================================
|
||||
[...]
|
||||
2019.01.24 12:15:11 INFO. *********************************************
|
||||
2019.01.24 12:15:11 INFO. 2: Alter Wert: 101801 | Neuer Wert: 37475
|
||||
2019.01.24 12:15:11 INFO. 2: Suche zu ändernde Dokumente ...
|
||||
2019.01.24 12:15:11 INFO. 2: Es wurden 0 zu ändernde Dokumente gefunden.
|
||||
2019.01.24 12:15:11 INFO. 2: ******************************************
|
||||
2019.01.24 12:15:11 INFO. *********************************************
|
||||
2019.01.24 12:15:11 INFO. 3: Alter Wert: 101802 | Neuer Wert: 37476
|
||||
2019.01.24 12:15:11 INFO. 3: Suche zu ändernde Dokumente ...
|
||||
2019.01.24 12:15:11 INFO. 3: Es wurden 0 zu ändernde Dokumente gefunden.
|
||||
2019.01.24 12:15:11 INFO. 3: ******************************************
|
||||
2019.01.24 12:15:11 INFO. *********************************************
|
||||
2019.01.24 12:15:11 INFO. 4: Alter Wert: 101803 | Neuer Wert: 37477
|
||||
2019.01.24 12:15:11 INFO. 4: Suche zu ändernde Dokumente ...
|
||||
2019.01.24 12:15:11 INFO. 4: Es wurden 3 zu ändernde Dokumente gefunden.
|
||||
2019.01.24 12:15:11 INFO. 4: ******************************************
|
||||
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800366 ...
|
||||
2019.01.24 12:15:11 WARN. 4 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:15:11 INFO. 4 / 1: DokuID P003800366 erfolgreich aktualisiert.
|
||||
2019.01.24 12:15:11 INFO. 4: ==========================================
|
||||
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800369 ...
|
||||
2019.01.24 12:15:11 WARN. 4 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:15:11 INFO. 4 / 2: DokuID P003800369 erfolgreich aktualisiert.
|
||||
2019.01.24 12:15:11 INFO. 4: ==========================================
|
||||
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800370 ...
|
||||
2019.01.24 12:15:11 WARN. 4 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
|
||||
2019.01.24 12:15:11 INFO. 4 / 3: DokuID P003800370 erfolgreich aktualisiert.
|
||||
2019.01.24 12:15:11 INFO. 4: ==========================================
|
||||
[...]
|
||||
2019.01.24 12:15:43 INFO. *********************************************
|
||||
2019.01.24 12:15:43 INFO. Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ...
|
||||
2019.01.24 12:15:43 INFO. *********************************************
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
84
DMG Dental/Materialnummer Attributergänzung/hook.jpl
Normal file
84
DMG Dental/Materialnummer Attributergänzung/hook.jpl
Normal file
@@ -0,0 +1,84 @@
|
||||
vars dokuarten = "DMATE"
|
||||
|
||||
vars ergebnis = api_function( "string_get_position", dokuarten, dokuart_kurz, 1, 1 )
|
||||
|
||||
if ( ergebnis > 0 )
|
||||
{
|
||||
vars i, ar_temp = " ( ", ma_temp = " ( ", ar_hilf = 0, ma_hilf = 0, sql_where = "", sql_or = "", anzahl
|
||||
vars artikel[ CUR_60ER_FIELD_NR ], material[ CUR_60ER_FIELD_NR ]
|
||||
|
||||
for i = 1 while i <= CUR_60ER_FIELD_NR step 1
|
||||
{
|
||||
if ( dok_dat_feld_61[ i ] != "" )
|
||||
{
|
||||
ar_temp = ar_temp ## " MAT_NUMMER = '" ## dok_dat_feld_61[ i ] ## "' OR "
|
||||
ar_hilf = 1
|
||||
}
|
||||
else
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
for i = 1 while i <= CUR_60ER_FIELD_NR step 1
|
||||
{
|
||||
if ( dok_dat_feld_60[ i ] != "" )
|
||||
{
|
||||
ma_temp = ma_temp ## " MA_NUMMER = '" ## dok_dat_feld_60[ i ] ## "' OR "
|
||||
ma_hilf = 1
|
||||
}
|
||||
else
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if ( ( ar_hilf != 0 ) || ( ma_hilf != 0 ) )
|
||||
{
|
||||
sql_where = " where "
|
||||
}
|
||||
|
||||
if ( ar_hilf == 1 )
|
||||
{
|
||||
ar_temp = ar_temp( 1, @length( ar_temp ) - 3 ) ## " ) "
|
||||
sql_where = sql_where ## ar_temp
|
||||
sql_or = " or "
|
||||
}
|
||||
|
||||
if ( ma_hilf == 1 )
|
||||
{
|
||||
ma_temp = ma_temp( 1, @length( ma_temp ) - 3 ) ## " ) "
|
||||
sql_where = sql_where ## sql_or ## ma_temp
|
||||
}
|
||||
|
||||
if ( @length( sql_where ) > 0 )
|
||||
{
|
||||
//call xlog( 1, "where " ## sql_where )
|
||||
dbms alias material, artikel
|
||||
dbms sql select MA_NUMMER, MAT_NUMMER from NEXUS_ERP_MATERIAL :sql_where
|
||||
anzahl = @dmrowcount
|
||||
dbms alias
|
||||
|
||||
|
||||
if ( anzahl > 0 )
|
||||
{
|
||||
for i = 1 while i <= anzahl step 1
|
||||
{
|
||||
if ( material[ i ] != "" )
|
||||
{
|
||||
//call xlog( 1, ":i material " ## material[ i ] ## " artikel " ## artikel[ i ] )
|
||||
dok_dat_feld_60[ i ] = material[ i ]
|
||||
dok_dat_feld_61[ i ] = artikel[ i ]
|
||||
}
|
||||
else
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
265
Funke/FUN_loesch_akten.jpl
Normal file
265
Funke/FUN_loesch_akten.jpl
Normal 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 )
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user