Initialer Upload
This commit is contained in:
1225
Kleeberg/20_value_sets.groovy
Normal file
1225
Kleeberg/20_value_sets.groovy
Normal file
File diff suppressed because it is too large
Load Diff
3346
Kleeberg/30_hooks.groovy
Normal file
3346
Kleeberg/30_hooks.groovy
Normal file
File diff suppressed because it is too large
Load Diff
24
Kleeberg/ERwflProcessConstants.groovy
Normal file
24
Kleeberg/ERwflProcessConstants.groovy
Normal file
@@ -0,0 +1,24 @@
|
||||
public class ERwflProcessConstants{
|
||||
|
||||
// Base-Uri without trailing "/"
|
||||
static final String gBaseUri = "https://d3one.kleeberg.kleeberg.de";
|
||||
|
||||
// API-Key of a user with the right to start a process. It is recommended to use a user without d.3 document permissions
|
||||
static final String gApiKey = "BkelbC0cc2uf1PZ4Aftzvtw/tQKsUR7AGbj0/IrTDl/wIu34gyX4LWWU4NUkTDYEWF9uOfpxTIwn48fke1xzs8jJ5/dXf5ABBWRhuff/Z3U=&_z_A0V5ayCSDIwDiNS1nL5awyU2f_-oPqbOvu-W7spr3dMu6-RJODofIJ5nAN5pPh6GH3hdFbitxB2cXYhhUspF1O2Bu33Qq";
|
||||
|
||||
// Process ID
|
||||
static final String gProzessId = "Eingangsrechnungsworkflow";
|
||||
|
||||
// Repository ID
|
||||
static final String gRepoId = "7b813cf7-9909-54ba-a333-f62d302fdfdc";
|
||||
|
||||
// Dokumenttype used within the Hook-Definition
|
||||
static final String gDocType = "DEREC"
|
||||
|
||||
// Assignee group for first Task
|
||||
//static final String gBuchhaltung = "identity://" + "/identityprovider/scim/groups/dd1cbb6d-8603-4ffd-a666-f0d61c9502df"; //ID ist von der Gruppe D3T_BUHA
|
||||
static final String gBuchhaltung = "identity://" + "/identityprovider/scim/groups/7a37a8d3-45ff-46fa-9b3a-451681f7ac95"; //ID ist von der Gruppe D3T_BUHA_ER (Laut Fehlerliste soll hier eine Umstellung auf die Gruppe D3T_BUHA_ER umgestellt werden)
|
||||
|
||||
// Subject first Task
|
||||
static final String gSubject = "Eingangsrechnungsworkflow initial zur weiteren Bearbeitung prüfen";
|
||||
}
|
||||
89
Kleeberg/EingangsrechnungsWorkflow.groovy
Normal file
89
Kleeberg/EingangsrechnungsWorkflow.groovy
Normal file
@@ -0,0 +1,89 @@
|
||||
// Hooks
|
||||
import com.dvelop.d3.server.*
|
||||
import com.dvelop.d3.server.core.D3Interface
|
||||
|
||||
// REST / Http
|
||||
import javax.net.ssl.HttpsURLConnection
|
||||
import groovy.json.JsonSlurper
|
||||
|
||||
|
||||
class Eingangsrechnungsworkflow {
|
||||
|
||||
// Constructor
|
||||
Eingangsrechnungsworkflow() {}
|
||||
|
||||
@Entrypoint(entrypoint = "hook_insert_exit_30")
|
||||
@Condition(doctype = [ERwflProcessConstants.gDocType])
|
||||
int ProcessInsertExit30_1(D3Interface d3, Document doc, String fileDestination, Integer importOk, User d3User, DocumentType docType){
|
||||
|
||||
def processId = ERwflProcessConstants.gProzessId;
|
||||
def baseUri = ERwflProcessConstants.gBaseUri;
|
||||
def repoId = ERwflProcessConstants.gRepoId;
|
||||
def docId = doc.id;
|
||||
def subject = ERwflProcessConstants.gSubject;
|
||||
def empfaengerBuchhaltung = ERwflProcessConstants.gBuchhaltung;
|
||||
def date = new Date();
|
||||
def timeString = date.getDateTimeString();
|
||||
def businessKey = "${processId}-${timeString}-${docId}";
|
||||
businessKey = businessKey.replaceAll(" ", "");
|
||||
|
||||
|
||||
def jsonBody = """{
|
||||
"businessKey": "${businessKey}",
|
||||
"variables": {
|
||||
"empfaengerBuchhaltung" : "${empfaengerBuchhaltung}",
|
||||
"formInstanceId" : "${businessKey}",
|
||||
"baseUri" : "${baseUri}",
|
||||
"docId" : "${docId}",
|
||||
"repoId" : "${repoId}",
|
||||
"subject" : "${subject}",
|
||||
"dv_attachment": "dmsObject:///dms/r/${repoId}/o2/${docId}"
|
||||
}
|
||||
}"""
|
||||
|
||||
def migrationDoc = doc.field[48];
|
||||
|
||||
if ( migrationDoc == null || migrationDoc == "" ){
|
||||
d3.log.info("ProcessInsertExit30_1 - Groovy hook insert_exit_30_1 " + doc.id + processId);
|
||||
|
||||
validateGenericProcessStart( d3, doc, d3User, processId, jsonBody );
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
public static def validateGenericProcessStart(D3Interface d3, Document doc, User d3User, def processId, def jsonBody ) {
|
||||
|
||||
try {
|
||||
def body = jsonBody;
|
||||
|
||||
def http = new URL( ERwflProcessConstants.gBaseUri + "/process/processes/" + processId + "/instances").openConnection() as HttpsURLConnection
|
||||
http.setRequestMethod('POST')
|
||||
http.setDoOutput(true)
|
||||
http.setRequestProperty("Content-Type", "application/json; charset=utf-8")
|
||||
http.setRequestProperty("Authorization", "Bearer " + ERwflProcessConstants.gApiKey )
|
||||
http.setRequestProperty("Accept-Charset" , "utf-8")
|
||||
|
||||
http.outputStream.write(body.getBytes("UTF-8"))
|
||||
http.connect()
|
||||
|
||||
def response = [:]
|
||||
|
||||
if (http.responseCode == 200 || http.responseCode == 201) {
|
||||
def location = http.getHeaderField("location");
|
||||
d3.log.info("Process was started: " + location);
|
||||
d3.log.info("Process was started on: " + http);
|
||||
d3.log.info("Process was started on baseUri: " + ERwflProcessConstants.gBaseUri );
|
||||
} else {
|
||||
response = http.getResponseMessage()
|
||||
d3.log.error("Error while starting process: " + response + "(" + http.responseCode + ")");
|
||||
d3.log.error("POST-Request send: " + http + "(" + http.responseCode + ")");
|
||||
return -1;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
d3.log.error("Exception while starting process: " + e.getMessage());
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
270
Kleeberg/mehrfachfelder_einrichten.groovy
Normal file
270
Kleeberg/mehrfachfelder_einrichten.groovy
Normal file
@@ -0,0 +1,270 @@
|
||||
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 = "mehrfachfelder_einrichten.groovy";
|
||||
@Field version = "0.1";
|
||||
@Field kunde = "Dr. Kleeberg & Partner GmbH";
|
||||
|
||||
|
||||
// Dieses Skript soll bei allen Dokumenten innerhalb der Mandatenakte die verknüpften Akten in 60er-Felder eintragen, damit die Dokumente bei einer passenden Suche gefunden werden.
|
||||
// Dabei wird festgehalten, welche Dokumente bereits aktualisiert wurden.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// debug = 0 => es finden Änderungen am Datenbestand statt
|
||||
// debug = 1 => es finden keine Änderungen am Datenbestand statt
|
||||
@Field debug = 0;
|
||||
|
||||
|
||||
@Field suffix = Math.abs( new Random().nextInt() % (99999 - 10000) ) + 10000;
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 dokumentarten = "'DBERA', 'DBETR', 'DDAUE', 'DDEBD', 'DFIBU', 'DABSC', 'DLOHN', 'DLSTD', 'DSTEU' ";
|
||||
|
||||
|
||||
def sqlQuery = "select top (10000) doku_id, kue_dokuart from firmen_spezifisch where kue_dokuart in ( " + dokumentarten + " ) and doku_id not in ( select doku_id from dv_mehrf_feld) order by kue_dokuart";
|
||||
|
||||
DB_Zeilen = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
if ( DB_Zeilen.size() > 0 )
|
||||
{
|
||||
xlog( d3, 4, " Es wurde(n) " + DB_Zeilen.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
for ( i = 0; i < DB_Zeilen.size(); i++ )
|
||||
{
|
||||
def docChild = DB_Zeilen[ i ].doku_id;
|
||||
|
||||
xlog( d3, 4, i + ": bearbeite Doku-ID " + docChild );
|
||||
|
||||
def ueberdoks = d3.call.link_get_parents( docChild, "Master" );
|
||||
//xlog( d3, 4, i + ": bearbeite ueberdoks-ID " + ueberdoks + " " + ueberdoks.size() );
|
||||
|
||||
def ziel_dok_ids = "";
|
||||
if ( ueberdoks.size() > 0 )
|
||||
{
|
||||
ueberdoks.each
|
||||
{
|
||||
xlog( d3, 4, i + ": => Kind: " + docChild + " Elternelement: " + it );
|
||||
|
||||
ziel_dok_ids = ziel_dok_ids + "'" + it + "',";
|
||||
}
|
||||
|
||||
ziel_dok_ids = ziel_dok_ids.substring( 0, ziel_dok_ids.length( ) - 1 );
|
||||
|
||||
xlog( d3, 4, i + ": Ziel-Dok_IDs: " + ziel_dok_ids );
|
||||
|
||||
def STATEMENT = "select kue_dokuart, dok_dat_feld_1, dok_dat_feld_2, dok_dat_feld_10, dok_dat_feld_13, dok_dat_feld_21 from firmen_spezifisch where doku_id in ( " + ziel_dok_ids + " ) ";
|
||||
|
||||
def resultRows = d3.sql.executeAndGet( STATEMENT );
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
// Schreiben der Verknüpfungen an das Dokument:
|
||||
|
||||
def currentDoc = d3.archive.getDocument( docChild );
|
||||
|
||||
// Die Felder werden vor dem Füllen geleert, damit - für den Fall, dass weniger neue Werte reingeschrieben werden als vorher drin waren - keine
|
||||
// deplazierten Restwerte in den Feldern stehen bleiben. (Könnte man vielleicht auch eleganter lösen.)
|
||||
// Felder leeren:
|
||||
for ( int m = 1 ; m <= Integer.valueOf( d3.config.value( "CUR_60ER_FIELD_NR" ) ); m++ )
|
||||
{
|
||||
currentDoc.field[ 60 ][ m ] = ""; // Mandantennamen
|
||||
currentDoc.field[ 61 ][ m ] = ""; // Mandantennummern
|
||||
currentDoc.field[ 62 ][ m ] = ""; // Mandantengruppennummern
|
||||
currentDoc.field[ 63 ][ m ] = ""; // Aktennamen
|
||||
currentDoc.field[ 64 ][ m ] = ""; // Aktennummern
|
||||
}
|
||||
|
||||
// Jetzt Felder füllen mit den gefundenen Werten:
|
||||
for ( int j = 1 ; j <= resultRows.size(); j++ )
|
||||
{
|
||||
currentDoc.field[ 60 ][ j ] = resultRows[ j - 1 ].dok_dat_feld_2; // Mandantennamen
|
||||
currentDoc.field[ 61 ][ j ] = resultRows[ j - 1 ].dok_dat_feld_1; // Mandantennummern
|
||||
currentDoc.field[ 62 ][ j ] = resultRows[ j - 1 ].dok_dat_feld_13; // Mandantengruppennummern
|
||||
currentDoc.field[ 63 ][ j ] = resultRows[ j - 1 ].dok_dat_feld_21; // Aktennamen
|
||||
currentDoc.field[ 64 ][ j ] = resultRows[ j - 1 ].dok_dat_feld_10; // Aktennummern
|
||||
xlog( d3, 4, i + ": Dokument " + docChild + ": Info-Zeile " + j + " gesetzt: <" + resultRows[ j - 1 ].kue_dokuart + "> <" + resultRows[ j - 1 ].dok_dat_feld_2 + "> <" + resultRows[ j - 1 ].dok_dat_feld_1 + "> <" + resultRows[ j - 1 ].dok_dat_feld_13 + "> <" + resultRows[ j - 1 ].dok_dat_feld_21 + "> <" + resultRows[ j - 1 ].dok_dat_feld_10 + ">" );
|
||||
}
|
||||
|
||||
currentDoc.updateAttributes( "Master" );
|
||||
dokument_fertig( d3, docChild, "Aktualisierung erfolgt." );
|
||||
xlog( d3, 4, i + ": Dokument " + docChild + ": Aktualisierung erfolgt." );
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dokument_fertig( d3, docChild, "keine uebergeordneten Akten" );
|
||||
xlog( d3, 3, i + ": Dokument " + docChild + " hat keine uebergeordneten Akten." );
|
||||
}
|
||||
xlog( d3, 4, "************************************************" );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Es wurden keine passenden Treffer gefunden!" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def dokument_fertig( D3Interface d3, String doku_id, String meldung )
|
||||
{
|
||||
def meldung_db;
|
||||
|
||||
if ( meldung.length() > 200 )
|
||||
{
|
||||
meldung_db = meldung.substring( 0, 199 );
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung_db = meldung;
|
||||
}
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
//xlog( d3, 4, "Angekommen" );
|
||||
sql = "insert into dv_mehrf_feld (doku_id, status) values ( '" + doku_id + "', '" + meldung + "' )";
|
||||
d3.sql.execute( sql );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\logs\\" + prg + "_" + suffix + ".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;
|
||||
}
|
||||
594
Kleeberg/migration_akte_ausgangsrechakte.groovy
Normal file
594
Kleeberg/migration_akte_ausgangsrechakte.groovy
Normal file
@@ -0,0 +1,594 @@
|
||||
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_ausgangsrechakte.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_ausgangsrechnungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "AMAND";
|
||||
@Field dokuart_hauptakte = "AAURE";
|
||||
@Field dokuart_oberregisterakte = "AAURR";
|
||||
@Field dokuart_registerakte = "AAURA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Ausgangsrechnungsakte";
|
||||
|
||||
|
||||
// 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 = "Ausgangsrechnungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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_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[ 42 ] = newDocfield_42;
|
||||
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[ 42 ] = newDocfield_42;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,586 @@
|
||||
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.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_beratungsakten";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ABESA";
|
||||
@Field dokuart_hauptakte = "ABERB";
|
||||
@Field dokuart_oberregisterakte = "ABERO";
|
||||
@Field dokuart_registerakte = "ABERA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Beratungsakte";
|
||||
|
||||
|
||||
// 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 = "Beratungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 id,ddf1,ddf48,ddf10,ddf21,ddf22,ddf25,ddf37,ddf42,ddf60,ddf69 from " + zieltabelle + " where fehler ='Doppelte Aktennummer'";
|
||||
|
||||
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_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingefügt
|
||||
//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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
586
Kleeberg/migration_akte_beratungsakte_1.groovy
Normal file
586
Kleeberg/migration_akte_beratungsakte_1.groovy
Normal file
@@ -0,0 +1,586 @@
|
||||
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.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_beratungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ABESA";
|
||||
@Field dokuart_hauptakte = "ABERB";
|
||||
@Field dokuart_oberregisterakte = "ABERO";
|
||||
@Field dokuart_registerakte = "ABERA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Beratungsakte";
|
||||
|
||||
|
||||
// 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 = "Beratungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 and id < 7000 ";
|
||||
|
||||
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_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingefügt
|
||||
//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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_1.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;
|
||||
}
|
||||
|
||||
|
||||
586
Kleeberg/migration_akte_beratungsakte_2.groovy
Normal file
586
Kleeberg/migration_akte_beratungsakte_2.groovy
Normal file
@@ -0,0 +1,586 @@
|
||||
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.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_beratungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ABESA";
|
||||
@Field dokuart_hauptakte = "ABERB";
|
||||
@Field dokuart_oberregisterakte = "ABERO";
|
||||
@Field dokuart_registerakte = "ABERA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Beratungsakte";
|
||||
|
||||
|
||||
// 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 = "Beratungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 and id >= 7000 and id < 14000 ";
|
||||
|
||||
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_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingefügt
|
||||
//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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_2.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;
|
||||
}
|
||||
|
||||
|
||||
586
Kleeberg/migration_akte_beratungsakte_3.groovy
Normal file
586
Kleeberg/migration_akte_beratungsakte_3.groovy
Normal file
@@ -0,0 +1,586 @@
|
||||
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.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_beratungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ABESA";
|
||||
@Field dokuart_hauptakte = "ABERB";
|
||||
@Field dokuart_oberregisterakte = "ABERO";
|
||||
@Field dokuart_registerakte = "ABERA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Beratungsakte";
|
||||
|
||||
|
||||
// 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 = "Beratungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 and id >= 14000 ";
|
||||
|
||||
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_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingefügt
|
||||
//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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_3.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;
|
||||
}
|
||||
|
||||
|
||||
591
Kleeberg/migration_akte_betriebspruefungsakte.groovy
Normal file
591
Kleeberg/migration_akte_betriebspruefungsakte.groovy
Normal file
@@ -0,0 +1,591 @@
|
||||
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.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_betriebspruefungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ABPSA";
|
||||
@Field dokuart_hauptakte = "ABETR";
|
||||
@Field dokuart_oberregisterakte = "ABEOR";
|
||||
@Field dokuart_registerakte = "ABEPA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Betriebspruefungsakte";
|
||||
|
||||
|
||||
// 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 = "Betriebspruefungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 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
|
||||
//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_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
///JFEL toString eingebaut
|
||||
//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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
671
Kleeberg/migration_akte_dauerakte.groovy
Normal file
671
Kleeberg/migration_akte_dauerakte.groovy
Normal file
@@ -0,0 +1,671 @@
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
336
Kleeberg/migration_akte_eigenverwaltung.groovy
Normal file
336
Kleeberg/migration_akte_eigenverwaltung.groovy
Normal file
@@ -0,0 +1,336 @@
|
||||
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.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_eigenverwaltungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "";
|
||||
@Field dokuart_hauptakte = "AEVAK";
|
||||
@Field dokuart_oberregisterakte = "AEVOR";
|
||||
@Field dokuart_registerakte = "AEVRE";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Eigenverwaltungsakte";
|
||||
|
||||
|
||||
// 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 = "Beratungsakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf48,ddf10,ddf21,ddf25,ddf60,ddf69,ddf41 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++ )
|
||||
{
|
||||
|
||||
// Es wird eine neue Hauptakte erstellt
|
||||
|
||||
def newDocfield_10, newDocfield_21, newDocfield_25, newDocfield_41, newDocfield_48, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
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 Geschaeftsfuehrer DDF25 : [" + treffer[ i ].ddf25 + "]" );
|
||||
newDocfield_25 = treffer[ i ].ddf25;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Briefkopf DDF41 : [" + treffer[ i ].ddf41 + "]" );
|
||||
newDocfield_41 = treffer[ i ].ddf41;
|
||||
|
||||
|
||||
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 ];
|
||||
}
|
||||
}
|
||||
|
||||
// Eigenverwaltungsakten haben keine Sammelakten, daher ist der Part entfernt worden
|
||||
// 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[ 10 ] = newDocfield_10;
|
||||
newDoc.field[ 21 ] = newDocfield_21;
|
||||
newDoc.field[ 25 ] = newDocfield_25;
|
||||
newDoc.field[ 41 ] = newDocfield_41;
|
||||
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_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)." );
|
||||
}
|
||||
|
||||
// Eigenverwaltungsakten haben keine fest definierte Unterstruktur, daher ist der Code hier entfernt worden
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
599
Kleeberg/migration_akte_fibuakte.groovy
Normal file
599
Kleeberg/migration_akte_fibuakte.groovy
Normal file
@@ -0,0 +1,599 @@
|
||||
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.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_finanzbuchhaltungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "AFBSA";
|
||||
@Field dokuart_hauptakte = "AFIBA";
|
||||
@Field dokuart_oberregisterakte = "AFIOR";
|
||||
@Field dokuart_registerakte = "AFIRA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Finanzbuchhaltungs-Akte";
|
||||
|
||||
|
||||
// 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 = "Fibuakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf5,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 );
|
||||
|
||||
xlog( d3, 4, "Mandantnummer aus Aktennummer = " + mandantnr_aus_aktennr );
|
||||
xlog( d3, 4, "Mandantnummer aus Datenbank = " + treffer[ i ].ddf1 );
|
||||
|
||||
if ( mandantnr_aus_aktennr == treffer[ i ].ddf1 )
|
||||
{
|
||||
// Es wird eine neue Hauptakte erstellt
|
||||
|
||||
def newDocfield_1, newDocfield_2, newDocfield_5, 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 + "]" );
|
||||
newDocfield_1 = treffer[ i ].ddf1;
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktennummer DDF10 : [" + treffer[ i ].ddf10 + "]" );
|
||||
newDocfield_10 = treffer[ i ].ddf10;
|
||||
if ( treffer[ i ].ddf5 )
|
||||
{
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + treffer[ i ].ddf5 + "]" );
|
||||
newDocfield_5 = treffer[ i ].ddf5;
|
||||
}
|
||||
else
|
||||
{
|
||||
def ddf5neu = treffer[ i ].ddf10.substring( treffer[ i ].ddf10.indexOf( 'FI' ) + 2, treffer[ i ].ddf10.indexOf( 'FI' ) + 6 );
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + ddf5neu + "]" );
|
||||
newDocfield_5 = ddf5neu;
|
||||
}
|
||||
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
601
Kleeberg/migration_akte_jahresabschlussakte_1.groovy
Normal file
601
Kleeberg/migration_akte_jahresabschlussakte_1.groovy
Normal file
@@ -0,0 +1,601 @@
|
||||
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.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_jahresabschlussakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "AJASA";
|
||||
@Field dokuart_hauptakte = "AJAAA";
|
||||
@Field dokuart_oberregisterakte = "AJAOB";
|
||||
@Field dokuart_registerakte = "AJAAB";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Jahresabschlussakte";
|
||||
|
||||
|
||||
// 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 = "Jahresabschlussakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 and id < 7000 ";
|
||||
|
||||
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 eingebaut
|
||||
//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_5, 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 eingebaut
|
||||
//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;
|
||||
//Auskommentiert, da aktuell das ddf5, also das Geschaeftsjahr, nicht in der Tabelle mitgeliefert wird
|
||||
// if ( treffer[ i ]?.ddf5 )
|
||||
// {
|
||||
// xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + treffer[ i ].ddf5 + "]" );
|
||||
// newDocfield_5 = treffer[ i ].ddf5;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
def ddf5neu = treffer[ i ].ddf10.substring( treffer[ i ].ddf10.indexOf( 'JA' ) + 2, treffer[ i ].ddf10.indexOf( 'JA' ) + 6 );
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + ddf5neu + "]" );
|
||||
newDocfield_5 = ddf5neu;
|
||||
// }
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_1.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;
|
||||
}
|
||||
|
||||
|
||||
601
Kleeberg/migration_akte_jahresabschlussakte_2.groovy
Normal file
601
Kleeberg/migration_akte_jahresabschlussakte_2.groovy
Normal file
@@ -0,0 +1,601 @@
|
||||
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.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_jahresabschlussakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "AJASA";
|
||||
@Field dokuart_hauptakte = "AJAAA";
|
||||
@Field dokuart_oberregisterakte = "AJAOB";
|
||||
@Field dokuart_registerakte = "AJAAB";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Jahresabschlussakte";
|
||||
|
||||
|
||||
// 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 = "Jahresabschlussakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 and id >= 7000 ";
|
||||
|
||||
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 eingebaut
|
||||
//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_5, 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 eingebaut
|
||||
//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;
|
||||
//Auskommentiert, da aktuell das ddf5, also das Geschaeftsjahr, nicht in der Tabelle mitgeliefert wird
|
||||
// if ( treffer[ i ]?.ddf5 )
|
||||
// {
|
||||
// xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + treffer[ i ].ddf5 + "]" );
|
||||
// newDocfield_5 = treffer[ i ].ddf5;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
def ddf5neu = treffer[ i ].ddf10.substring( treffer[ i ].ddf10.indexOf( 'JA' ) + 2, treffer[ i ].ddf10.indexOf( 'JA' ) + 6 );
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + ddf5neu + "]" );
|
||||
newDocfield_5 = ddf5neu;
|
||||
// }
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_2.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;
|
||||
}
|
||||
|
||||
|
||||
527
Kleeberg/migration_akte_kreditorenakte.groovy
Normal file
527
Kleeberg/migration_akte_kreditorenakte.groovy
Normal file
@@ -0,0 +1,527 @@
|
||||
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.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_kreditorenakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "";
|
||||
@Field dokuart_hauptakte = "AKRED";
|
||||
@Field dokuart_oberregisterakte = "AKROR";
|
||||
@Field dokuart_registerakte = "AKRER";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Kreditorakte";
|
||||
|
||||
|
||||
// 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 = "Kreditorenakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf48,ddf10,ddf20,ddf19,ddf22,ddf62,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 );
|
||||
|
||||
if ( mandantnr_aus_aktennr == treffer[ i ].ddf19 )
|
||||
{
|
||||
// Es wird eine neue Hauptakte erstellt
|
||||
|
||||
def newDocfield_19, newDocfield_10, newDocfield_20, newDocfield_22, newDocfield_48, newDocfield_62 = [ ], newDocfield_69 = [ ];
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktennummer DDF10 : [" + treffer[ i ].ddf10 + "]" );
|
||||
newDocfield_10 = treffer[ i ].ddf10;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Kreditornummer DDF19 : [" + treffer[ i ].ddf19 + "]" );
|
||||
newDocfield_19 = treffer[ i ].ddf19;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Kreditorname DDF20 : [" + treffer[ i ].ddf20 + "]" );
|
||||
newDocfield_20 = treffer[ i ].ddf20;
|
||||
|
||||
def dddf22 = "Digital";
|
||||
|
||||
if ( ( ! treffer[ i ].ddf22 ) || ( treffer[ i ].ddf22 == 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": physischer Aufbewahrungsort DDF22 wurde nicht angegeben, default: [" + dddf22 + "]" );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf22 = treffer[ i ].ddf22;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze physischer Aufbewahrungsort DDF22 : [" + dddf22 + "]" );
|
||||
newDocfield_22 = dddf22;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Unique-ID Migration DDF48 : [" + treffer[ i ].ddf48 + "]" );
|
||||
newDocfield_48 = treffer[ i ].ddf48;
|
||||
|
||||
// Freigeber
|
||||
if ( treffer[ i ].ddf62 )
|
||||
{
|
||||
def splitted_str_array = treffer[ i ].ddf62.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 DDF62 / " + filler + j + " : [" + splitted_str_array[ j ] + "]" );
|
||||
newDocfield_62[ 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 ( true )
|
||||
{
|
||||
|
||||
// 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_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
newDoc.field[ 10 ] = newDocfield_10;
|
||||
newDoc.field[ 19 ] = newDocfield_19;
|
||||
newDoc.field[ 20 ] = newDocfield_20;
|
||||
newDoc.field[ 22 ] = newDocfield_22;
|
||||
newDoc.field[ 48 ] = newDocfield_48;
|
||||
|
||||
for ( int i = 0; i < newDocfield_62.size(); i++ )
|
||||
{
|
||||
newDoc.field[ 62 ][ i + 1 ] = newDocfield_62[ 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_19 = '" + newDocfield_19 + "' AND dok_dat_feld_10 = '" + newDocfield_10 + "'";
|
||||
|
||||
ergebnis = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
if ( ergebnis.size() > 0 ) {
|
||||
//xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: [" + ergebnis[ 0 ].doku_id + "]" );
|
||||
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 );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
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_RELEASE;
|
||||
//newDocOReg.editor = "dvelop";
|
||||
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 19 ] = newDocfield_19;
|
||||
newDocOReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister
|
||||
newDocOReg.field[ 20 ] = newDocfield_20;
|
||||
newDocOReg.field[ 22 ] = newDocfield_22;
|
||||
|
||||
|
||||
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_RELEASE;
|
||||
//newDocReg.editor = "dvelop";
|
||||
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 19 ] = newDocfield_19;
|
||||
newDocReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister
|
||||
newDocReg.field[ 20 ] = newDocfield_20;
|
||||
newDocReg.field[ 22 ] = newDocfield_22;
|
||||
newDocReg.field[ 4 ] = it.dok_dat_feld_4; // Register
|
||||
|
||||
|
||||
|
||||
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte gefunden. [" + treffer[ i ].ddf10 + "]", (int) treffer[ i ].id );
|
||||
}
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fehler
|
||||
fehler( d3, "Kreditornummer 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;
|
||||
}
|
||||
|
||||
|
||||
527
Kleeberg/migration_akte_kreditorenakte_2.groovy
Normal file
527
Kleeberg/migration_akte_kreditorenakte_2.groovy
Normal file
@@ -0,0 +1,527 @@
|
||||
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.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_kreditorenakte_2";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "";
|
||||
@Field dokuart_hauptakte = "AKRED";
|
||||
@Field dokuart_oberregisterakte = "AKROR";
|
||||
@Field dokuart_registerakte = "AKRER";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Kreditorakte";
|
||||
|
||||
|
||||
// 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 = "Kreditorenakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf48,ddf10,ddf20,ddf19,ddf22,ddf62,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 );
|
||||
|
||||
if ( mandantnr_aus_aktennr == treffer[ i ].ddf19 )
|
||||
{
|
||||
// Es wird eine neue Hauptakte erstellt
|
||||
|
||||
def newDocfield_19, newDocfield_10, newDocfield_20, newDocfield_22, newDocfield_48, newDocfield_62 = [ ], newDocfield_69 = [ ];
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktennummer DDF10 : [" + treffer[ i ].ddf10 + "]" );
|
||||
newDocfield_10 = treffer[ i ].ddf10;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Kreditornummer DDF19 : [" + treffer[ i ].ddf19 + "]" );
|
||||
newDocfield_19 = treffer[ i ].ddf19;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Kreditorname DDF20 : [" + treffer[ i ].ddf20 + "]" );
|
||||
newDocfield_20 = treffer[ i ].ddf20;
|
||||
|
||||
def dddf22 = "Digital";
|
||||
|
||||
if ( ( ! treffer[ i ].ddf22 ) || ( treffer[ i ].ddf22 == 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": physischer Aufbewahrungsort DDF22 wurde nicht angegeben, default: [" + dddf22 + "]" );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf22 = treffer[ i ].ddf22;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze physischer Aufbewahrungsort DDF22 : [" + dddf22 + "]" );
|
||||
newDocfield_22 = dddf22;
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Unique-ID Migration DDF48 : [" + treffer[ i ].ddf48 + "]" );
|
||||
newDocfield_48 = treffer[ i ].ddf48;
|
||||
|
||||
// Freigeber
|
||||
if ( treffer[ i ].ddf62 )
|
||||
{
|
||||
def splitted_str_array = treffer[ i ].ddf62.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 DDF62 / " + filler + j + " : [" + splitted_str_array[ j ] + "]" );
|
||||
newDocfield_62[ 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 ( true )
|
||||
{
|
||||
|
||||
// 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_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
newDoc.field[ 10 ] = newDocfield_10;
|
||||
newDoc.field[ 19 ] = newDocfield_19;
|
||||
newDoc.field[ 20 ] = newDocfield_20;
|
||||
newDoc.field[ 22 ] = newDocfield_22;
|
||||
newDoc.field[ 48 ] = newDocfield_48;
|
||||
|
||||
for ( int i = 0; i < newDocfield_62.size(); i++ )
|
||||
{
|
||||
newDoc.field[ 62 ][ i + 1 ] = newDocfield_62[ 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_19 = '" + newDocfield_19 + "' AND dok_dat_feld_10 = '" + newDocfield_10 + "'";
|
||||
|
||||
ergebnis = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
if ( ergebnis.size() > 0 ) {
|
||||
//xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: [" + ergebnis[ 0 ].doku_id + "]" );
|
||||
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 );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
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_RELEASE;
|
||||
//newDocOReg.editor = "dvelop";
|
||||
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 19 ] = newDocfield_19;
|
||||
newDocOReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister
|
||||
newDocOReg.field[ 20 ] = newDocfield_20;
|
||||
newDocOReg.field[ 22 ] = newDocfield_22;
|
||||
|
||||
|
||||
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_RELEASE;
|
||||
//newDocReg.editor = "dvelop";
|
||||
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 19 ] = newDocfield_19;
|
||||
newDocReg.field[ 3 ] = it.dok_dat_feld_2; // Oberregister
|
||||
newDocReg.field[ 20 ] = newDocfield_20;
|
||||
newDocReg.field[ 22 ] = newDocfield_22;
|
||||
newDocReg.field[ 4 ] = it.dok_dat_feld_4; // Register
|
||||
|
||||
|
||||
|
||||
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte gefunden. [" + treffer[ i ].ddf10 + "]", (int) treffer[ i ].id );
|
||||
}
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fehler
|
||||
fehler( d3, "Kreditornummer 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;
|
||||
}
|
||||
|
||||
|
||||
601
Kleeberg/migration_akte_lohnbuchhaltungsakte.groovy
Normal file
601
Kleeberg/migration_akte_lohnbuchhaltungsakte.groovy
Normal file
@@ -0,0 +1,601 @@
|
||||
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_lohnbuchhaltungsakte.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_lohnbuchhaltungsakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ALOSA";
|
||||
@Field dokuart_hauptakte = "ALOJA";
|
||||
@Field dokuart_oberregisterakte = "ALBOR";
|
||||
@Field dokuart_registerakte = "ALBRE";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Lohnbuchhaltungs-Jahresakte";
|
||||
|
||||
|
||||
// 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 = "Lohnbuchhaltungjahresakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf5,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
|
||||
// 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_5, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingefügt
|
||||
//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;
|
||||
|
||||
def dddf5;
|
||||
|
||||
if ( ( ! treffer[ i ].ddf5 ) || ( treffer[ i ].ddf5 = 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Geschaeftsjahr in Tabelle nicht gefuellt, Lese Geschaeftsjahr aus Aktennummer." );
|
||||
dddf5 = newDocfield_10.substring( 7, 11 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf5 = treffer[ i ].ddf5;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + dddf5 + "]" );
|
||||
newDocfield_5 = dddf5;
|
||||
|
||||
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;
|
||||
|
||||
// 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[ 5 ] = newDocfield_5;
|
||||
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;
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
580
Kleeberg/migration_akte_lohnbuchhaltungsstammdatenakte.groovy
Normal file
580
Kleeberg/migration_akte_lohnbuchhaltungsstammdatenakte.groovy
Normal file
@@ -0,0 +1,580 @@
|
||||
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.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 = 1;
|
||||
|
||||
|
||||
|
||||
// In welcher Tabelle soll nach den zu erstellenden Akten gesucht werden?
|
||||
@Field zieltabelle = "mig_lohnbuchhaltungsstammakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ALOSA";
|
||||
@Field dokuart_hauptakte = "ALBSA";
|
||||
@Field dokuart_oberregisterakte = "ALBSO";
|
||||
@Field dokuart_registerakte = "ALORE";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Lohnbuchhaltungs-Stammdatenakte";
|
||||
|
||||
|
||||
// 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 = "Lohnbuchhaltungsstammdatenakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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 id,ddf1,ddf48,ddf10,ddf21,ddf22,ddf25,ddf37,ddf42,ddf60,ddf5,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 );
|
||||
|
||||
if ( mandantnr_aus_aktennr == treffer[ i ].ddf1 )
|
||||
{
|
||||
// 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_5, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
newDocfield_1 = treffer[ i ].ddf1;
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Aktennummer DDF10 : [" + treffer[ i ].ddf10 + "]" );
|
||||
newDocfield_10 = treffer[ i ].ddf10;
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + treffer[ i ].ddf5 + "]" );
|
||||
newDocfield_5 = treffer[ i ].ddf5;
|
||||
|
||||
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;
|
||||
|
||||
// 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[ 5 ] = newDocfield_5;
|
||||
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;
|
||||
|
||||
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[ 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[ 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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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;
|
||||
}
|
||||
|
||||
|
||||
605
Kleeberg/migration_akte_steuerakte_1.groovy
Normal file
605
Kleeberg/migration_akte_steuerakte_1.groovy
Normal file
@@ -0,0 +1,605 @@
|
||||
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_steuerakte.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_steuerakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ASTSA";
|
||||
@Field dokuart_hauptakte = "ASTEU";
|
||||
@Field dokuart_oberregisterakte = "ASTOR";
|
||||
@Field dokuart_registerakte = "ASTRA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Steuerakte";
|
||||
|
||||
|
||||
// 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 = "Steuerakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf5 from " + zieltabelle + " where fehler is null and doku_id is null and id < 9000 ";
|
||||
|
||||
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 eingebaut
|
||||
//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_5, newDocfield_10, newDocfield_13, newDocfield_21, newDocfield_22, newDocfield_25, newDocfield_37, newDocfield_42, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingebaut
|
||||
//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;
|
||||
|
||||
def dddf5;
|
||||
|
||||
if ( ( ! treffer[ i ].ddf5 ) || ( treffer[ i ].ddf5 = 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Geschaeftsjahr in Tabelle nicht gefuellt, Lese Geschaeftsjahr aus Aktennummer." );
|
||||
dddf5 = newDocfield_10.substring( 7, 11 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf5 = treffer[ i ].ddf5;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + dddf5 + "]" );
|
||||
newDocfield_5 = dddf5;
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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 ) {
|
||||
//xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: [" + ergebnis[ 0 ].doku_id + "]" );
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_1.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;
|
||||
}
|
||||
|
||||
|
||||
605
Kleeberg/migration_akte_steuerakte_2.groovy
Normal file
605
Kleeberg/migration_akte_steuerakte_2.groovy
Normal file
@@ -0,0 +1,605 @@
|
||||
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_steuerakte.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_steuerakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ASTSA";
|
||||
@Field dokuart_hauptakte = "ASTEU";
|
||||
@Field dokuart_oberregisterakte = "ASTOR";
|
||||
@Field dokuart_registerakte = "ASTRA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Steuerakte";
|
||||
|
||||
|
||||
// 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 = "Steuerakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf5 from " + zieltabelle + " where fehler is null and doku_id is null and id >= 9000 and id < 18000 ";
|
||||
|
||||
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 eingebaut
|
||||
//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_5, newDocfield_10, newDocfield_13, newDocfield_21, newDocfield_22, newDocfield_25, newDocfield_37, newDocfield_42, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingebaut
|
||||
//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;
|
||||
|
||||
def dddf5;
|
||||
|
||||
if ( ( ! treffer[ i ].ddf5 ) || ( treffer[ i ].ddf5 = 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Geschaeftsjahr in Tabelle nicht gefuellt, Lese Geschaeftsjahr aus Aktennummer." );
|
||||
dddf5 = newDocfield_10.substring( 7, 11 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf5 = treffer[ i ].ddf5;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + dddf5 + "]" );
|
||||
newDocfield_5 = dddf5;
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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 ) {
|
||||
//xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: [" + ergebnis[ 0 ].doku_id + "]" );
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_2.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;
|
||||
}
|
||||
|
||||
|
||||
605
Kleeberg/migration_akte_steuerakte_3.groovy
Normal file
605
Kleeberg/migration_akte_steuerakte_3.groovy
Normal file
@@ -0,0 +1,605 @@
|
||||
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_steuerakte.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_steuerakte";
|
||||
|
||||
|
||||
// Konfiguration der Aktenartkürzel
|
||||
@Field dokuart_sammelakte = "ASTSA";
|
||||
@Field dokuart_hauptakte = "ASTEU";
|
||||
@Field dokuart_oberregisterakte = "ASTOR";
|
||||
@Field dokuart_registerakte = "ASTRA";
|
||||
|
||||
|
||||
|
||||
// der hier konfigurierte Wert wird verwendet, wenn kein sonstiger Hauptaktenname gefunden wird.
|
||||
@Field standard_hauptaktenname = "Steuerakte";
|
||||
|
||||
|
||||
// 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 = "Steuerakte";
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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,ddf5 from " + zieltabelle + " where fehler is null and doku_id is null and id >= 18000 ";
|
||||
|
||||
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 eingebaut
|
||||
//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_5, newDocfield_10, newDocfield_13, newDocfield_21, newDocfield_22, newDocfield_25, newDocfield_37, newDocfield_42, newDocfield_60 = [ ], newDocfield_69 = [ ];
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Mandantennummer DDF1 : [" + treffer[ i ].ddf1 + "]" );
|
||||
|
||||
//JFEL toString eingebaut
|
||||
//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;
|
||||
|
||||
def dddf5;
|
||||
|
||||
if ( ( ! treffer[ i ].ddf5 ) || ( treffer[ i ].ddf5 = 'null' ) )
|
||||
{
|
||||
xlog( d3, 3, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Geschaeftsjahr in Tabelle nicht gefuellt, Lese Geschaeftsjahr aus Aktennummer." );
|
||||
dddf5 = newDocfield_10.substring( 7, 11 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dddf5 = treffer[ i ].ddf5;
|
||||
}
|
||||
|
||||
xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": setze Geschaeftsjahr DDF5 : [" + dddf5 + "]" );
|
||||
newDocfield_5 = dddf5;
|
||||
|
||||
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[ 5 ] = newDocfield_5;
|
||||
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 ) {
|
||||
//xlog( d3, 4, treffer[ i ].ddf10 + " / " + treffer[ i ].id + ": Aktenanlage [" + newDoc.field[ 10 ] + "] nicht durchgefuehrt da die Akte bereits existiert, doku_id: [" + ergebnis[ 0 ].doku_id + "]" );
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocOReg.field[ 10 ] = newDocfield_10;
|
||||
newDocOReg.field[ 13 ] = newDocfield_13;
|
||||
newDocOReg.field[ 21 ] = newDocfield_21;
|
||||
newDocOReg.field[ 25 ] = newDocfield_25;
|
||||
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[ 5 ] = newDocfield_5;
|
||||
newDocReg.field[ 10 ] = newDocfield_10;
|
||||
newDocReg.field[ 13 ] = newDocfield_13;
|
||||
newDocReg.field[ 21 ] = newDocfield_21;
|
||||
newDocReg.field[ 25 ] = newDocfield_25;
|
||||
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 + "]" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fehler( d3, "Es wurde keine passende Sammelakte 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 + "_3.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;
|
||||
}
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_0.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_0.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_1.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_1.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "1";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_2.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_2.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "2";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_3.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_3.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "3";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
244
Kleeberg/migration_nachverknuepfen_4.groovy
Normal file
244
Kleeberg/migration_nachverknuepfen_4.groovy
Normal file
@@ -0,0 +1,244 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "4";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
243
Kleeberg/migration_nachverknuepfen_5.groovy
Normal file
243
Kleeberg/migration_nachverknuepfen_5.groovy
Normal file
@@ -0,0 +1,243 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "5";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_6.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_6.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "6";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_7.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_7.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "7";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_8.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_8.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "8";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
Kleeberg/migration_nachverknuepfen_9.groovy
Normal file
245
Kleeberg/migration_nachverknuepfen_9.groovy
Normal file
@@ -0,0 +1,245 @@
|
||||
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_nachverknuepfen.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "9";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
fehler( d3, meldung, (int) it.id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
223
Kleeberg/migration_nachverknuepfen_BP.groovy
Normal file
223
Kleeberg/migration_nachverknuepfen_BP.groovy
Normal file
@@ -0,0 +1,223 @@
|
||||
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_nachverknuepfen_BP.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;
|
||||
|
||||
@Field zieltabelle = "mig_multi_link_work";
|
||||
|
||||
|
||||
@Field doku_id_ende = "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, "* zieltabelle : " + zieltabelle );
|
||||
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
||||
xlog( d3, 4, "* DEBUG : " + debugtext );
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "select top (150) doku_id from firmen_spezifisch where kue_dokuart = 'DBETR' and doku_id not in ( select doku_id_unter from dokumenten_verknuepf )";
|
||||
|
||||
xlog( d3, 5, sqlQuery );
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
def meldung, ergebnis, xdebug;
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
def i = 0;
|
||||
|
||||
resultRows.each
|
||||
{
|
||||
i++;
|
||||
if ( debug == 0 )
|
||||
{
|
||||
ergebnis = d3.call.link_documents( "", it.doku_id, "Master", false, true );
|
||||
}
|
||||
else
|
||||
{
|
||||
ergebnis = 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( ergebnis == 0 )
|
||||
{
|
||||
xdebug = "";
|
||||
|
||||
if ( debug != 0 )
|
||||
{
|
||||
xdebug = " (DEBUG)";
|
||||
}
|
||||
|
||||
meldung = "OK" + xdebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
meldung = "Fehler: RC [" + ergebnis + "]";
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + ": (C) [" + it.doku_id + "] => " + meldung );
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 4, meldung );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
217
Kleeberg/migration_notizen.groovy
Normal file
217
Kleeberg/migration_notizen.groovy
Normal file
@@ -0,0 +1,217 @@
|
||||
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;
|
||||
}
|
||||
218
Kleeberg/migration_notizen_hauptakten.groovy
Normal file
218
Kleeberg/migration_notizen_hauptakten.groovy
Normal file
@@ -0,0 +1,218 @@
|
||||
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_notizen_hauptakten.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;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// In welcher Tabelle soll nach den zu erstellenden Notizen gesucht werden?
|
||||
@Field zieltabelle = "mig_hauptakten_notizen";
|
||||
|
||||
|
||||
|
||||
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,ddf10,notiz from " + zieltabelle + " where fehler is null and status is null and ddf10 like '%ST%' ";
|
||||
|
||||
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 = 'ASTEU' and dok_dat_feld_10 = '" + resultRows[ i ].ddf10 + "' " );
|
||||
|
||||
if ( ergebniszeilen.size() > 0 )
|
||||
{
|
||||
ergebnistext = "ID " + resultRows[ i ].id + " / Aktennummer [" + resultRows[ i ].ddf10 + "] Hauptakte 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_hauptakte.txt" );
|
||||
|
||||
nodeFile.append( resultRows[ i ].notiz );
|
||||
|
||||
def ergebnis = d3.call.note_add_file( "d:\\d3\\apps\\notiz_hauptakte.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 " + zieltabelle + " 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 " + zieltabelle + " 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 + " / Aktennummer [" + resultRows[ i ].ddf10 + "]: Es wurde keine Hauptakte 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;
|
||||
}
|
||||
566
Kleeberg/migration_verknuepfungen_1.groovy
Normal file
566
Kleeberg/migration_verknuepfungen_1.groovy
Normal file
@@ -0,0 +1,566 @@
|
||||
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_verknuepfungen_1.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 sqlQuery = "select top (100) id,unique_id_doc,unique_id_fol,ddf10,ddf3,ddf4,ddf23,ddf17,ddf32 from mig_link_docs_2 where doku_id_target_fol is null and ddf3 is not null and ddf10 like '%DA%' and fehler is null and id < 177869 ";
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
for( int i = 0 ; i <= resultRows.size() - 1 ; i++ )
|
||||
{
|
||||
def dummy_ddf3, dummy_ddf4, dummy_ddf23, dummy_ddf17, dummy_ddf32;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": pruefen, ob folgende Aktenstruktur existiert:" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Unique-ID Dokument : [" + resultRows[ i ].unique_id_doc + "]" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF10 / Aktennummer : [" + resultRows[ i ].ddf10 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf3 ) || ( resultRows[ i ].ddf3 == "null" ) )
|
||||
{
|
||||
dummy_ddf3 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf3 = resultRows[ i ].ddf3;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF03 / Oberregister : [" + dummy_ddf3 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf4 ) || ( resultRows[ i ].ddf4 == "null" ) )
|
||||
{
|
||||
dummy_ddf4 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf4 = resultRows[ i ].ddf4;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF04 / Register : [" + dummy_ddf4 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf23 ) || ( resultRows[ i ].ddf23 == "null" ) )
|
||||
{
|
||||
dummy_ddf23 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf23 = resultRows[ i ].ddf23;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF23 / Unterregister : [" + dummy_ddf23 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf17 ) || ( resultRows[ i ].ddf17 == "null" ) )
|
||||
{
|
||||
dummy_ddf17 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf17 = resultRows[ i ].ddf17;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF17 / 2. Unterregister : [" + dummy_ddf17 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf32 ) || ( resultRows[ i ].ddf32 == "null" ) )
|
||||
{
|
||||
dummy_ddf32 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf32 = resultRows[ i ].ddf32;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF32 / 3. Unterregister : [" + dummy_ddf32 + "]" );
|
||||
|
||||
def typ = resultRows[ i ].ddf10.substring(5, 7);
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": erkannter Typ: " + typ );
|
||||
|
||||
def orakte, rakte, urakte, urakte2, urakte3;
|
||||
|
||||
|
||||
switch ( typ )
|
||||
{
|
||||
case "FI":
|
||||
akte = "AFIBA";
|
||||
orakte = "AFIOR";
|
||||
rakte = "AFIRA";
|
||||
urakte = "AFIUR";
|
||||
urakte2 = "AFIU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "DA":
|
||||
akte = "ADAUR";
|
||||
orakte = "AOREG";
|
||||
rakte = "AREGS";
|
||||
urakte = "AUREG";
|
||||
urakte2 = "AURG2";
|
||||
urakte3 = "AURG3";
|
||||
break;
|
||||
case "ST":
|
||||
akte = "ASTEU";
|
||||
orakte = "ASTOR";
|
||||
rakte = "ASTRA";
|
||||
urakte = "ASTUR";
|
||||
urakte2 = "ASTU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BE":
|
||||
akte = "ABERB";
|
||||
orakte = "ABERO";
|
||||
rakte = "ABERA";
|
||||
urakte = "ABEUR";
|
||||
urakte2 = "ABEU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BP":
|
||||
akte = "ABETR";
|
||||
orakte = "ABEOR";
|
||||
rakte = "ABEPA";
|
||||
urakte = "ABPUR";
|
||||
urakte2 = "ABPU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LO":
|
||||
akte = "ALOJA";
|
||||
orakte = "ALBOR";
|
||||
rakte = "ALBRE";
|
||||
urakte = "ALJUR";
|
||||
urakte2 = "ALJR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LS":
|
||||
akte = "ALBSA";
|
||||
orakte = "ALBSO";
|
||||
rakte = "ALORE";
|
||||
urakte = "ALOUR";
|
||||
urakte2 = "ALBU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "JA":
|
||||
akte = "AJAAA";
|
||||
orakte = "AJAOB";
|
||||
rakte = "AJAAB";
|
||||
urakte = "AJAUR";
|
||||
urakte2 = "AJAU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "RE":
|
||||
akte = "AAURE";
|
||||
orakte = "AAURR";
|
||||
rakte = "AAURA";
|
||||
urakte = "AAURU";
|
||||
urakte2 = "AAUR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def schritt_1 = [ "kue_dokuart": orakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3 ];
|
||||
def schritt_2 = [ "kue_dokuart": rakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4 ];
|
||||
def schritt_3 = [ "kue_dokuart": urakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23 ];
|
||||
def schritt_4 = [ "kue_dokuart": urakte2, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17 ];
|
||||
def schritt_5 = [ "kue_dokuart": urakte3, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17, "dok_dat_feld_32": dummy_ddf32 ];
|
||||
|
||||
def schritte = [ schritt_1, schritt_2, schritt_3, schritt_4, schritt_5 ];
|
||||
|
||||
def gemerkte_doku_id;
|
||||
def lege_akte_an;
|
||||
|
||||
for ( int m = 0; m <= schritte.size() - 1 ; m++ )
|
||||
{
|
||||
|
||||
// Zusammenbauen des Such-Statements:
|
||||
|
||||
def STATEMENT = "select doku_id from firmen_spezifisch where ";
|
||||
def log = "Suche nach folgenden Kriterien : ";
|
||||
def x = 0;
|
||||
def und;
|
||||
def kein_problem = true;
|
||||
lege_akte_an = true;
|
||||
|
||||
schritte[ m ].each { eintrag ->
|
||||
|
||||
//xlog( d3, 3, "Key [" + eintrag.key + "] Value [" + eintrag.value + "]" );
|
||||
if ( x > 0 )
|
||||
{
|
||||
und = " and ";
|
||||
}
|
||||
else
|
||||
{
|
||||
und = "";
|
||||
x = 1;
|
||||
}
|
||||
|
||||
if ( ( eintrag.value == "" ) || ( eintrag.value == null ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
if ( ( eintrag.key == "kue_dokuart" ) && ( eintrag.value == "" ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
STATEMENT = STATEMENT + und + eintrag.key + " = '" + eintrag.value + "' ";
|
||||
log = log + "[" + eintrag.key + "] => [" + eintrag.value + "] ";
|
||||
}
|
||||
|
||||
if ( kein_problem )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + log );
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
def ergebnis = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
|
||||
if ( ergebnis.size() > 0 )
|
||||
{
|
||||
// Akte existiert
|
||||
// Doku-ID merken:
|
||||
gemerkte_doku_id = ergebnis[ 0 ].doku_id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
|
||||
//def updatesql = "update mig_verknuepfung set ziel_dok = '" + ergebnis[ 0 ].doku_id + "' where id = " + resultRows[ i ].id;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert nicht, muss angelegt werden." );
|
||||
|
||||
|
||||
// Akte existiert nicht, muss angelegt werden:
|
||||
Document newDoc = d3.archive.newDocument();
|
||||
//xlog( d3, 2, "Schritte kue_dokuart = [" + schritte[ m ] + "]");
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze Dokumentart [" + schritte[ m ].kue_dokuart + "]" );
|
||||
|
||||
newDoc.type = schritte[ m ].kue_dokuart;
|
||||
|
||||
|
||||
|
||||
newDoc.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
// Mit diesem Statement wird versucht, die Hauptakte zu finden, um von dieser dann Eigenschaftswerte zu lesen. Kann diese Akte nicht gefunden werden, ist das ein Fehlerzustand,
|
||||
// der am Datensatz in der Quelle festgehalten wird.
|
||||
STATEMENT = "select doku_id, dok_dat_feld_25, dok_dat_feld_42, dok_dat_feld_21, dok_dat_feld_2, dok_dat_feld_13, dok_dat_feld_37, dok_dat_feld_1 from firmen_spezifisch where kue_dokuart = '" + akte + "' and dok_dat_feld_10 = '" + resultRows[ i ].ddf10 + "'";
|
||||
|
||||
def erg = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
//xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_1 ) // Mandantnummer
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + schritte[ m ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = schritte[ m ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
|
||||
if ( erg.size() > 0 )
|
||||
{
|
||||
if ( ( erg[ 0 ].dok_dat_feld_1 ) && ( ! schritte[ m ].dok_dat_feld_1 ) )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + erg[ 0 ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = erg[ 0 ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF10 / Aktennummer [" + resultRows[ i ].ddf10 + "]" );
|
||||
newDoc.field[ 10 ] = resultRows[ i ].ddf10;
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_25 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF25 / Geschaeftsfuehrer [" + erg[ 0 ].dok_dat_feld_25 + "]" );
|
||||
newDoc.field[ 25 ] = erg[ 0 ].dok_dat_feld_25;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_42 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF42 / Briefkopf [" + erg[ 0 ].dok_dat_feld_42 + "]" );
|
||||
newDoc.field[ 42 ] = erg[ 0 ].dok_dat_feld_42;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_21 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF21 / Aktenname [" + erg[ 0 ].dok_dat_feld_21 + "]" );
|
||||
newDoc.field[ 21 ] = erg[ 0 ].dok_dat_feld_21;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_2 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF2 / Mandantname [" + erg[ 0 ].dok_dat_feld_2 + "]" );
|
||||
newDoc.field[ 2 ] = erg[ 0 ].dok_dat_feld_2;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_13 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF13 / Mandantgruppennummer [" + erg[ 0 ].dok_dat_feld_13 + "]" );
|
||||
newDoc.field[ 13 ] = erg[ 0 ].dok_dat_feld_13;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_37 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF37 / Mandatsverantwortlicher [" + erg[ 0 ].dok_dat_feld_37 + "]" );
|
||||
newDoc.field[ 37 ] = erg[ 0 ].dok_dat_feld_37;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
lege_akte_an = false;
|
||||
}
|
||||
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_3 ) // Oberregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF3 / Oberregister [" + schritte[ m ].dok_dat_feld_3 + "]" );
|
||||
newDoc.field[ 3 ] = schritte[ m ].dok_dat_feld_3;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_4 ) // Register
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF4 / Register [" + schritte[ m ].dok_dat_feld_4 + "]" );
|
||||
newDoc.field[ 4 ] = schritte[ m ].dok_dat_feld_4;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_23 ) // Unterregister
|
||||
{
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF23 / Unterregister [" + schritte[ m ].dok_dat_feld_23 + "]" );
|
||||
newDoc.field[ 23 ] = schritte[ m ].dok_dat_feld_23;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_17 ) // 2. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF17 / 2. Unterregister [" + schritte[ m ].dok_dat_feld_17 + "]" );
|
||||
newDoc.field[ 17 ] = schritte[ m ].dok_dat_feld_17;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_32 ) // 3. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF32 / 3. Unterregister [" + schritte[ m ].dok_dat_feld_32 + "]" );
|
||||
newDoc.field[ 32 ] = schritte[ m ].dok_dat_feld_32;
|
||||
}
|
||||
|
||||
def fehler = false;
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
if ( lege_akte_an )
|
||||
{
|
||||
try
|
||||
{
|
||||
newDoc = d3.archive.importDocument( newDoc );
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte konnte nicht erzeugt werden: " + e.message );
|
||||
fehler = true;
|
||||
}
|
||||
|
||||
if ( ! fehler )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Doku-ID der erzeugten Akte : [" + newDoc.id + "]" );
|
||||
gemerkte_doku_id = newDoc.id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Hauptakte wurde nicht gefunden => Akte wurde nicht erzeugt." );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte wurde nicht erzeugt / Debug-Modus eingeschaltet." );
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":****************************" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gemerkte_doku_id )
|
||||
{
|
||||
|
||||
def USTATEMENT = "update mig_link_docs_2 set doku_id_target_fol = '" + gemerkte_doku_id + "' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze gemerkte Doku-ID [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! lege_akte_an )
|
||||
{
|
||||
def USTATEMENT = "update mig_link_docs_2 set fehler = 'Die Hauptakte existiert nicht.' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":*******************************************************" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
566
Kleeberg/migration_verknuepfungen_2.groovy
Normal file
566
Kleeberg/migration_verknuepfungen_2.groovy
Normal file
@@ -0,0 +1,566 @@
|
||||
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_verknuepfungen_2.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 sqlQuery = "select top (100) id,unique_id_doc,unique_id_fol,ddf10,ddf3,ddf4,ddf23,ddf17,ddf32 from mig_link_docs_2 where doku_id_target_fol is null and ddf3 is not null and ddf10 like '%DA%' and fehler is null and id >= 177869 and id < 613985 ";
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
for( int i = 0 ; i <= resultRows.size() - 1 ; i++ )
|
||||
{
|
||||
def dummy_ddf3, dummy_ddf4, dummy_ddf23, dummy_ddf17, dummy_ddf32;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": pruefen, ob folgende Aktenstruktur existiert:" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Unique-ID Dokument : [" + resultRows[ i ].unique_id_doc + "]" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF10 / Aktennummer : [" + resultRows[ i ].ddf10 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf3 ) || ( resultRows[ i ].ddf3 == "null" ) )
|
||||
{
|
||||
dummy_ddf3 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf3 = resultRows[ i ].ddf3;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF03 / Oberregister : [" + dummy_ddf3 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf4 ) || ( resultRows[ i ].ddf4 == "null" ) )
|
||||
{
|
||||
dummy_ddf4 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf4 = resultRows[ i ].ddf4;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF04 / Register : [" + dummy_ddf4 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf23 ) || ( resultRows[ i ].ddf23 == "null" ) )
|
||||
{
|
||||
dummy_ddf23 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf23 = resultRows[ i ].ddf23;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF23 / Unterregister : [" + dummy_ddf23 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf17 ) || ( resultRows[ i ].ddf17 == "null" ) )
|
||||
{
|
||||
dummy_ddf17 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf17 = resultRows[ i ].ddf17;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF17 / 2. Unterregister : [" + dummy_ddf17 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf32 ) || ( resultRows[ i ].ddf32 == "null" ) )
|
||||
{
|
||||
dummy_ddf32 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf32 = resultRows[ i ].ddf32;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF32 / 3. Unterregister : [" + dummy_ddf32 + "]" );
|
||||
|
||||
def typ = resultRows[ i ].ddf10.substring(5, 7);
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": erkannter Typ: " + typ );
|
||||
|
||||
def orakte, rakte, urakte, urakte2, urakte3;
|
||||
|
||||
|
||||
switch ( typ )
|
||||
{
|
||||
case "FI":
|
||||
akte = "AFIBA";
|
||||
orakte = "AFIOR";
|
||||
rakte = "AFIRA";
|
||||
urakte = "AFIUR";
|
||||
urakte2 = "AFIU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "DA":
|
||||
akte = "ADAUR";
|
||||
orakte = "AOREG";
|
||||
rakte = "AREGS";
|
||||
urakte = "AUREG";
|
||||
urakte2 = "AURG2";
|
||||
urakte3 = "AURG3";
|
||||
break;
|
||||
case "ST":
|
||||
akte = "ASTEU";
|
||||
orakte = "ASTOR";
|
||||
rakte = "ASTRA";
|
||||
urakte = "ASTUR";
|
||||
urakte2 = "ASTU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BE":
|
||||
akte = "ABERB";
|
||||
orakte = "ABERO";
|
||||
rakte = "ABERA";
|
||||
urakte = "ABEUR";
|
||||
urakte2 = "ABEU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BP":
|
||||
akte = "ABETR";
|
||||
orakte = "ABEOR";
|
||||
rakte = "ABEPA";
|
||||
urakte = "ABPUR";
|
||||
urakte2 = "ABPU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LO":
|
||||
akte = "ALOJA";
|
||||
orakte = "ALBOR";
|
||||
rakte = "ALBRE";
|
||||
urakte = "ALJUR";
|
||||
urakte2 = "ALJR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LS":
|
||||
akte = "ALBSA";
|
||||
orakte = "ALBSO";
|
||||
rakte = "ALORE";
|
||||
urakte = "ALOUR";
|
||||
urakte2 = "ALBU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "JA":
|
||||
akte = "AJAAA";
|
||||
orakte = "AJAOB";
|
||||
rakte = "AJAAB";
|
||||
urakte = "AJAUR";
|
||||
urakte2 = "AJAU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "RE":
|
||||
akte = "AAURE";
|
||||
orakte = "AAURR";
|
||||
rakte = "AAURA";
|
||||
urakte = "AAURU";
|
||||
urakte2 = "AAUR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def schritt_1 = [ "kue_dokuart": orakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3 ];
|
||||
def schritt_2 = [ "kue_dokuart": rakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4 ];
|
||||
def schritt_3 = [ "kue_dokuart": urakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23 ];
|
||||
def schritt_4 = [ "kue_dokuart": urakte2, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17 ];
|
||||
def schritt_5 = [ "kue_dokuart": urakte3, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17, "dok_dat_feld_32": dummy_ddf32 ];
|
||||
|
||||
def schritte = [ schritt_1, schritt_2, schritt_3, schritt_4, schritt_5 ];
|
||||
|
||||
def gemerkte_doku_id;
|
||||
def lege_akte_an;
|
||||
|
||||
for ( int m = 0; m <= schritte.size() - 1 ; m++ )
|
||||
{
|
||||
|
||||
// Zusammenbauen des Such-Statements:
|
||||
|
||||
def STATEMENT = "select doku_id from firmen_spezifisch where ";
|
||||
def log = "Suche nach folgenden Kriterien : ";
|
||||
def x = 0;
|
||||
def und;
|
||||
def kein_problem = true;
|
||||
lege_akte_an = true;
|
||||
|
||||
schritte[ m ].each { eintrag ->
|
||||
|
||||
//xlog( d3, 3, "Key [" + eintrag.key + "] Value [" + eintrag.value + "]" );
|
||||
if ( x > 0 )
|
||||
{
|
||||
und = " and ";
|
||||
}
|
||||
else
|
||||
{
|
||||
und = "";
|
||||
x = 1;
|
||||
}
|
||||
|
||||
if ( ( eintrag.value == "" ) || ( eintrag.value == null ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
if ( ( eintrag.key == "kue_dokuart" ) && ( eintrag.value == "" ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
STATEMENT = STATEMENT + und + eintrag.key + " = '" + eintrag.value + "' ";
|
||||
log = log + "[" + eintrag.key + "] => [" + eintrag.value + "] ";
|
||||
}
|
||||
|
||||
if ( kein_problem )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + log );
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
def ergebnis = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
|
||||
if ( ergebnis.size() > 0 )
|
||||
{
|
||||
// Akte existiert
|
||||
// Doku-ID merken:
|
||||
gemerkte_doku_id = ergebnis[ 0 ].doku_id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
|
||||
//def updatesql = "update mig_verknuepfung set ziel_dok = '" + ergebnis[ 0 ].doku_id + "' where id = " + resultRows[ i ].id;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert nicht, muss angelegt werden." );
|
||||
|
||||
|
||||
// Akte existiert nicht, muss angelegt werden:
|
||||
Document newDoc = d3.archive.newDocument();
|
||||
//xlog( d3, 2, "Schritte kue_dokuart = [" + schritte[ m ] + "]");
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze Dokumentart [" + schritte[ m ].kue_dokuart + "]" );
|
||||
|
||||
newDoc.type = schritte[ m ].kue_dokuart;
|
||||
|
||||
|
||||
|
||||
newDoc.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
// Mit diesem Statement wird versucht, die Hauptakte zu finden, um von dieser dann Eigenschaftswerte zu lesen. Kann diese Akte nicht gefunden werden, ist das ein Fehlerzustand,
|
||||
// der am Datensatz in der Quelle festgehalten wird.
|
||||
STATEMENT = "select doku_id, dok_dat_feld_25, dok_dat_feld_42, dok_dat_feld_21, dok_dat_feld_2, dok_dat_feld_13, dok_dat_feld_37, dok_dat_feld_1 from firmen_spezifisch where kue_dokuart = '" + akte + "' and dok_dat_feld_10 = '" + resultRows[ i ].ddf10 + "'";
|
||||
|
||||
def erg = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
//xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_1 ) // Mandantnummer
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + schritte[ m ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = schritte[ m ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
|
||||
if ( erg.size() > 0 )
|
||||
{
|
||||
if ( ( erg[ 0 ].dok_dat_feld_1 ) && ( ! schritte[ m ].dok_dat_feld_1 ) )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + erg[ 0 ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = erg[ 0 ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF10 / Aktennummer [" + resultRows[ i ].ddf10 + "]" );
|
||||
newDoc.field[ 10 ] = resultRows[ i ].ddf10;
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_25 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF25 / Geschaeftsfuehrer [" + erg[ 0 ].dok_dat_feld_25 + "]" );
|
||||
newDoc.field[ 25 ] = erg[ 0 ].dok_dat_feld_25;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_42 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF42 / Briefkopf [" + erg[ 0 ].dok_dat_feld_42 + "]" );
|
||||
newDoc.field[ 42 ] = erg[ 0 ].dok_dat_feld_42;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_21 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF21 / Aktenname [" + erg[ 0 ].dok_dat_feld_21 + "]" );
|
||||
newDoc.field[ 21 ] = erg[ 0 ].dok_dat_feld_21;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_2 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF2 / Mandantname [" + erg[ 0 ].dok_dat_feld_2 + "]" );
|
||||
newDoc.field[ 2 ] = erg[ 0 ].dok_dat_feld_2;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_13 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF13 / Mandantgruppennummer [" + erg[ 0 ].dok_dat_feld_13 + "]" );
|
||||
newDoc.field[ 13 ] = erg[ 0 ].dok_dat_feld_13;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_37 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF37 / Mandatsverantwortlicher [" + erg[ 0 ].dok_dat_feld_37 + "]" );
|
||||
newDoc.field[ 37 ] = erg[ 0 ].dok_dat_feld_37;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
lege_akte_an = false;
|
||||
}
|
||||
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_3 ) // Oberregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF3 / Oberregister [" + schritte[ m ].dok_dat_feld_3 + "]" );
|
||||
newDoc.field[ 3 ] = schritte[ m ].dok_dat_feld_3;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_4 ) // Register
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF4 / Register [" + schritte[ m ].dok_dat_feld_4 + "]" );
|
||||
newDoc.field[ 4 ] = schritte[ m ].dok_dat_feld_4;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_23 ) // Unterregister
|
||||
{
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF23 / Unterregister [" + schritte[ m ].dok_dat_feld_23 + "]" );
|
||||
newDoc.field[ 23 ] = schritte[ m ].dok_dat_feld_23;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_17 ) // 2. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF17 / 2. Unterregister [" + schritte[ m ].dok_dat_feld_17 + "]" );
|
||||
newDoc.field[ 17 ] = schritte[ m ].dok_dat_feld_17;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_32 ) // 3. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF32 / 3. Unterregister [" + schritte[ m ].dok_dat_feld_32 + "]" );
|
||||
newDoc.field[ 32 ] = schritte[ m ].dok_dat_feld_32;
|
||||
}
|
||||
|
||||
def fehler = false;
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
if ( lege_akte_an )
|
||||
{
|
||||
try
|
||||
{
|
||||
newDoc = d3.archive.importDocument( newDoc );
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte konnte nicht erzeugt werden: " + e.message );
|
||||
fehler = true;
|
||||
}
|
||||
|
||||
if ( ! fehler )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Doku-ID der erzeugten Akte : [" + newDoc.id + "]" );
|
||||
gemerkte_doku_id = newDoc.id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Hauptakte wurde nicht gefunden => Akte wurde nicht erzeugt." );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte wurde nicht erzeugt / Debug-Modus eingeschaltet." );
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":****************************" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gemerkte_doku_id )
|
||||
{
|
||||
|
||||
def USTATEMENT = "update mig_link_docs_2 set doku_id_target_fol = '" + gemerkte_doku_id + "' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze gemerkte Doku-ID [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! lege_akte_an )
|
||||
{
|
||||
def USTATEMENT = "update mig_link_docs_2 set fehler = 'Die Hauptakte existiert nicht.' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":*******************************************************" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
566
Kleeberg/migration_verknuepfungen_3.groovy
Normal file
566
Kleeberg/migration_verknuepfungen_3.groovy
Normal file
@@ -0,0 +1,566 @@
|
||||
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_verknuepfungen_3.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 sqlQuery = "select top (100) id,unique_id_doc,unique_id_fol,ddf10,ddf3,ddf4,ddf23,ddf17,ddf32 from mig_link_docs_2 where doku_id_target_fol is null and ddf3 is not null and ddf10 like '%DA%' and fehler is null and id >= 613985 and id < 1423048 ";
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
for( int i = 0 ; i <= resultRows.size() - 1 ; i++ )
|
||||
{
|
||||
def dummy_ddf3, dummy_ddf4, dummy_ddf23, dummy_ddf17, dummy_ddf32;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": pruefen, ob folgende Aktenstruktur existiert:" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Unique-ID Dokument : [" + resultRows[ i ].unique_id_doc + "]" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF10 / Aktennummer : [" + resultRows[ i ].ddf10 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf3 ) || ( resultRows[ i ].ddf3 == "null" ) )
|
||||
{
|
||||
dummy_ddf3 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf3 = resultRows[ i ].ddf3;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF03 / Oberregister : [" + dummy_ddf3 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf4 ) || ( resultRows[ i ].ddf4 == "null" ) )
|
||||
{
|
||||
dummy_ddf4 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf4 = resultRows[ i ].ddf4;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF04 / Register : [" + dummy_ddf4 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf23 ) || ( resultRows[ i ].ddf23 == "null" ) )
|
||||
{
|
||||
dummy_ddf23 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf23 = resultRows[ i ].ddf23;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF23 / Unterregister : [" + dummy_ddf23 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf17 ) || ( resultRows[ i ].ddf17 == "null" ) )
|
||||
{
|
||||
dummy_ddf17 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf17 = resultRows[ i ].ddf17;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF17 / 2. Unterregister : [" + dummy_ddf17 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf32 ) || ( resultRows[ i ].ddf32 == "null" ) )
|
||||
{
|
||||
dummy_ddf32 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf32 = resultRows[ i ].ddf32;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF32 / 3. Unterregister : [" + dummy_ddf32 + "]" );
|
||||
|
||||
def typ = resultRows[ i ].ddf10.substring(5, 7);
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": erkannter Typ: " + typ );
|
||||
|
||||
def orakte, rakte, urakte, urakte2, urakte3;
|
||||
|
||||
|
||||
switch ( typ )
|
||||
{
|
||||
case "FI":
|
||||
akte = "AFIBA";
|
||||
orakte = "AFIOR";
|
||||
rakte = "AFIRA";
|
||||
urakte = "AFIUR";
|
||||
urakte2 = "AFIU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "DA":
|
||||
akte = "ADAUR";
|
||||
orakte = "AOREG";
|
||||
rakte = "AREGS";
|
||||
urakte = "AUREG";
|
||||
urakte2 = "AURG2";
|
||||
urakte3 = "AURG3";
|
||||
break;
|
||||
case "ST":
|
||||
akte = "ASTEU";
|
||||
orakte = "ASTOR";
|
||||
rakte = "ASTRA";
|
||||
urakte = "ASTUR";
|
||||
urakte2 = "ASTU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BE":
|
||||
akte = "ABERB";
|
||||
orakte = "ABERO";
|
||||
rakte = "ABERA";
|
||||
urakte = "ABEUR";
|
||||
urakte2 = "ABEU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BP":
|
||||
akte = "ABETR";
|
||||
orakte = "ABEOR";
|
||||
rakte = "ABEPA";
|
||||
urakte = "ABPUR";
|
||||
urakte2 = "ABPU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LO":
|
||||
akte = "ALOJA";
|
||||
orakte = "ALBOR";
|
||||
rakte = "ALBRE";
|
||||
urakte = "ALJUR";
|
||||
urakte2 = "ALJR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LS":
|
||||
akte = "ALBSA";
|
||||
orakte = "ALBSO";
|
||||
rakte = "ALORE";
|
||||
urakte = "ALOUR";
|
||||
urakte2 = "ALBU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "JA":
|
||||
akte = "AJAAA";
|
||||
orakte = "AJAOB";
|
||||
rakte = "AJAAB";
|
||||
urakte = "AJAUR";
|
||||
urakte2 = "AJAU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "RE":
|
||||
akte = "AAURE";
|
||||
orakte = "AAURR";
|
||||
rakte = "AAURA";
|
||||
urakte = "AAURU";
|
||||
urakte2 = "AAUR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def schritt_1 = [ "kue_dokuart": orakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3 ];
|
||||
def schritt_2 = [ "kue_dokuart": rakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4 ];
|
||||
def schritt_3 = [ "kue_dokuart": urakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23 ];
|
||||
def schritt_4 = [ "kue_dokuart": urakte2, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17 ];
|
||||
def schritt_5 = [ "kue_dokuart": urakte3, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17, "dok_dat_feld_32": dummy_ddf32 ];
|
||||
|
||||
def schritte = [ schritt_1, schritt_2, schritt_3, schritt_4, schritt_5 ];
|
||||
|
||||
def gemerkte_doku_id;
|
||||
def lege_akte_an;
|
||||
|
||||
for ( int m = 0; m <= schritte.size() - 1 ; m++ )
|
||||
{
|
||||
|
||||
// Zusammenbauen des Such-Statements:
|
||||
|
||||
def STATEMENT = "select doku_id from firmen_spezifisch where ";
|
||||
def log = "Suche nach folgenden Kriterien : ";
|
||||
def x = 0;
|
||||
def und;
|
||||
def kein_problem = true;
|
||||
lege_akte_an = true;
|
||||
|
||||
schritte[ m ].each { eintrag ->
|
||||
|
||||
//xlog( d3, 3, "Key [" + eintrag.key + "] Value [" + eintrag.value + "]" );
|
||||
if ( x > 0 )
|
||||
{
|
||||
und = " and ";
|
||||
}
|
||||
else
|
||||
{
|
||||
und = "";
|
||||
x = 1;
|
||||
}
|
||||
|
||||
if ( ( eintrag.value == "" ) || ( eintrag.value == null ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
if ( ( eintrag.key == "kue_dokuart" ) && ( eintrag.value == "" ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
STATEMENT = STATEMENT + und + eintrag.key + " = '" + eintrag.value + "' ";
|
||||
log = log + "[" + eintrag.key + "] => [" + eintrag.value + "] ";
|
||||
}
|
||||
|
||||
if ( kein_problem )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + log );
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
def ergebnis = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
|
||||
if ( ergebnis.size() > 0 )
|
||||
{
|
||||
// Akte existiert
|
||||
// Doku-ID merken:
|
||||
gemerkte_doku_id = ergebnis[ 0 ].doku_id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
|
||||
//def updatesql = "update mig_verknuepfung set ziel_dok = '" + ergebnis[ 0 ].doku_id + "' where id = " + resultRows[ i ].id;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert nicht, muss angelegt werden." );
|
||||
|
||||
|
||||
// Akte existiert nicht, muss angelegt werden:
|
||||
Document newDoc = d3.archive.newDocument();
|
||||
//xlog( d3, 2, "Schritte kue_dokuart = [" + schritte[ m ] + "]");
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze Dokumentart [" + schritte[ m ].kue_dokuart + "]" );
|
||||
|
||||
newDoc.type = schritte[ m ].kue_dokuart;
|
||||
|
||||
|
||||
|
||||
newDoc.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
// Mit diesem Statement wird versucht, die Hauptakte zu finden, um von dieser dann Eigenschaftswerte zu lesen. Kann diese Akte nicht gefunden werden, ist das ein Fehlerzustand,
|
||||
// der am Datensatz in der Quelle festgehalten wird.
|
||||
STATEMENT = "select doku_id, dok_dat_feld_25, dok_dat_feld_42, dok_dat_feld_21, dok_dat_feld_2, dok_dat_feld_13, dok_dat_feld_37, dok_dat_feld_1 from firmen_spezifisch where kue_dokuart = '" + akte + "' and dok_dat_feld_10 = '" + resultRows[ i ].ddf10 + "'";
|
||||
|
||||
def erg = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
//xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_1 ) // Mandantnummer
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + schritte[ m ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = schritte[ m ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
|
||||
if ( erg.size() > 0 )
|
||||
{
|
||||
if ( ( erg[ 0 ].dok_dat_feld_1 ) && ( ! schritte[ m ].dok_dat_feld_1 ) )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + erg[ 0 ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = erg[ 0 ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF10 / Aktennummer [" + resultRows[ i ].ddf10 + "]" );
|
||||
newDoc.field[ 10 ] = resultRows[ i ].ddf10;
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_25 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF25 / Geschaeftsfuehrer [" + erg[ 0 ].dok_dat_feld_25 + "]" );
|
||||
newDoc.field[ 25 ] = erg[ 0 ].dok_dat_feld_25;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_42 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF42 / Briefkopf [" + erg[ 0 ].dok_dat_feld_42 + "]" );
|
||||
newDoc.field[ 42 ] = erg[ 0 ].dok_dat_feld_42;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_21 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF21 / Aktenname [" + erg[ 0 ].dok_dat_feld_21 + "]" );
|
||||
newDoc.field[ 21 ] = erg[ 0 ].dok_dat_feld_21;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_2 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF2 / Mandantname [" + erg[ 0 ].dok_dat_feld_2 + "]" );
|
||||
newDoc.field[ 2 ] = erg[ 0 ].dok_dat_feld_2;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_13 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF13 / Mandantgruppennummer [" + erg[ 0 ].dok_dat_feld_13 + "]" );
|
||||
newDoc.field[ 13 ] = erg[ 0 ].dok_dat_feld_13;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_37 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF37 / Mandatsverantwortlicher [" + erg[ 0 ].dok_dat_feld_37 + "]" );
|
||||
newDoc.field[ 37 ] = erg[ 0 ].dok_dat_feld_37;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
lege_akte_an = false;
|
||||
}
|
||||
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_3 ) // Oberregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF3 / Oberregister [" + schritte[ m ].dok_dat_feld_3 + "]" );
|
||||
newDoc.field[ 3 ] = schritte[ m ].dok_dat_feld_3;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_4 ) // Register
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF4 / Register [" + schritte[ m ].dok_dat_feld_4 + "]" );
|
||||
newDoc.field[ 4 ] = schritte[ m ].dok_dat_feld_4;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_23 ) // Unterregister
|
||||
{
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF23 / Unterregister [" + schritte[ m ].dok_dat_feld_23 + "]" );
|
||||
newDoc.field[ 23 ] = schritte[ m ].dok_dat_feld_23;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_17 ) // 2. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF17 / 2. Unterregister [" + schritte[ m ].dok_dat_feld_17 + "]" );
|
||||
newDoc.field[ 17 ] = schritte[ m ].dok_dat_feld_17;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_32 ) // 3. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF32 / 3. Unterregister [" + schritte[ m ].dok_dat_feld_32 + "]" );
|
||||
newDoc.field[ 32 ] = schritte[ m ].dok_dat_feld_32;
|
||||
}
|
||||
|
||||
def fehler = false;
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
if ( lege_akte_an )
|
||||
{
|
||||
try
|
||||
{
|
||||
newDoc = d3.archive.importDocument( newDoc );
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte konnte nicht erzeugt werden: " + e.message );
|
||||
fehler = true;
|
||||
}
|
||||
|
||||
if ( ! fehler )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Doku-ID der erzeugten Akte : [" + newDoc.id + "]" );
|
||||
gemerkte_doku_id = newDoc.id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Hauptakte wurde nicht gefunden => Akte wurde nicht erzeugt." );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte wurde nicht erzeugt / Debug-Modus eingeschaltet." );
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":****************************" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gemerkte_doku_id )
|
||||
{
|
||||
|
||||
def USTATEMENT = "update mig_link_docs_2 set doku_id_target_fol = '" + gemerkte_doku_id + "' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze gemerkte Doku-ID [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! lege_akte_an )
|
||||
{
|
||||
def USTATEMENT = "update mig_link_docs_2 set fehler = 'Die Hauptakte existiert nicht.' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":*******************************************************" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
566
Kleeberg/migration_verknuepfungen_4.groovy
Normal file
566
Kleeberg/migration_verknuepfungen_4.groovy
Normal file
@@ -0,0 +1,566 @@
|
||||
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_verknuepfungen_4.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 sqlQuery = "select top (100) id,unique_id_doc,unique_id_fol,ddf10,ddf3,ddf4,ddf23,ddf17,ddf32 from mig_link_docs_2 where doku_id_target_fol is null and ddf3 is not null and ddf10 like '%DA%' and fehler is null and id >= 1423048 ";
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "************************************************" );
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
for( int i = 0 ; i <= resultRows.size() - 1 ; i++ )
|
||||
{
|
||||
def dummy_ddf3, dummy_ddf4, dummy_ddf23, dummy_ddf17, dummy_ddf32;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": pruefen, ob folgende Aktenstruktur existiert:" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Unique-ID Dokument : [" + resultRows[ i ].unique_id_doc + "]" );
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF10 / Aktennummer : [" + resultRows[ i ].ddf10 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf3 ) || ( resultRows[ i ].ddf3 == "null" ) )
|
||||
{
|
||||
dummy_ddf3 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf3 = resultRows[ i ].ddf3;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF03 / Oberregister : [" + dummy_ddf3 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf4 ) || ( resultRows[ i ].ddf4 == "null" ) )
|
||||
{
|
||||
dummy_ddf4 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf4 = resultRows[ i ].ddf4;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF04 / Register : [" + dummy_ddf4 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf23 ) || ( resultRows[ i ].ddf23 == "null" ) )
|
||||
{
|
||||
dummy_ddf23 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf23 = resultRows[ i ].ddf23;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF23 / Unterregister : [" + dummy_ddf23 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf17 ) || ( resultRows[ i ].ddf17 == "null" ) )
|
||||
{
|
||||
dummy_ddf17 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf17 = resultRows[ i ].ddf17;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF17 / 2. Unterregister : [" + dummy_ddf17 + "]" );
|
||||
|
||||
if ( ( ! resultRows[ i ].ddf32 ) || ( resultRows[ i ].ddf32 == "null" ) )
|
||||
{
|
||||
dummy_ddf32 = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
dummy_ddf32 = resultRows[ i ].ddf32;
|
||||
}
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": DDF32 / 3. Unterregister : [" + dummy_ddf32 + "]" );
|
||||
|
||||
def typ = resultRows[ i ].ddf10.substring(5, 7);
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": erkannter Typ: " + typ );
|
||||
|
||||
def orakte, rakte, urakte, urakte2, urakte3;
|
||||
|
||||
|
||||
switch ( typ )
|
||||
{
|
||||
case "FI":
|
||||
akte = "AFIBA";
|
||||
orakte = "AFIOR";
|
||||
rakte = "AFIRA";
|
||||
urakte = "AFIUR";
|
||||
urakte2 = "AFIU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "DA":
|
||||
akte = "ADAUR";
|
||||
orakte = "AOREG";
|
||||
rakte = "AREGS";
|
||||
urakte = "AUREG";
|
||||
urakte2 = "AURG2";
|
||||
urakte3 = "AURG3";
|
||||
break;
|
||||
case "ST":
|
||||
akte = "ASTEU";
|
||||
orakte = "ASTOR";
|
||||
rakte = "ASTRA";
|
||||
urakte = "ASTUR";
|
||||
urakte2 = "ASTU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BE":
|
||||
akte = "ABERB";
|
||||
orakte = "ABERO";
|
||||
rakte = "ABERA";
|
||||
urakte = "ABEUR";
|
||||
urakte2 = "ABEU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "BP":
|
||||
akte = "ABETR";
|
||||
orakte = "ABEOR";
|
||||
rakte = "ABEPA";
|
||||
urakte = "ABPUR";
|
||||
urakte2 = "ABPU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LO":
|
||||
akte = "ALOJA";
|
||||
orakte = "ALBOR";
|
||||
rakte = "ALBRE";
|
||||
urakte = "ALJUR";
|
||||
urakte2 = "ALJR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "LS":
|
||||
akte = "ALBSA";
|
||||
orakte = "ALBSO";
|
||||
rakte = "ALORE";
|
||||
urakte = "ALOUR";
|
||||
urakte2 = "ALBU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "JA":
|
||||
akte = "AJAAA";
|
||||
orakte = "AJAOB";
|
||||
rakte = "AJAAB";
|
||||
urakte = "AJAUR";
|
||||
urakte2 = "AJAU2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
case "RE":
|
||||
akte = "AAURE";
|
||||
orakte = "AAURR";
|
||||
rakte = "AAURA";
|
||||
urakte = "AAURU";
|
||||
urakte2 = "AAUR2";
|
||||
urakte3 = "";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def schritt_1 = [ "kue_dokuart": orakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3 ];
|
||||
def schritt_2 = [ "kue_dokuart": rakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4 ];
|
||||
def schritt_3 = [ "kue_dokuart": urakte, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23 ];
|
||||
def schritt_4 = [ "kue_dokuart": urakte2, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17 ];
|
||||
def schritt_5 = [ "kue_dokuart": urakte3, "dok_dat_feld_10": resultRows[ i ].ddf10, "dok_dat_feld_3": dummy_ddf3, "dok_dat_feld_4": dummy_ddf4, "dok_dat_feld_23": dummy_ddf23, "dok_dat_feld_17": dummy_ddf17, "dok_dat_feld_32": dummy_ddf32 ];
|
||||
|
||||
def schritte = [ schritt_1, schritt_2, schritt_3, schritt_4, schritt_5 ];
|
||||
|
||||
def gemerkte_doku_id;
|
||||
def lege_akte_an;
|
||||
|
||||
for ( int m = 0; m <= schritte.size() - 1 ; m++ )
|
||||
{
|
||||
|
||||
// Zusammenbauen des Such-Statements:
|
||||
|
||||
def STATEMENT = "select doku_id from firmen_spezifisch where ";
|
||||
def log = "Suche nach folgenden Kriterien : ";
|
||||
def x = 0;
|
||||
def und;
|
||||
def kein_problem = true;
|
||||
lege_akte_an = true;
|
||||
|
||||
schritte[ m ].each { eintrag ->
|
||||
|
||||
//xlog( d3, 3, "Key [" + eintrag.key + "] Value [" + eintrag.value + "]" );
|
||||
if ( x > 0 )
|
||||
{
|
||||
und = " and ";
|
||||
}
|
||||
else
|
||||
{
|
||||
und = "";
|
||||
x = 1;
|
||||
}
|
||||
|
||||
if ( ( eintrag.value == "" ) || ( eintrag.value == null ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
if ( ( eintrag.key == "kue_dokuart" ) && ( eintrag.value == "" ) )
|
||||
{
|
||||
kein_problem = false;
|
||||
}
|
||||
|
||||
STATEMENT = STATEMENT + und + eintrag.key + " = '" + eintrag.value + "' ";
|
||||
log = log + "[" + eintrag.key + "] => [" + eintrag.value + "] ";
|
||||
}
|
||||
|
||||
if ( kein_problem )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + log );
|
||||
|
||||
xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
def ergebnis = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
|
||||
if ( ergebnis.size() > 0 )
|
||||
{
|
||||
// Akte existiert
|
||||
// Doku-ID merken:
|
||||
gemerkte_doku_id = ergebnis[ 0 ].doku_id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
|
||||
//def updatesql = "update mig_verknuepfung set ziel_dok = '" + ergebnis[ 0 ].doku_id + "' where id = " + resultRows[ i ].id;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert nicht, muss angelegt werden." );
|
||||
|
||||
|
||||
// Akte existiert nicht, muss angelegt werden:
|
||||
Document newDoc = d3.archive.newDocument();
|
||||
//xlog( d3, 2, "Schritte kue_dokuart = [" + schritte[ m ] + "]");
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze Dokumentart [" + schritte[ m ].kue_dokuart + "]" );
|
||||
|
||||
newDoc.type = schritte[ m ].kue_dokuart;
|
||||
|
||||
|
||||
|
||||
newDoc.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//newDoc.editor = "dvelop";
|
||||
|
||||
// Mit diesem Statement wird versucht, die Hauptakte zu finden, um von dieser dann Eigenschaftswerte zu lesen. Kann diese Akte nicht gefunden werden, ist das ein Fehlerzustand,
|
||||
// der am Datensatz in der Quelle festgehalten wird.
|
||||
STATEMENT = "select doku_id, dok_dat_feld_25, dok_dat_feld_42, dok_dat_feld_21, dok_dat_feld_2, dok_dat_feld_13, dok_dat_feld_37, dok_dat_feld_1 from firmen_spezifisch where kue_dokuart = '" + akte + "' and dok_dat_feld_10 = '" + resultRows[ i ].ddf10 + "'";
|
||||
|
||||
def erg = d3.sql.executeAndGet( (String) STATEMENT );
|
||||
//xlog( d3, 5, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": " + STATEMENT );
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_1 ) // Mandantnummer
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + schritte[ m ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = schritte[ m ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
|
||||
if ( erg.size() > 0 )
|
||||
{
|
||||
if ( ( erg[ 0 ].dok_dat_feld_1 ) && ( ! schritte[ m ].dok_dat_feld_1 ) )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF1 / Mandantnummer [" + erg[ 0 ].dok_dat_feld_1 + "]" );
|
||||
newDoc.field[ 1 ] = erg[ 0 ].dok_dat_feld_1;
|
||||
}
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF10 / Aktennummer [" + resultRows[ i ].ddf10 + "]" );
|
||||
newDoc.field[ 10 ] = resultRows[ i ].ddf10;
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_25 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF25 / Geschaeftsfuehrer [" + erg[ 0 ].dok_dat_feld_25 + "]" );
|
||||
newDoc.field[ 25 ] = erg[ 0 ].dok_dat_feld_25;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_42 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF42 / Briefkopf [" + erg[ 0 ].dok_dat_feld_42 + "]" );
|
||||
newDoc.field[ 42 ] = erg[ 0 ].dok_dat_feld_42;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_21 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF21 / Aktenname [" + erg[ 0 ].dok_dat_feld_21 + "]" );
|
||||
newDoc.field[ 21 ] = erg[ 0 ].dok_dat_feld_21;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_2 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF2 / Mandantname [" + erg[ 0 ].dok_dat_feld_2 + "]" );
|
||||
newDoc.field[ 2 ] = erg[ 0 ].dok_dat_feld_2;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_13 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF13 / Mandantgruppennummer [" + erg[ 0 ].dok_dat_feld_13 + "]" );
|
||||
newDoc.field[ 13 ] = erg[ 0 ].dok_dat_feld_13;
|
||||
}
|
||||
|
||||
if ( erg[ 0 ].dok_dat_feld_37 )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF37 / Mandatsverantwortlicher [" + erg[ 0 ].dok_dat_feld_37 + "]" );
|
||||
newDoc.field[ 37 ] = erg[ 0 ].dok_dat_feld_37;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
lege_akte_an = false;
|
||||
}
|
||||
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_3 ) // Oberregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF3 / Oberregister [" + schritte[ m ].dok_dat_feld_3 + "]" );
|
||||
newDoc.field[ 3 ] = schritte[ m ].dok_dat_feld_3;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_4 ) // Register
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF4 / Register [" + schritte[ m ].dok_dat_feld_4 + "]" );
|
||||
newDoc.field[ 4 ] = schritte[ m ].dok_dat_feld_4;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_23 ) // Unterregister
|
||||
{
|
||||
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF23 / Unterregister [" + schritte[ m ].dok_dat_feld_23 + "]" );
|
||||
newDoc.field[ 23 ] = schritte[ m ].dok_dat_feld_23;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_17 ) // 2. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF17 / 2. Unterregister [" + schritte[ m ].dok_dat_feld_17 + "]" );
|
||||
newDoc.field[ 17 ] = schritte[ m ].dok_dat_feld_17;
|
||||
}
|
||||
|
||||
if ( schritte[ m ].dok_dat_feld_32 ) // 3. Unterregister
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Setze DDF32 / 3. Unterregister [" + schritte[ m ].dok_dat_feld_32 + "]" );
|
||||
newDoc.field[ 32 ] = schritte[ m ].dok_dat_feld_32;
|
||||
}
|
||||
|
||||
def fehler = false;
|
||||
|
||||
if ( debug == 0 )
|
||||
{
|
||||
if ( lege_akte_an )
|
||||
{
|
||||
try
|
||||
{
|
||||
newDoc = d3.archive.importDocument( newDoc );
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte konnte nicht erzeugt werden: " + e.message );
|
||||
fehler = true;
|
||||
}
|
||||
|
||||
if ( ! fehler )
|
||||
{
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Doku-ID der erzeugten Akte : [" + newDoc.id + "]" );
|
||||
gemerkte_doku_id = newDoc.id;
|
||||
xlog( d3, 4, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte existiert, gemerkte Doku-ID: [" + gemerkte_doku_id + "]" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Hauptakte wurde nicht gefunden => Akte wurde nicht erzeugt." );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Akte wurde nicht erzeugt / Debug-Modus eingeschaltet." );
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":****************************" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gemerkte_doku_id )
|
||||
{
|
||||
|
||||
def USTATEMENT = "update mig_link_docs_2 set doku_id_target_fol = '" + gemerkte_doku_id + "' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze gemerkte Doku-ID [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, [" + gemerkte_doku_id + "] fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! lege_akte_an )
|
||||
{
|
||||
def USTATEMENT = "update mig_link_docs_2 set fehler = 'Die Hauptakte existiert nicht.' where id = '" + resultRows[ i ].id + "'";
|
||||
if ( debug == 0 )
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": setze Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id );
|
||||
d3.sql.executeAndGet( (String) USTATEMENT );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ": Debug-Modus eingeschaltet, Fehler 'Die Hauptakte existiert nicht.' fuer ID " + resultRows[ i ].id + " wurde nicht gesetzt.");
|
||||
}
|
||||
}
|
||||
|
||||
xlog( d3, 3, resultRows[ i ].ddf10 + " / " + resultRows[ i ].id + ":*******************************************************" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
181
Kleeberg/migration_verknuepfungen_schneller.groovy
Normal file
181
Kleeberg/migration_verknuepfungen_schneller.groovy
Normal file
@@ -0,0 +1,181 @@
|
||||
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_verknuepfungen_schneller.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 distinct m.ddf10, f.doku_id from mig_link_docs_2 m , firmen_spezifisch f where f.dok_dat_feld_10 = m.ddf10 and m.ddf10 like '[0-9][0-9][0-9][0-9][0-9][B][E][0-9][0-9][0-9][0-9][0-9][0-9]' and f.kue_dokuart = 'ABERB' "; //and m.ddf10 = '13292BE000400'";
|
||||
|
||||
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++ )
|
||||
{
|
||||
def STATEMENT = "update mig_link_docs_2 set doku_id_target_fol = '" + resultRows[ i ].doku_id + "' where ddf10 = '" + resultRows[ i ].ddf10 + "' and doku_id_target_fol is null";
|
||||
|
||||
xlog( d3, 4, "Nr. " + i + ": " + STATEMENT );
|
||||
|
||||
def erg = d3.sql.execute( (String) STATEMENT );
|
||||
xlog( d3, 4, "Nr. " + i + ": " + erg + " Datensaetze wurden aktualisiert." );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user