import com.dvelop.d3.server.Document import com.dvelop.d3.server.DocumentClass import com.dvelop.d3.server.DocumentType import com.dvelop.d3.server.RepositoryField import com.dvelop.d3.server.User import com.dvelop.d3.server.UserGroup import com.dvelop.d3.server.ValueSet import com.dvelop.d3.server.core.D3Interface class ValueSets { @ValueSet(entrypoint = "AllowedVendorNumbers") def allowedVendorNumbers(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer rowNo, Integer validate, Document attribContext) { d3.log.warn("allowedVendorNumbers ValueSet reached") def credNumbers = new LinkedList() // Gruppenberechtigungen aus DB lesen def groups = user.groups // Alle erlaubten Kreditorennummern hinzufügen for (UserGroup group in groups) { def groupResult = d3.sql.executeAndGet("SELECT KREDNR FROM STU_KREDITOREN_BERECHTIGUNGEN WHERE USERORGROUP = '${group.id()}'") groupResult.forEach({ row -> def value = row.get("KREDNR").toString() if (!credNumbers.contains(value)) { credNumbers.add(value) } }) } // Userberechtigungen aus DB lesen def userResult = d3.sql.executeAndGet("SELECT KREDNR FROM STU_KREDITOREN_BERECHTIGUNGEN WHERE USERORGROUP = '${user.id()}'") userResult.forEach({ row -> def value = row.get("KREDNR").toString() if (!credNumbers.contains(value)) { credNumbers.add(value) } }) // Ergebnis zurückgeben repoField.provideValuesForValueSet(credNumbers) } // Rückgabe von 1 = Berechtigt, 0 = Zugriff verweigert @DocumentClass(entrypoint = "vendorNumberAllowed") int vendorNumberIsAllowed(D3Interface d3, String value, DocumentType docType, String userId, Document doc){ if (userId == null || userId == "") { return 0 } if (value == null || value == "") { return 0 } // Prüfe ob Kreditorennummer in User-Berechtigungen vorkommt, wenn ja Berechtigen (1) def userResult = d3.sql.executeAndGet("SELECT KREDNR FROM STU_KREDITOREN_BERECHTIGUNGEN WHERE USERORGROUP = '${userId}'") for (def row in userResult) { d3.log.debug("current value: $value") d3.log.debug("current row value: ${row.get("KREDNR").toString()}") if (value == row.get("KREDNR").toString()) { d3.log.debug("returning 1 for user") return 1 } } // Gruppenzugehörigkeiten aus d.3 lesen def groups = d3.archive.getUser(userId).groups // Prüfe ob Kreditorennummer in Gruppen-Berechtigungen vorkommt, wenn ja Berechtigen (1) for (UserGroup group in groups) { def groupResult = d3.sql.executeAndGet("SELECT KREDNR FROM STU_KREDITOREN_BERECHTIGUNGEN WHERE USERORGROUP = '${group.id()}'") for (def row in groupResult) { d3.log.debug("current value: $value") d3.log.debug("current row value: ${row.get("KREDNR").toString()}") if (value.equalsIgnoreCase(row.get("KREDNR").toString().trim())) { d3.log.debug("returning 1 for group ${group.id()}") return 1 } } } // Keine Berechtigung für Kreditorennummer gefunden, als nicht berechtigt zurückgeben return 0 } }