296 lines
7.7 KiB
Groovy
296 lines
7.7 KiB
Groovy
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 {
|
|
|
|
// ValPasswdExit10
|
|
@Entrypoint(entrypoint="hook_val_passwd_exit_10")
|
|
public int hook_val_passwd_exit_10(D3Interface d3, int errorCode, User user, String appLanguage, String appVersion) {
|
|
|
|
d3.log.info("ValPasswdExit10: START ...");
|
|
|
|
// ERV: Restriction-Set "ERV-Kostenstellen"
|
|
d3.log.info("ValPasswdExit10: KST: user.id: '" + user.id + "'");
|
|
d3.log.info("ValPasswdExit10: KST: user.email: '" + user.email + "'");
|
|
|
|
def d3_email = user.email;
|
|
def d3_username = user.id;
|
|
|
|
def sqlQuery = "";
|
|
|
|
List<Object> varArrayKST;
|
|
def resultRowsKST;
|
|
def resultAnzKST = 0;
|
|
|
|
def resSetKostenstellen = "";
|
|
def result = 0;
|
|
|
|
|
|
// DEBUG:
|
|
if (user.id == "ext_dvelo2") {
|
|
d3_email = "ext_dvelo2@test.de"
|
|
}
|
|
|
|
d3.log.info("ValPasswdExit10: KST: d3_username: '" + d3_username + "'");
|
|
d3.log.info("ValPasswdExit10: KST: d3_email: '" + d3_email + "'");
|
|
d3.log.info("ValPasswdExit10: KST: user.id: '" + user.id + "'");
|
|
|
|
// Benutzer in Tabelle 'erv_rights_kostenstellen" suchen und Kostenstellen auslesen
|
|
sqlQuery = """
|
|
SELECT kostenstelle as db_kostenstelle
|
|
FROM dbo.erv_rights_kostenstellen
|
|
WHERE email = ?
|
|
""";
|
|
|
|
varArrayKST = [d3_email];
|
|
resultRowsKST = d3.sql.executeAndGet(sqlQuery, varArrayKST);
|
|
resultAnzKST = resultRowsKST.size();
|
|
|
|
if (resultAnzKST > 0) {
|
|
|
|
resultRowsKST.each {kst ->
|
|
|
|
if (resSetKostenstellen == "") {
|
|
resSetKostenstellen = kst.db_kostenstelle;
|
|
} else {
|
|
resSetKostenstellen = resSetKostenstellen + ";" + kst.db_kostenstelle;
|
|
}
|
|
|
|
}
|
|
|
|
// Restriction-Set "ERV_Kostenstellen" schreiben
|
|
|
|
d3.log.info("ValPasswdExit10: KST: resSetKostenstellen: '" + resSetKostenstellen + "'");
|
|
|
|
// d3.log.info("ValPasswdExit10: KST: : Restriktionsmenge 'ERV_Kostenstellen' fuer User '" + user.realName + " [" + d3_email + "]' mit dem Filter '" + resSetKostenstellen + "' erstellt.");
|
|
|
|
if (resSetKostenstellen) {
|
|
|
|
result = d3.call.d3set_add_filter("Master", "", "ERV_Kostenstellen", d3_username, resSetKostenstellen, true)
|
|
if (result != 0) {
|
|
d3.log.error("ValPasswdExit10: KST: ERROR '" + result + "' in 'd3set_add_filter' | SET: 'ERV_Kostenstellen' | USER: '" + d3_email + "' | FILTER: '" + resSetKostenstellen + "'");
|
|
|
|
}
|
|
else {
|
|
d3.log.info("ValPasswdExit10: KST: Restriktionsmenge 'ERV_Kostenstellen' fuer User '" + user.realName + " [" + d3_email + "]' mit dem Filter '" + resSetKostenstellen + "' erstellt.");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
d3.log.info("ValPasswdExit10: STOP ...");
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
@Entrypoint( entrypoint = 'hook_validate_update_entry_10' )
|
|
public int hookValidateUpdateEntry10( D3Interface d3, User user, DocumentType docType, Document doc, String nextcall ){
|
|
d3.log.info("START | hookValidateUpdateEntry10 ");
|
|
validateValues(d3, docType, doc);
|
|
d3.log.info("ENDE | hookValidateUpdateEntry10 ");
|
|
return 0;
|
|
}
|
|
|
|
@Entrypoint( entrypoint = "hook_insert_entry_10" )
|
|
public int hookInsertEntry10(D3Interface d3, User user, DocumentType docType, Document doc)
|
|
{
|
|
d3.log.info("START | hookInsertEntry10 ");
|
|
validateValues(d3, docType, doc);
|
|
|
|
def dokuart_liste = "DIE01;DIE02;DIE03;DIE04;DIE05;DIE06;DIE07;DIE08;DNV01;DNV02;DNV03;DNV04;DNV05;DNV06;DNV07;DNV08;DFE01;DFE02;DFE03;DQM01";
|
|
|
|
if ( dokuart_liste.contains( docType.id() ) )
|
|
{
|
|
doc.status = Document.DocStatus.DOC_STAT_RELEASE;
|
|
}
|
|
|
|
|
|
d3.log.info("ENDE | hookInsertEntry10 ");
|
|
return 0;
|
|
}
|
|
|
|
public void validateValues(D3Interface d3, DocumentType docType, Document doc){
|
|
////////////////////////////////////////
|
|
// Validierung Kundennummer calb/d.velop 2025.12.08 START
|
|
|
|
if ( isRepoIdInDocType( d3, docType.id(), 109 ) )
|
|
{
|
|
if ( doc.field[ 2 ] )
|
|
{
|
|
if ( doc.field[ 2 ].indexOf( "|" ) > 0 )
|
|
{
|
|
def werte = doc.field[ 2 ].tokenize( "|" );
|
|
|
|
// Kundennummer
|
|
if ( werte[ 0 ].length() > 0 )
|
|
{
|
|
doc.field[ 2 ] = werte[ 0 ].trim();
|
|
}
|
|
|
|
// Kundenname
|
|
if ( werte[ 1 ].length() > 0 )
|
|
{
|
|
doc.field[ 1 ] = werte[ 1 ].trim();
|
|
}
|
|
|
|
// Land
|
|
if ( werte[ 2 ].length() > 0 )
|
|
{
|
|
doc.field[ 4 ] = werte[ 2 ].trim();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validierung Kundennummer ENDE
|
|
////////////////////////////////////////
|
|
|
|
////////////////////////////////////////
|
|
// Validierung Artikelnummer calb/d.velop 2025.12.08 START
|
|
|
|
if ( isRepoIdInDocType( d3, docType.id(), 119 ) )
|
|
{
|
|
if ( doc.field[ 12 ] )
|
|
{
|
|
if ( doc.field[ 12 ].indexOf( "|" ) > 0 )
|
|
{
|
|
def werte = doc.field[ 12 ].tokenize( "|" );
|
|
|
|
// Artikelnummer
|
|
if ( werte[ 0 ].length() > 0 )
|
|
{
|
|
doc.field[ 12 ] = werte[ 0 ].trim();
|
|
}
|
|
|
|
// Artikelname
|
|
if ( werte[ 1 ].length() > 0 )
|
|
{
|
|
doc.field[ 13 ] = werte[ 1 ].trim();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validierung Artikelnummer ENDE
|
|
////////////////////////////////////////
|
|
|
|
////////////////////////////////////////
|
|
// Validierung Mandant calb/d.velop 2025.12.08 START
|
|
|
|
if ( isRepoIdInDocType( d3, docType.id(), 122 ) )
|
|
{
|
|
if ( doc.field[ 15 ] )
|
|
{
|
|
if ( doc.field[ 15 ].indexOf( "|" ) > 0 )
|
|
{
|
|
def werte = doc.field[ 15 ].tokenize( "|" );
|
|
|
|
// Mandant
|
|
if ( werte[ 0 ].length() > 0 )
|
|
{
|
|
doc.field[ 15 ] = werte[ 0 ].trim();
|
|
}
|
|
|
|
// Mandantenname
|
|
if ( werte[ 1 ].length() > 0 )
|
|
{
|
|
doc.field[ 19 ] = werte[ 1 ].trim();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validierung Mandant ENDE
|
|
////////////////////////////////////////
|
|
|
|
////////////////////////////////////////
|
|
// Validierung Vertreter calb/d.velop 2025.12.08 START
|
|
|
|
if ( isRepoIdInDocType( d3, docType.id(), 136 ) )
|
|
{
|
|
if ( doc.field[ 32 ] )
|
|
{
|
|
if ( doc.field[ 32 ].indexOf( "|" ) > 0 )
|
|
{
|
|
def werte = doc.field[ 32 ].tokenize( "|" );
|
|
|
|
// Artikelnummer
|
|
if ( werte[ 0 ].length() > 0 )
|
|
{
|
|
doc.field[ 32 ] = werte[ 0 ].trim();
|
|
}
|
|
|
|
// Artikelname
|
|
if ( werte[ 1 ].length() > 0 )
|
|
{
|
|
doc.field[ 35 ] = werte[ 1 ].trim();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validierung Vertreter ENDE
|
|
////////////////////////////////////////
|
|
}
|
|
|
|
private boolean isRepoIdInDocType( D3Interface d3, String docTypeShort, int repoId )
|
|
{
|
|
boolean isRepoIdInDocType = false;
|
|
try
|
|
{
|
|
Document docTemp = d3.archive.newDocument();
|
|
docTemp.setType( docTypeShort );
|
|
DocumentType docType = docTemp.getType();
|
|
if ( docTemp != null && docType != null )
|
|
{
|
|
for ( int i = 1; i <= 89; i++ )
|
|
{
|
|
try
|
|
{
|
|
DocumentTypeAttribute docTypeAttrib = docTemp.getType().getField().getAt( i );
|
|
if ( docTypeAttrib != null )
|
|
{
|
|
RepositoryField repoField = docTypeAttrib.getRepositoryField();
|
|
if ( repoField != null )
|
|
{
|
|
String currRepoId = repoField.getId();
|
|
if ( currRepoId != null )
|
|
{
|
|
int currRepoIdInt = Integer.valueOf( currRepoId );
|
|
if ( currRepoIdInt == repoId )
|
|
{
|
|
isRepoIdInDocType = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch ( Exception eField )
|
|
{
|
|
//nix
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
// wieder nix
|
|
}
|
|
|
|
//d3.log.error( "Nachricht: " + isRepoIdInDocType );
|
|
|
|
return isRepoIdInDocType;
|
|
}
|
|
|
|
|
|
|
|
} |