Files
d.velop/Kleeberg/migration_notizen.groovy
2024-06-14 10:39:14 +02:00

217 lines
6.7 KiB
Groovy

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");
@Field prg = "migration_mandant_notizen.groovy";
@Field version = "0.1";
@Field 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;
/////////////////////////////////////////////////////////////////////////
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, "************************************************" );
def i, ergebniszeilen, ergebnistext;
def sqlQuery = "select top (100) id,ddf1,notiz from mig_mandant_notizen where fehler is null and status is null ";
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
if ( resultRows.size() > 0 )
{
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
xlog( d3, 4, "************************************************" );
for ( i = 0; i < resultRows.size(); i++ )
{
ergebniszeilen = d3.sql.executeAndGet( "select doku_id from firmen_spezifisch where kue_dokuart = 'AMAND' and dok_dat_feld_1 = '" + resultRows[ i ].ddf1 + "' " );
if ( ergebniszeilen.size() > 0 )
{
ergebnistext = "ID " + resultRows[ i ].id + " / Mandantnummer [" + resultRows[ i ].ddf1 + "] Mandantenakte Doku-ID: [" + ergebniszeilen[ 0 ].doku_id + "] ";
if ( debug == 0 )
{
//def ergebnis = d3.call.note_add_string( resultRows[ i ].notiz, ergebniszeilen[ 0 ].doku_id, "Master" ); // hat eine Begrenzung auf die Länge der Notiz (1997 Zeichen sind noch erlaubt).
def nodeFile = new File( "d:\\d3\\apps\\notiz.txt" );
nodeFile.append( resultRows[ i ].notiz );
def ergebnis = d3.call.note_add_file( "d:\\d3\\apps\\notiz.txt", ergebniszeilen[ 0 ].doku_id, "Master" );
nodeFile.delete();
if ( ergebnis == 0 )
{
ergebnistext = ergebnistext + "Die Notiz (ID " + resultRows[ i ].id + ", Laenge: " + resultRows[ i ].notiz.length() + " Zeichen) wurde erfolgreich angelegt."
d3.sql.execute( "update mig_mandant_notizen set status = '0' where id = " + resultRows[ i ].id );
}
else
{
ergebnistext = ergebnistext + "Die Notiz (ID " + resultRows[ i ].id + ", Laenge: " + resultRows[ i ].notiz.length() + " Zeichen) konnte nicht angelegt werden: RC " + ergebnis;
d3.sql.execute( "update mig_mandant_notizen set status = '" + ergebnis + "', fehler = '" + ergebnistext + "' where id = " + resultRows[ i ].id );
}
xlog( d3, 4, ergebnistext );
}
else
{
xlog( d3, 3, ergebnistext + "DEBUG ist eingeschaltet, es werden keine Aenderungen durchgefuehrt." );
}
}
else
{
xlog( d3, 3, "ID " + resultRows[ i ].id + " / Mandantnummer [" + resultRows[ i ].ddf1 + "]: Es wurde keine Mandantakte gefunden." );
}
}
}
else
{
xlog( d3, 3, "Es wurden keine passenden Treffer gefunden!" );
}
def xlog( D3Interface d3, int loglevel, String logtext )
{
def logdatei = "d:\\d3\\apps\\" + prg + ".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;
}