diff --git a/Bayernoil/Personalakte/10_hooks.groovy b/Bayernoil/Personalakte/10_hooks.groovy new file mode 100644 index 0000000..eb3fca4 --- /dev/null +++ b/Bayernoil/Personalakte/10_hooks.groovy @@ -0,0 +1,84 @@ +import com.dvelop.d3.server.Document +import com.dvelop.d3.server.Entrypoint +import com.dvelop.d3.server.User +import com.dvelop.d3.server.core.D3Interface +import com.dvelop.d3.server.DocumentTypeAttribute; +import com.dvelop.d3.server.DocumentType; +import com.dvelop.d3.server.RepositoryField; + +class Hook { + + @Entrypoint( entrypoint = "hook_insert_entry_10" ) + public int hookInsertEntry10(D3Interface d3, User user, DocumentType docType, Document doc) + { + d3.log.info("START | hookInsertEntry10 "); + + //////////////////////////////////////////////////// + // Validierung Personalnummer mit Mitarbeiternamen calb @ d.velop 2025.12.12 START + + String Namensvalidierung = "DPERS|APERS|APREG"; + + if ( Namensvalidierung.contains( docType.id() ) ) + { + if ( doc.field[ 1 ] ) + { + if ( doc.field[ 1 ].indexOf( "|" ) > 0 ) + { + def werte = doc.field[ 1 ].tokenize( " | " ); + + if ( werte[ 0 ].length() > 0 ) + { + doc.field[ 1 ] = werte[ 0 ]; + } + + if ( werte[ 1 ].length() > 0 ) + { + doc.field[ 3 ] = werte[ 1 ]; + } + + if ( werte[ 2 ].length() > 0 ) + { + doc.field[ 2 ] = werte[ 2 ]; + } + } + } + } + + d3.log.info( "Validierung Personalnummer / Mitarbeiternamen erfolgt."); + + // Validierung Personalnummer mit Mitarbeiternamen calb @ d.velop 2025.12.12 ENDE + //////////////////////////////////////////////////// + + + + + //////////////////////////////////////////////////// + // Validierung Register / Dokumenttyp calb @ d.velop 2025.12.12 START + + String Registervalidierung = "DPERS"; + + if ( Registervalidierung.contains( docType.id() ) ) + { + if ( doc.field[ 16 ] ) + { + def sqlQuery = "select distinct dok_dat_feld_20 from firmen_spezifisch where kue_dokuart = 'AADM' and dok_dat_feld_21 = '" + doc.field[ 16 ] + "' "; + + def resultrows = d3.sql.executeAndGet( sqlQuery ); + + if ( resultrows.size() > 0 ) + { + doc.field[ 15 ] = resultrows[ 0 ].dok_dat_feld_20; + } + } + } + + d3.log.info( "Validierung Register / Dokumenttyp erfolgt."); + + // Validierung Register / Dokumenttyp calb @ d.velop 2025.12.12 ENDE + //////////////////////////////////////////////////// + + d3.log.info("ENDE | hookInsertEntry10 "); + return 0; + } + +} \ No newline at end of file diff --git a/Bayernoil/Personalakte/20_value_sets.groovy b/Bayernoil/Personalakte/20_value_sets.groovy new file mode 100644 index 0000000..91cd49f --- /dev/null +++ b/Bayernoil/Personalakte/20_value_sets.groovy @@ -0,0 +1,57 @@ +import com.dvelop.d3.server.core.D3Interface; +import com.dvelop.d3.server.Document; +import com.dvelop.d3.server.User; +import com.dvelop.d3.server.DocumentType; +import com.dvelop.d3.server.ValueSet; +import com.dvelop.d3.server.RepositoryField; + + + +public class ValueSetsCombined +{ + + @ValueSet( entrypoint = "PERS_Dokumenttyp" ) + def PERS_Dokumenttyp( D3Interface d3, RepositoryField reposField, User user, DocumentType docType, int rowNo, int validate, Document doc ) + { + def where = ""; + if ( doc.field[ 15 ] ) + { + where = " and dok_dat_feld_20 = '" + doc.field[ 15 ] + "' " + } + + def sqlQuery = "select distinct dok_dat_feld_21 DDF from firmen_spezifisch where kue_dokuart = 'AADM' " + where + " order by dok_dat_feld_21 "; + + def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); + + if ( resultRows.size() > 0 ) + { + reposField.provideValuesForValueSet( resultRows.collect{ it.DDF } ); + } + } + + @ValueSet( entrypoint = "PERS_Register" ) + def PERS_Register( D3Interface d3, RepositoryField reposField, User user, DocumentType docType, int rowNo, int validate, Document doc ) + { + def sqlQuery = "select distinct dok_dat_feld_20 DDF from firmen_spezifisch where kue_dokuart = 'AADM'" + " order by dok_dat_feld_20 "; + + def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); + + if ( resultRows.size() > 0 ) + { + reposField.provideValuesForValueSet( resultRows.collect{ it.DDF } ); + } + } + + @ValueSet( entrypoint = "PERS_PersonalNr" ) + def PERS_PersonalNr( D3Interface d3, RepositoryField reposField, User user, DocumentType docType, int rowNo, int validate, Document doc ) + { + def sqlQuery = "select dok_dat_feld_1 || ' | ' || dok_dat_feld_3 || ' | ' || dok_dat_feld_2 mitarbeiter from firmen_spezifisch where kue_dokuart = 'APERS' order by mitarbeiter "; + + def resultRows = d3.sql.executeAndGet( (String) sqlQuery ); + + if ( resultRows.size() > 0 ) + { + reposField.provideValuesForValueSet( resultRows.collect{ it.mitarbeiter } ); + } + } +} \ No newline at end of file