From af3b6fb34380a69304043ed1608e04fd4053ea2b Mon Sep 17 00:00:00 2001 From: Christian Albers Date: Thu, 29 Aug 2024 12:41:03 +0200 Subject: [PATCH] =?UTF-8?q?=C3=84nderungen=20bzgl.=20Unlink=20von=20Dokume?= =?UTF-8?q?nten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kleeberg/hooks/30_hooks.groovy | 129 +++++++++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 5 deletions(-) diff --git a/Kleeberg/hooks/30_hooks.groovy b/Kleeberg/hooks/30_hooks.groovy index 8f3a506..a535cf9 100644 --- a/Kleeberg/hooks/30_hooks.groovy +++ b/Kleeberg/hooks/30_hooks.groovy @@ -127,6 +127,34 @@ public class D3Hooks ////////////////////////////////////// + ///////////////////////////////////////// + // Setzen der Aktennummer bei content-crawler-Ablagen in die Dokumentart Debitorendokumente START + // siehe E-Mail von Nils Küthe/d.velop an Hrn. Schlicht/Kleeberg vom 28.05.2024 + ///////////////////////////////////////// + + if ( ( docTypeShort.id == "DDEBD" ) && ( user.id == "dvelop-cra" ) ) + { + d3.log.info( " => Ablage in Debitorendokumente durch den User dvelop-crawler." ); + d3.log.info( " => Setze Aktennummer = + 'RE000100' ..." ); + d3.log.info( " => = <" + doc.field[ 1 ] + "> "); + if ( doc.field[ 1 ] ) + { + doc.field[ 10 ] = doc.field[ 1 ] + "RE000100"; + d3.log.info( " => = <" + doc.field[ 10 ] + "> "); + } + else + { + d3.log.warn( "Die Mandant-Nr. ist leer. Kann daher Aktennummer nicht setzen." ); + } + } + + + ///////////////////////////////////////// + // Setzen der Aktennummer bei content-crawler-Ablagen in die Dokumentart Debitorendokumente ENDE + ///////////////////////////////////////// + + + ///////////////////////////////////////// // Allgemeines START ///////////////////////////////////////// @@ -1599,7 +1627,7 @@ public class D3Hooks if ( ! doc.field[ 21 ] ) { // Es wurde kein Aktenname angegeben - sqlQuery = "select dok_dat_feld_21 from firmen_spezifisch where dok_dat_feld_10 = '" + doc.field[10] + "' and kue_dokuart in ( 'ADAUR', 'ABERB', 'ABETR', 'AFIBA', 'AJAAA', 'AKRED', 'ALOJA', 'ALBSA', 'ASTEU' )"; + sqlQuery = "select dok_dat_feld_21 from firmen_spezifisch where dok_dat_feld_10 = '" + doc.field[10] + "' and kue_dokuart in ( 'ADAUR', 'AAURE', 'ABERB', 'ABETR', 'AFIBA', 'AJAAA', 'AKRED', 'ALOJA', 'ALBSA', 'ASTEU' )"; resultRows = d3.sql.executeAndGet( (String) sqlQuery ); @@ -2405,7 +2433,6 @@ public class D3Hooks public int hookValidateImportEntry10( D3Interface d3, User user, DocumentType docType, Document doc, String nextcall ) { d3.log.info("START | hookValidateImportEntry10 "); - d3.log.info("ENDE | hookValidateImportEntry10 "); return 0; } @@ -2744,9 +2771,10 @@ public class D3Hooks } //////////////////////////// - // Vererben von Berechtigungen auf Hauptakte (Dauerakte, Beratungsakte etc.) auf untergeordnete Akten + Dokumente START + // Vererben von Berechtigungen von einer Hauptakte (Dauerakte, Beratungsakte etc.) auf untergeordnete Akten + Dokumente ENDE //////////////////////////// - + + @@ -2947,7 +2975,98 @@ public class D3Hooks } - + @Entrypoint( entrypoint = "hook_unlink_exit_10" ) + public int hookUnlinkExit10(D3Interface d3, Document docFather, Document docChild, Integer unlinkErrorCode, Integer errorCode) { + d3.log.error("START | hookUnlinkExit10 "); + + //////////////////////////// + // Löschen von Berechtigungseinträgen bei Dokumenten, wenn diese aus Akten entfernt werden START + //////////////////////////// + + + switch ( docChild.getType().id ) + { + case "DBERA": + case "DBETR": + case "DDAUE": + case "DDEBD": + case "DFIBU": + case "DABSC": + case "DLOHN": + case "DLSTD": + case "DSTEU": + def ueberdoks = d3.call.link_get_parents( docChild.id, "Master" ); + + def ziel_dok_ids = ""; + + ueberdoks.each + { + xlog( d3, 4, " Kind: " + docChild.id + " 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, "Ziel-Dok_IDs: " + ziel_dok_ids ); + + def STATEMENT = "select 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.id ); + + // 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 i = 1 ; i <= Integer.valueOf( d3.config.value( "CUR_60ER_FIELD_NR" ) ); i++ ) + { + currentDoc.field[ 60 ][ i ] = ""; // Mandantennamen + currentDoc.field[ 61 ][ i ] = ""; // Mandantennummern + currentDoc.field[ 62 ][ i ] = ""; // Mandantengruppennummern + currentDoc.field[ 63 ][ i ] = ""; // Aktennamen + currentDoc.field[ 64 ][ i ] = ""; // 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 + } + + currentDoc.updateAttributes( "Master" ); + + } + + break; + + + + + + + + + + } + + //////////////////////////// + // Löschen von Berechtigungseinträgen bei Dokumenten, wenn diese aus Akten entfernt werden ENDE + //////////////////////////// + + + + + d3.log.error("ENDE | hookUnlinkExit10 "); + return 0; + }