import com.dvelop.d3.server.Document import com.dvelop.d3.server.core.D3Interface import com.dvelop.d3.server.exceptions.SQLException import com.dvelop.d3.server.exceptions.D3Exception import groovy.transform.Field D3Interface d3 = getProperty("d3"); def prg = "migration_akte_dauerakte.groovy"; def version = "0.1"; def kunde = "Dr. Kleeberg & Partner GmbH"; ///////////////////////////////////////////////////////////////////////// // debug = 0 => es finden Änderungen am Datenbestand statt // debug = 1 => es finden keine Änderungen am Datenbestand statt @Field debug = 0; // In welcher Tabelle soll nach den zu erstellenden Akten gesucht werden? @Field zieltabelle = "mig_dauerakte"; // Konfiguration der Aktenartkürzel @Field dokuart_sammelakte = "AMAND"; //Es gibt keine Sammelakte fuer Dauerakten, daher werden die Infos aus der Mandantenakte ermittelt @Field dokuart_hauptakte = "ADAUR"; @Field dokuart_oberregisterakte = "AOREG"; @Field dokuart_registerakte = "AREGS"; @Field dokuart_unterregisterakte = "AUREG"; // der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird. @Field standard_hauptaktenname = "Dauerakte"; // DDF 1 / ADM_Aktentyp aus der Aktenart ADM_Verwaltung Mandantenakte (AVMNT) - mit diesem Schlüssel werden die benötigten (Ober-)Register aus den Stammdaten in der Aktenart AVMNT ermittelt. @Field aktenschluessel = "Dauerakte"; ///////////////////////////////////////////////////////////////////////// def debugtext; switch (debug) { case 0: debugtext = "ausgeschaltet"; break; default: debugtext = "eingeschaltet (keine Aenderungen am Datenbestand)"; break; } xlog( d3, 4, "************************************************" ); xlog( d3, 4, "* Programm : " + prg ); xlog( d3, 4, "* Version : " + version ); xlog( d3, 4, "* Kunde : " + kunde ); xlog( d3, 4, "* geschrieben von : calb / d.velop AG" ); xlog( d3, 4, "* (c) d.velop AG" ); xlog( d3, 4, "************************************************" ); xlog( d3, 4, "Parameter: " ); xlog( d3, 4, "* DEBUG : " + debugtext ); xlog( d3, 4, "* Aktenart Sammelakte : " + dokuart_sammelakte ); xlog( d3, 4, "* Aktenart Hauptakte : " + dokuart_hauptakte ); xlog( d3, 4, "* Aktenart Oberregisterakte : " + dokuart_oberregisterakte ); xlog( d3, 4, "* Aktenart Registerakte : " + dokuart_registerakte ); xlog( d3, 4, "* Zieltabelle : " + zieltabelle ); xlog( d3, 4, "* Standard-Hauptaktenname : " + standard_hauptaktenname ); xlog( d3, 4, "* Aktenschluessel : " + aktenschluessel ); xlog( d3, 4, "************************************************" ); def sqlQuery = "select top (100) id,ddf1,ddf48,ddf10,ddf21,ddf22,ddf25,ddf37,ddf42,ddf60,ddf69 from " + zieltabelle + " where fehler is null and doku_id is null"; treffer = d3.sql.executeAndGet( (String) sqlQuery ); xlog( d3, 4, " Es wurden " + treffer.size() + " Treffer gefunden." ); xlog( d3, 4, "************************************************" ); if ( treffer.size() > 0 ) { for ( i = 0; i < treffer.size(); i++ ) { // Prüfung, ob die Mandantnummer in der Aktennummer zu der Mandantnummer aus der Tabelle passt - andernfalls Fehler. def mandantnr_aus_aktennr = treffer[ i ].ddf10.substring( 0, 5 ); //JFEL toString eingefügt, da der Vergleich sonst scheitert. //if ( mandantnr_aus_aktennr == treffer[ i ].ddf1 ) if ( mandantnr_aus_aktennr == treffer[ i ].ddf1.toString() ) { // Es wird eine neue Hauptakte erstellt def newDocfield_1, newDocfield_2, newDocfield_10, newDocfield_13, newDocfield_21, newDocfield_22, newDocfield_25, newDocfield_37, newDocfield_42, newDocfield_48, newDocfield_60 = [ ], newDocfield_69 = [ ]; xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" ); //JFEL toString eingefügt, da sonst später beim wegschreiben ein Java-Class-Error auftritt. //newDocfield_1 = treffer[ i ].ddf1; newDocfield_1 = treffer[ i ].ddf1.toString(); xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktennummer DDF10 : [" + treffer[ i ].ddf10 + "]" ); newDocfield_10 = treffer[ i ].ddf10; if ( treffer[ i ].ddf21 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktenname DDF21 : [" + treffer[ i ].ddf21 + "]" ); newDocfield_21 = treffer[ i ].ddf21; } else { xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenname wurde nicht gefunden. Setze Standardbezeichnung '" + standard_hauptaktenname + "'." ); xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktenname DDF21 : <" + standard_hauptaktenname + ">" ); newDocfield_21 = standard_hauptaktenname; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze physischer Aufbewahrungsort DDF22 : [" + treffer[ i ].ddf22 + "]" ); newDocfield_22 = treffer[ i ].ddf22; if ( treffer[ i ].ddf25 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsfuehrer DDF25 : [" + treffer[ i ].ddf25 + "]" ); newDocfield_25 = treffer[ i ].ddf25; } else { def STATEMENT = "select dok_dat_feld_25 from firmen_spezifisch where kue_dokuart = 'AMAND' and dok_dat_feld_1 = '" + newDocfield_1 + "'"; def treffer_STATEMENT = d3.sql.executeAndGet( (String) STATEMENT ); if ( treffer_STATEMENT.size() > 0 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsfuehrer DDF25 aus M.-Akte : [" + treffer_STATEMENT[ 0 ].dok_dat_feld_25 + "]" ); newDocfield_25 = treffer_STATEMENT[ 0 ].dok_dat_feld_25; } else { xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Es konnte kein Wert für Geschaeftsfuehrer / DDF25 gefunden werden." ); } } if ( treffer[ i ].ddf37 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Auftragsverantwortlicher DDF37 : [" + treffer[ i ].ddf37 + "]" ); newDocfield_37 = treffer[ i ].ddf37; } else { def STATEMENT = "select dok_dat_feld_37 from firmen_spezifisch where kue_dokuart = 'AMAND' and dok_dat_feld_1 = '" + newDocfield_1 + "'"; def treffer_STATEMENT = d3.sql.executeAndGet( (String) STATEMENT ); if ( treffer_STATEMENT.size() > 0 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Auftragsverantwortlicher DDF37 aus M.-Akte: [" + treffer_STATEMENT[ 0 ].dok_dat_feld_37 + "]" ); newDocfield_37 = treffer_STATEMENT[ 0 ].dok_dat_feld_37; } else { xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Es konnte kein Wert für Auftragsverantwortlicher / DDF37 gefunden werden." ); } } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Briefkopf DDF42 : [" + treffer[ i ].ddf42 + "]" ); newDocfield_42 = treffer[ i ].ddf42; xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Unique-ID Migration DDF48 : [" + treffer[ i ].ddf48 + "]" ); newDocfield_48 = treffer[ i ].ddf48; // Postempfänger if ( treffer[ i ].ddf60 ) { def splitted_str_array = treffer[ i ].ddf60.split( ';' ); for ( int j = 0; j < splitted_str_array.length; j++ ) { def filler = " "; if ( j >= 10 ) { filler = ""; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Setze Postempfaenger DDF60 / " + filler + j + " : [" + splitted_str_array[ j ] + "]" ); newDocfield_60[ j ] = splitted_str_array[ j ]; } } // Berechtigter: if ( treffer[ i ].ddf69 ) { def splitted_str_array = treffer[ i ].ddf69.split( ';' ); for ( int j = 0; j < splitted_str_array.length; j++ ) { def filler = " "; if ( j >= 10 ) { filler = ""; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Setze Berechtigter DDF69 / " + filler + j + " : [" + splitted_str_array[ j ] + "]" ); newDocfield_69[ j ] = splitted_str_array[ j ]; } } // Prüfung, ob zu dieser Hauptakte eine passende Sammelakte existiert // Falls ja: Übernahme der Mandantenstammdaten der entsprechenden Akte // Falls nein: Fehler in DB eintragen und Abbruch der Verarbeitung dieses Treffers sqlQuery = "select doku_id, dok_dat_feld_1, dok_dat_feld_2, dok_dat_feld_13 from firmen_spezifisch where kue_dokuart = '" + dokuart_sammelakte + "' and dok_dat_feld_1 = '" + treffer[ i ].ddf1 + "'"; ergebnis = d3.sql.executeAndGet( (String) sqlQuery ); if ( ergebnis.size() > 0 ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantenname DDF2 : [" + ergebnis[ 0 ].dok_dat_feld_2 + "]" ); newDocfield_2 = ergebnis[ 0 ].dok_dat_feld_2; xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantengruppennummer DDF13 : [" + ergebnis[ 0 ].dok_dat_feld_13 + "]" ); newDocfield_13 = ergebnis[ 0 ].dok_dat_feld_13; // Akte mit Stammdaten und Infos aus der Tabelle "zieltabelle" erstellen // Registerstruktur unterhalb ebenfalls erstellen Document newDoc = d3.archive.newDocument(); newDoc.type = dokuart_hauptakte; newDoc.status = Document.DocStatus.DOC_STAT_PROCESSING; newDoc.editor = "dvelop"; newDoc.field[ 1 ] = newDocfield_1; newDoc.field[ 2 ] = newDocfield_2; newDoc.field[ 10 ] = newDocfield_10; newDoc.field[ 13 ] = newDocfield_13; newDoc.field[ 21 ] = newDocfield_21; newDoc.field[ 22 ] = newDocfield_22; newDoc.field[ 25 ] = newDocfield_25; newDoc.field[ 37 ] = newDocfield_37; newDoc.field[ 42 ] = newDocfield_42; newDoc.field[ 48 ] = newDocfield_48; for ( int i = 0; i < newDocfield_60.size(); i++ ) { newDoc.field[ 60 ][ i + 1 ] = newDocfield_60[ i ]; } for ( int i = 0; i < newDocfield_69.size(); i++ ) { newDoc.field[ 69 ][ i + 1 ] = newDocfield_69[ i ]; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": =============================" ); //Pruefung ob die anzulegende Akte ggf. schon im System angelegt wurde sqlQuery = "select doku_id from firmen_spezifisch where kue_dokuart = '" + dokuart_hauptakte + "' and dok_dat_feld_1 = '" + newDocfield_1 + "' AND dok_dat_feld_10 = '" + newDocfield_10 + "'"; ergebnis = d3.sql.executeAndGet( (String) sqlQuery ); if ( ergebnis.size() > 0 ) { fehler( d3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: " + ergebnis[ 0 ].doku_id, (int) treffer[ i ].id ); continue; } def aktenanlage_erfolgreich = true; if ( debug == 0 ) { try { newDoc = d3.archive.importDocument( newDoc ); } catch ( D3Exception e ) { fehler( d3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Akte [" + newDoc.field[ 10 ] + "] konnte nicht erzeugt werden: " + e.message, (int) treffer[ i ].id ); aktenanlage_erfolgreich = false; } if ( aktenanlage_erfolgreich ) { // sichern der erzeugten Doku-ID if ( debug == 0 ) { sqlQuery = "update " + zieltabelle + " set doku_id = '" + newDoc.id + "' where id = " + treffer[ i ].id; d3.sql.execute( sqlQuery ); xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] erfolgreich, doku_id: [" + newDoc.id + "]" ); } } } else { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Keine Aktenanlage fuer [" + newDoc.field[ 10 ] + "] (Debug-Modus eingeschaltet)." ); } if ( aktenanlage_erfolgreich ) { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": =============================" ); ////////////////////////////////////////// // Ebene unterhalb der Hauptakte anlegen // Dokumentart: Hauptakten-Oberregisterakte, darin alle in den Stammdaten angelegten Oberregister sqlQuery = "select distinct dok_dat_feld_2 from firmen_spezifisch where kue_dokuart = 'AVMNT' and dok_dat_feld_1 = '" + aktenschluessel + "'"; def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); if ( resultRows.size() > 0 ) { resultRows.each { //xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": erstelle Oberregister-Akte: [" + it.dok_dat_feld_2 + "]" ); Document newDocOReg = d3.archive.newDocument(); newDocOReg.type = dokuart_oberregisterakte; newDocOReg.status = Document.DocStatus.DOC_STAT_PROCESSING; newDocOReg.editor = "dvelop"; newDocOReg.field[ 1 ] = newDocfield_1; newDocOReg.field[ 2 ] = newDocfield_2; newDocOReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister newDocOReg.field[ 10 ] = newDocfield_10; newDocOReg.field[ 13 ] = newDocfield_13; newDocOReg.field[ 21 ] = newDocfield_21; newDocOReg.field[ 25 ] = newDocfield_25; newDocOReg.field[ 37 ] = newDocfield_37; newDocOReg.field[ 42 ] = newDocfield_42; for ( int i = 0; i < newDocfield_69.size(); i++ ) { newDocOReg.field[ 69 ][ i + 1 ] = newDocfield_69[ i ]; } if ( debug == 0 ) { try { newDocOReg = d3.archive.importDocument( newDocOReg ); } catch ( D3Exception e ) { xlog( d3, 2, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Akte [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "] konnte nicht erzeugt werden: " + e.message ); aktenanlage_erfolgreich = false; } } else { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Keine Aktenanlage fuer [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "] (Debug-Modus eingeschaltet)." ); } if ( ( aktenanlage_erfolgreich ) && ( debug == 0 ) ) { //xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage erfolgreich, doku_id: [" + newDoc.id + "][" + newDocOReg.id + "]" ); xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage erfolgreich, doku_id: [" + newDoc.id + "][" + newDocOReg.id + "] Register: [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "]" ); } } } } else { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Weitere Akten werden wegen Fehler nicht angelegt." ); } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": =============================" ); if ( aktenanlage_erfolgreich ) { ////////////////////////////////////////// // Ebene unterhalb der Hauptakten-Oberregisterakte anlegen // Dokumentart: Hauptakten-Registerakte, darin alle in den Stammdaten angelegten Register sqlQuery = "select distinct dok_dat_feld_2, dok_dat_feld_3 from firmen_spezifisch where kue_dokuart = 'AVMNT' and dok_dat_feld_1 = '" + aktenschluessel + "' and dok_dat_feld_3 != ''"; def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); if ( resultRows.size() > 0 ) { resultRows.each { //xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": erstelle Register-Akte: [" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "]" ); Document newDocReg = d3.archive.newDocument(); newDocReg.type = dokuart_registerakte; newDocReg.status = Document.DocStatus.DOC_STAT_PROCESSING; newDocReg.editor = "dvelop"; newDocReg.field[ 1 ] = newDocfield_1; newDocReg.field[ 2 ] = newDocfield_2; newDocReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister newDocReg.field[ 4 ] = it.dok_dat_feld_3; // Register newDocReg.field[ 10 ] = newDocfield_10; newDocReg.field[ 13 ] = newDocfield_13; newDocReg.field[ 21 ] = newDocfield_21; newDocReg.field[ 25 ] = newDocfield_25; newDocReg.field[ 37 ] = newDocfield_37; newDocReg.field[ 42 ] = newDocfield_42; for ( int i = 0; i < newDocfield_69.size(); i++ ) { newDocReg.field[ 69 ][ i + 1 ] = newDocfield_69[ i ]; } if ( debug == 0 ) { try { newDocReg = d3.archive.importDocument( newDocReg ); } catch ( D3Exception e ) { xlog( d3, 2, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Akte [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "] konnte nicht erzeugt werden: " + e.message ); aktenanlage_erfolgreich = false; } } else { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Keine Aktenanlage fuer [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "] (Debug-Modus eingeschaltet)." ); } if ( ( aktenanlage_erfolgreich ) && ( debug == 0 ) ) { sqlQuery = "select doku_id from firmen_spezifisch where kue_dokuart = '" + dokuart_oberregisterakte + "' and dok_dat_feld_10 = '" + newDoc.field[ 10 ] + "' and dok_dat_feld_3 = '" + it.dok_dat_feld_2 + "'"; //xlog( d3, 3, sqlQuery ); e = d3.sql.executeAndGet( sqlQuery ); def oregdokuid; if ( e.size() > 0 ) { oregdokuid = e[0].doku_id; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage erfolgreich, doku_id: [" + newDoc.id + "][" + oregdokuid + "][" + newDocReg.id + "] Register: [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "]" ); } } } } if ( aktenanlage_erfolgreich ) { ////////////////////////////////////////// // Ebene unterhalb der Hauptakten-Oberregisterakte anlegen // Dokumentart: Hauptakten-Registerakte, darin alle in den Stammdaten angelegten Unterregister sqlQuery = "select distinct dok_dat_feld_2, dok_dat_feld_3, dok_dat_feld_4 from firmen_spezifisch where kue_dokuart = 'AVMNT' and dok_dat_feld_1 = '" + aktenschluessel + "' and dok_dat_feld_4 != ''"; def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); if ( resultRows.size() > 0 ) { resultRows.each { //xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": erstelle Register-Akte: [" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "][" + it.dok_dat_feld_4 + "]" ); Document newDocUReg = d3.archive.newDocument(); newDocUReg.type = dokuart_unterregisterakte; newDocUReg.status = Document.DocStatus.DOC_STAT_PROCESSING; newDocUReg.editor = "dvelop"; newDocUReg.field[ 1 ] = newDocfield_1; newDocUReg.field[ 2 ] = newDocfield_2; newDocUReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister newDocUReg.field[ 4 ] = it.dok_dat_feld_3; // Register newDocUReg.field[ 10 ] = newDocfield_10; newDocUReg.field[ 13 ] = newDocfield_13; newDocUReg.field[ 21 ] = newDocfield_21; newDocUReg.field[ 23 ] = it.dok_dat_feld_4; // Unterregister newDocUReg.field[ 25 ] = newDocfield_25; newDocUReg.field[ 37 ] = newDocfield_37; newDocUReg.field[ 42 ] = newDocfield_42; for ( int i = 0; i < newDocfield_69.size(); i++ ) { newDocUReg.field[ 69 ][ i + 1 ] = newDocfield_69[ i ]; } if ( debug == 0 ) { try { newDocUReg = d3.archive.importDocument( newDocUReg ); } catch ( D3Exception e ) { xlog( d3, 2, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Akte [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "][" + it.dok_dat_feld_4 + "] konnte nicht erzeugt werden: " + e.message ); aktenanlage_erfolgreich = false; } } else { xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Keine Aktenanlage fuer [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "][" + it.dok_dat_feld_4 + "] (Debug-Modus eingeschaltet)." ); } if ( ( aktenanlage_erfolgreich ) && ( debug == 0 ) ) { sqlQuery = "select doku_id from firmen_spezifisch where kue_dokuart = '" + dokuart_oberregisterakte + "' and dok_dat_feld_10 = '" + newDoc.field[ 10 ] + "' and dok_dat_feld_3 = '" + it.dok_dat_feld_2 + "' and dok_dat_feld_23 = '" + it.dok_dat_feld_4 + "'"; //xlog( d3, 3, sqlQuery ); e = d3.sql.executeAndGet( sqlQuery ); def oregdokuid; if ( e.size() > 0 ) { oregdokuid = e[0].doku_id; } xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage erfolgreich, doku_id: [" + newDoc.id + "][" + oregdokuid + "][" + newDocUReg.id + "] Register: [" + newDoc.field[ 10 ] + "][" + it.dok_dat_feld_2 + "][" + it.dok_dat_feld_3 + "]" ); } } } } } else { fehler( d3, "Es wurde keine passende Mandantenakte gefunden. [" + treffer[ i ].ddf10 + "]", (int) treffer[ i ].id ); } xlog( d3, 4, "************************************************" ); } else { // Fehler fehler( d3, "Mandantennummer in Tabelle und in Aktennummer unterscheiden sich.", (int) treffer[ i ].id ); } } } def fehler( D3Interface d3, String meldung, int id ) { def meldung_db; if ( meldung.length() > 250 ) { meldung_db = meldung.substring( 0, 249 ); } else { meldung_db = meldung; } if ( debug == 0 ) { sql = "update " + zieltabelle + " set fehler = '" + meldung_db + "' where id = " + id; d3.sql.execute( sql ); } xlog( d3, 2, meldung ); } def xlog( D3Interface d3, int loglevel, String logtext ) { def logdatei = "d:\\d3\\apps\\" + zieltabelle + ".txt"; def g_loglevel = 5; def g_logdirect = "BEIDE"; // BEIDE oder D3LOG oder DATEI def date = new Date(); def zeitstempel = date.format( "yyyy.MM.dd HH:mm:ss", TimeZone.getTimeZone('CET') ); def loglevel_lang = "[INFO ]"; if ( loglevel <= g_loglevel ) { switch ( loglevel ) { case 1: loglevel_lang = "[FATAL]"; if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) ) { d3.log.critical( logtext ); } break; case 2: loglevel_lang = "[ERROR]"; if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) ) { d3.log.error( logtext ); } break; case 3: loglevel_lang = "[WARN ]"; if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) ) { d3.log.warn( logtext ); } break; case 4: loglevel_lang = "[INFO ]"; if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) ) { d3.log.info( logtext ); } break; case 5: loglevel_lang = "[DEBUG]"; // Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log. if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) ) { d3.log.debug( logtext ); } break; } } if ( ( g_logdirect == "DATEI" ) || ( g_logdirect == "BEIDE" ) ) { new File( logdatei ).append( zeitstempel + " " + loglevel_lang + " " + logtext + "\n", "UTF8" ); } return 0; }