Änderungen bzgl. Unlink von Dokumenten

This commit is contained in:
2024-08-29 12:41:03 +02:00
parent f3a3c3b011
commit af3b6fb343

View File

@@ -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 = <Mandant-Nr> + 'RE000100' ..." );
d3.log.info( " => <Mandant-Nr> = <" + doc.field[ 1 ] + "> ");
if ( doc.field[ 1 ] )
{
doc.field[ 10 ] = doc.field[ 1 ] + "RE000100";
d3.log.info( " => <Aktennummer> = <" + 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 // Allgemeines START
///////////////////////////////////////// /////////////////////////////////////////
@@ -1599,7 +1627,7 @@ public class D3Hooks
if ( ! doc.field[ 21 ] ) if ( ! doc.field[ 21 ] )
{ {
// Es wurde kein Aktenname angegeben // 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 ); 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 ) public int hookValidateImportEntry10( D3Interface d3, User user, DocumentType docType, Document doc, String nextcall )
{ {
d3.log.info("START | hookValidateImportEntry10 "); d3.log.info("START | hookValidateImportEntry10 ");
d3.log.info("ENDE | hookValidateImportEntry10 "); d3.log.info("ENDE | hookValidateImportEntry10 ");
return 0; return 0;
} }
@@ -2744,12 +2771,13 @@ 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
//////////////////////////// ////////////////////////////
return 0; return 0;
} }
@@ -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;
}