Bewital hinzugefügt
This commit is contained in:
285
Bewital/20_hooks.groovy
Normal file
285
Bewital/20_hooks.groovy
Normal file
@@ -0,0 +1,285 @@
|
||||
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_insert_entry_10" )
|
||||
public int hookInsertEntry10(D3Interface d3, User user, DocumentType docType, Document doc)
|
||||
{
|
||||
d3.log.info("START | hookInsertEntry10 ");
|
||||
|
||||
////////////////////////////////////////
|
||||
// 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 ];
|
||||
}
|
||||
|
||||
// Kundenname
|
||||
if ( werte[ 1 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 1 ] = werte[ 1 ];
|
||||
}
|
||||
|
||||
// Land
|
||||
if ( werte[ 2 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 4 ] = werte[ 2 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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 ];
|
||||
}
|
||||
|
||||
// Artikelname
|
||||
if ( werte[ 1 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 13 ] = werte[ 1 ];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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( " | " );
|
||||
|
||||
// Artikelnummer
|
||||
if ( werte[ 0 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 15 ] = werte[ 0 ];
|
||||
}
|
||||
|
||||
// Artikelname
|
||||
if ( werte[ 1 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 19 ] = werte[ 1 ];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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 ];
|
||||
}
|
||||
|
||||
// Artikelname
|
||||
if ( werte[ 1 ].length() > 0 )
|
||||
{
|
||||
doc.field[ 35 ] = werte[ 1 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Validierung Vertreter ENDE
|
||||
////////////////////////////////////////
|
||||
|
||||
|
||||
d3.log.info("ENDE | hookInsertEntry10 ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
443
Bewital/30_sets.groovy
Normal file
443
Bewital/30_sets.groovy
Normal file
@@ -0,0 +1,443 @@
|
||||
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.ValueSetTranslation;
|
||||
import com.dvelop.d3.server.RepositoryField;
|
||||
import com.dvelop.d3.server.UserGroup
|
||||
import com.dvelop.d3.server.UserOrUserGroup
|
||||
import com.dvelop.d3.server.Translation;
|
||||
|
||||
public class Wertemenge
|
||||
{
|
||||
|
||||
@ValueSet(entrypoint="AbteilungenVertragsmanagement")
|
||||
def getAbteilungVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
|
||||
{
|
||||
|
||||
d3.log.info("Start getAbteilungVertragsmanagement");
|
||||
def mandant = attribContext.field[65][row_no];
|
||||
def wm
|
||||
if(mandant == "BEWITAL agri GmbH & Co. KG")
|
||||
{
|
||||
wm = 11
|
||||
}
|
||||
else if(mandant == "BEWITAL petfood GmbH & Co. KG")
|
||||
{
|
||||
wm = 12
|
||||
}
|
||||
else if(mandant == "BEWITAL Holding GmbH & Co. KG")
|
||||
{
|
||||
wm = 18
|
||||
}
|
||||
else if(mandant == "BEWITAL Petfood Vertrieb Ost GmbH & Co.KG")
|
||||
{
|
||||
wm = 19
|
||||
}
|
||||
else if(mandant == "Lipox GmbH & Co. KG")
|
||||
{
|
||||
wm = 20
|
||||
}
|
||||
|
||||
|
||||
def sqlParams = [wm];
|
||||
def h_sqlquery = "SELECT value_char_allowed AS Wert FROM doc_field_values WHERE predef_value_id = ?"
|
||||
def resultRows = null;
|
||||
if(mandant != null && mandant != "")
|
||||
{
|
||||
resultRows = d3.sql.executeAndGet( h_sqlquery , sqlParams);
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.Wert } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.info("Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.info("Keine Mandant ausgewaehlt.");
|
||||
}
|
||||
d3.log.info("Ende getAbteilungVertragsmanagement");
|
||||
}
|
||||
|
||||
|
||||
@ValueSet(entrypoint="KategorieZuVertragstyp")
|
||||
def getKategorieVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
|
||||
{
|
||||
|
||||
d3.log.info("Start getKategorieVM");
|
||||
def vertragstyp = attribContext.field[5];
|
||||
d3.log.info("Vertragstyp: $vertragstyp-")
|
||||
def wm
|
||||
if(vertragstyp == "Handelvertretung")
|
||||
{
|
||||
wm = 21
|
||||
}
|
||||
else if(vertragstyp.equals("Großhandelsvertrag DE."))
|
||||
{
|
||||
wm = 22
|
||||
}
|
||||
else if(vertragstyp.equals("Großhandelsvertrag Int."))
|
||||
{
|
||||
wm = 23
|
||||
}
|
||||
else if(vertragstyp == "Versicherungen")
|
||||
{
|
||||
wm = 24
|
||||
}
|
||||
else if(vertragstyp == "Markenrecht")
|
||||
{
|
||||
wm = 25
|
||||
}
|
||||
else if(vertragstyp == "Produktregistrierung")
|
||||
{
|
||||
wm = 26
|
||||
}
|
||||
else if(vertragstyp == "Vertrieb")
|
||||
{
|
||||
wm = 27
|
||||
}
|
||||
else if(vertragstyp == "Mietvertrag")
|
||||
{
|
||||
wm = 28
|
||||
}
|
||||
else if(vertragstyp == "Kaufvertrag")
|
||||
{
|
||||
wm = 29
|
||||
}
|
||||
else if(vertragstyp == "Wartungsvertrag")
|
||||
{
|
||||
wm = 30
|
||||
}
|
||||
else if(vertragstyp == "Dienstleistungsvertrag")
|
||||
{
|
||||
wm = 31
|
||||
}
|
||||
else if(vertragstyp == "Pachtvertrag/Erbbaurecht")
|
||||
{
|
||||
wm = 32
|
||||
}
|
||||
else if(vertragstyp == "Zertifizierungsvertrag")
|
||||
{
|
||||
wm = 33
|
||||
}
|
||||
else if(vertragstyp == "Lizenzvertrag")
|
||||
{
|
||||
wm = 34
|
||||
}
|
||||
else if(vertragstyp == "Listungsvertrag")
|
||||
{
|
||||
wm = 35
|
||||
}
|
||||
else if(vertragstyp == "Systemvertrag")
|
||||
{
|
||||
wm = 36
|
||||
}
|
||||
else if(vertragstyp == "Siegelnutzungsvertrag")
|
||||
{
|
||||
wm = 37
|
||||
}
|
||||
else if(vertragstyp == "Geheimhaltungsvereinbarung")
|
||||
{
|
||||
wm = 38
|
||||
}
|
||||
else if(vertragstyp == "Sponsoring/Werbung")
|
||||
{
|
||||
wm = 39
|
||||
}
|
||||
else if(vertragstyp == "Kreditvertrag")
|
||||
{
|
||||
wm = 40
|
||||
}
|
||||
else if(vertragstyp == "Lieferantenvertrag")
|
||||
{
|
||||
wm = 41
|
||||
}
|
||||
else if(vertragstyp == "Auftragsdatenverarbeitung")
|
||||
{
|
||||
wm = 42
|
||||
}
|
||||
else if(vertragstyp == "Bau-/Werkvertrag")
|
||||
{
|
||||
wm = 43
|
||||
}
|
||||
else if(vertragstyp == "Energieversorgung")
|
||||
{
|
||||
wm = 44
|
||||
}
|
||||
else if(vertragstyp == "Mitgliedschaften")
|
||||
{
|
||||
wm = 45
|
||||
}
|
||||
else if(vertragstyp == "Verpflichtungsvertrag")
|
||||
{
|
||||
wm = 46
|
||||
}
|
||||
else if(vertragstyp == "Sonstiges/Mischvertrag")
|
||||
{
|
||||
wm = 47
|
||||
}
|
||||
else if(vertragstyp == "Gesellschaftsvertrag")
|
||||
{
|
||||
wm = 48
|
||||
}
|
||||
else if(vertragstyp == "Migration")
|
||||
{
|
||||
wm = 50
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("Es konnte keine Vertragstyp gefunden werden.")
|
||||
}
|
||||
|
||||
def sqlParams = [wm];
|
||||
def h_sqlquery = "SELECT value_char_allowed AS Wert FROM doc_field_values WHERE predef_value_id = ?"
|
||||
def resultRows = null;
|
||||
if(vertragstyp != null && vertragstyp != "")
|
||||
{
|
||||
resultRows = d3.sql.executeAndGet( h_sqlquery , sqlParams);
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.Wert } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.info("Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
repoField.provideValuesForValueSet( "Bitte zuerst einen Mandant wählen." );
|
||||
}
|
||||
d3.log.info("Ende getAbteilungVertragsmanagement");
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="getReadAccessVM")
|
||||
def getReadAccessVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
|
||||
{
|
||||
d3.log.info("Start getReasAccessVM");
|
||||
d3.getArchive().removeTranslationFromCache("getReadAccessVM", new Locale("de"));
|
||||
def userGroup = d3.archive.getUserGroup("VM_Vererbt");
|
||||
|
||||
d3.log.info( "Show group information for: " + userGroup.name );
|
||||
def userList = [];
|
||||
userGroup.getMembers(UserGroup.MemberType.RECURSIVE).each { userOrGroup ->
|
||||
try
|
||||
{
|
||||
userList.add(userOrGroup.getUser().getEmail() )
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
d3.log.error("Fehler: Beim Auslesen der E-Mail Adresse des Benutzers ist es zu einem Fehler gekommen. " + ex)
|
||||
}
|
||||
}
|
||||
|
||||
if( userList.size() > 0 )
|
||||
{
|
||||
repoField.provideValuesForValueSet( userList );
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSetTranslation(entrypoint="getReadAccessVM")
|
||||
def getReadAccessVMTranslated(D3Interface d3, Translation transl)
|
||||
{
|
||||
d3.log.info("getReasAccessVM translated WM starts");
|
||||
def userGroup = d3.archive.getUserGroup("VM_Vererbt");
|
||||
userGroup.getMembers(UserGroup.MemberType.RECURSIVE).each { userOrGroup ->
|
||||
try
|
||||
{
|
||||
transl.set(userOrGroup.getUser().getEmail(), userOrGroup.defaultName);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
d3.log.error("Fehler: Beim Auslesen der Übersetzen des Benutzernamen." + ex)
|
||||
}
|
||||
}
|
||||
d3.log.info("getReasAccessVM translated WM starts");
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// Wertemengen für die Filer-Ablösung calb/d.velop 2025.12.08 START
|
||||
|
||||
@ValueSet(entrypoint="WM_Auftragsnummer")
|
||||
def WM_Auftragsnummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Auftragsnummer");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def where = "";
|
||||
|
||||
if ( doc.field[ 2 ] )
|
||||
{
|
||||
if ( doc.field[ 2 ].indexOf( "|" ) > 0 )
|
||||
{
|
||||
def werte = doc.field[ 2 ].tokenize( "|" );
|
||||
|
||||
if ( werte[ 0 ].length() > 0 )
|
||||
{
|
||||
where = " where customer_no = '" + werte[ 0 ].trim() + "'";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
where = " where customer_no = '" + doc.field[ 2 ] + "'";
|
||||
}
|
||||
}
|
||||
|
||||
def sqlquery = "SELECT distinct order_no from bw_customer_order " + where;
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.order_no } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Auftragsnummer: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Kundennummer")
|
||||
def WM_Kundennummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Kundennummer");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct customer_no + ' | ' + customer_name + ' | ' + customer_country as liste from bw_customer_data";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Kundennummer: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Artikelnummer")
|
||||
def WM_Artikelnummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Artikelnummer");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct article_no + ' | ' + article_description as liste from bw_article_data";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Artikelnummer: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Marke")
|
||||
def WM_Marke(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Marke");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct brand as liste from bw_brand";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Marke: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Sortiment")
|
||||
def WM_Sortiment(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Sortiment");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct assortment as liste from bw_brand";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Sortiment: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Mandant")
|
||||
def WM_Mandant(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Mandant");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct company_no + ' | ' + company_name as liste from bw_company";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Mandant: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
@ValueSet(entrypoint="WM_Vertreter")
|
||||
def WM_Vertreter(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
|
||||
{
|
||||
d3.log.info("Start WM_Vertreter");
|
||||
|
||||
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
|
||||
|
||||
def sqlquery = "SELECT distinct representative_no + ' | ' + representative_name as liste from bw_representative";
|
||||
|
||||
def resultRows = null;
|
||||
resultRows = sql.rows( sqlquery );
|
||||
|
||||
if(resultRows != null && resultRows.size() > 0)
|
||||
{
|
||||
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
|
||||
}
|
||||
else
|
||||
{
|
||||
d3.log.warn("WM_Vertreter: Keine SQL Ergebnisse");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Wertemengen für die Filer-Ablösung calb/d.velop 2025.12.08 ENDE
|
||||
//////////////////////////////////////////
|
||||
|
||||
|
||||
}
|
||||
137
Bewital/d3ValueSets.groovy
Normal file
137
Bewital/d3ValueSets.groovy
Normal file
@@ -0,0 +1,137 @@
|
||||
// Global d.3 libraries -------------------------------------------------------
|
||||
import com.dvelop.d3.server.core.D3;
|
||||
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;
|
||||
// Libraries to handle the different hook types ---------------------------------------------------
|
||||
import com.dvelop.d3.server.Entrypoint;
|
||||
import com.dvelop.d3.server.Condition;
|
||||
// Libraries to handle the different hook types --------------------------------
|
||||
import com.dvelop.d3.server.Validation
|
||||
import com.dvelop.d3.server.ValueSet;
|
||||
import com.dvelop.d3.server.RepositoryField;
|
||||
import com.dvelop.d3.server.Translation;
|
||||
import com.dvelop.d3.server.ValueSetTranslation;
|
||||
|
||||
// Special libraries -----------------------------------------------------------------------------
|
||||
import groovy.sql.Sql;
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import groovy.json.JsonOutput;
|
||||
import groovy.json.JsonSlurper;
|
||||
import groovy.transform.Field;
|
||||
|
||||
|
||||
class d3ValueSets {
|
||||
|
||||
// Wertemenge fuer Benutzer
|
||||
@ValueSet (entrypoint = "vsUserIDP")
|
||||
def getUserIDPID( D3 d3, RepositoryField reposField, User user, DocumentType docType, int rowNo, int validate, Document doc )
|
||||
{
|
||||
/*
|
||||
try {
|
||||
//Auslesen der IDP Benutzer IDs
|
||||
HttpsURLConnection idpRequest = new URL(Defs.baseURi + "/identityprovider/scim/users").openConnection();
|
||||
idpRequest.requestMethod = "GET";
|
||||
idpRequest.setRequestProperty("Origin", Defs.baseURi);
|
||||
idpRequest.setRequestProperty("Authorization", "Bearer " + Defs.ServiceAPIKey);
|
||||
idpRequest.setRequestProperty("Accept", "application/json");
|
||||
def response = idpRequest.getInputStream().getText();
|
||||
|
||||
def jsonSlurper = new JsonSlurper()
|
||||
def responseObject = jsonSlurper.parseText(response.toString())
|
||||
|
||||
initValueSetValues(d3, reposField, responseObject.resources.collect { it.get("id") }, "vsUserIDP")
|
||||
|
||||
}catch(Exception e) {
|
||||
d3.log.error("###-> Returnwert Fehler Ermittlung IDPId " + e.getMessage())
|
||||
}
|
||||
*/
|
||||
|
||||
String sql, fieldValue, fieldValue2
|
||||
int fieldPos
|
||||
|
||||
fieldValue = ""
|
||||
|
||||
fieldPos= reposField.getPreferedFieldNumber().toInteger()
|
||||
|
||||
if (fieldPos >= 60 && fieldPos <= 69)
|
||||
{
|
||||
fieldValue = doc.field[fieldPos][rowNo]
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldValue = doc.field[fieldPos]
|
||||
}
|
||||
|
||||
if (!(fieldValue) || fieldValue.length() < 3)
|
||||
{
|
||||
reposField.provideValuesForValueSet(["Please enter at least 3 characters."])
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldValue2 = "%" + fieldValue + "%"
|
||||
|
||||
sql = """SELECT distinct top 50 idp_id as userid from benutzer
|
||||
WHERE (realname like ? or idp_id = ?)"""
|
||||
|
||||
def resultList = d3.sql.executeAndGet(sql, [fieldValue2, fieldValue])
|
||||
|
||||
initValueSetValues(d3, reposField, resultList.collect { it.get("userid") }, "vsUserIDP")
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
// Wertemenge fuer Benutzer
|
||||
@ValueSetTranslation (entrypoint = "vsUserIDP")
|
||||
def getUserIDPIDTranslation(D3Interface d3, Translation transl)
|
||||
{
|
||||
/* 16.11.2023: Commented out as this is too slow for high amounts of users
|
||||
try {
|
||||
//Auslesen der IDP Benutzer IDs
|
||||
HttpsURLConnection idpRequest = new URL(Defs.baseURi + "/identityprovider/scim/users").openConnection();
|
||||
idpRequest.requestMethod = "GET";
|
||||
idpRequest.setRequestProperty("Origin", Defs.baseURi);
|
||||
idpRequest.setRequestProperty("Authorization", "Bearer " + Defs.ServiceAPIKey);
|
||||
idpRequest.setRequestProperty("Accept", "application/json");
|
||||
def response = idpRequest.getInputStream().getText();
|
||||
|
||||
def jsonSlurper = new JsonSlurper()
|
||||
Map parsedJson = jsonSlurper.parseText(response.toString()) ;
|
||||
def array1 = parsedJson.get("resources");
|
||||
List<String> idpval = new ArrayList<String>();
|
||||
Map<String, String> idpvalall = new HashMap<String, String>();
|
||||
String strMapValue = "" ;
|
||||
|
||||
for(def member : array1) {
|
||||
strMapValue = member.displayName ;
|
||||
idpval.add( member.id );
|
||||
idpvalall.put ( member.id , new String(strMapValue.getBytes(), "UTF-8") );
|
||||
}
|
||||
transl.set(idpvalall);
|
||||
|
||||
}catch(Exception e) {
|
||||
d3.log.error("###-> Returnwert Fehler Ermittlung IDPId " + e.getMessage())
|
||||
}
|
||||
*/
|
||||
|
||||
String sql
|
||||
|
||||
sql = "SELECT distinct realname as username, idp_id as userid from benutzer"
|
||||
|
||||
def resultList = d3.sql.executeAndGet(sql)
|
||||
resultList.each{ transl.set(it["userid"], it["username"]) }
|
||||
|
||||
return 0
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Hilfsfunktion zur Uebersetzung von Wertemengen
|
||||
private void initValueSetValues(D3Interface d3, RepositoryField repoField, Iterable<String> valueKeys, String valueSetId) {
|
||||
repoField.provideValuesForValueSet(valueKeys)
|
||||
d3.getArchive().removeTranslationFromCache(valueSetId, Locale.GERMAN)
|
||||
d3.getArchive().removeTranslationFromCache(valueSetId, Locale.ENGLISH)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user