diff --git a/entity/DistrictContact_entity/DistrictContact_entity.aod b/entity/DistrictContact_entity/DistrictContact_entity.aod index 817d6c9f722094d2b929e66feb61c55f299d66c4..9f966deb54e6bf605edcce32ed47709840a09d39 100644 --- a/entity/DistrictContact_entity/DistrictContact_entity.aod +++ b/entity/DistrictContact_entity/DistrictContact_entity.aod @@ -3,10 +3,10 @@ <name>DistrictContact_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GLOBE</icon> - <title>District Contact</title> + <title>Supervisor</title> <iconIdProcess>%aditoprj%/entity/DistrictContact_entity/iconIdProcess.js</iconIdProcess> <image>VAADIN:GLOBE</image> - <titlePlural>District Contacts</titlePlural> + <titlePlural>Supervisors</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 1d1ed6f7718812b0c2badbd5f3851a54d035685a..5b5afb8bdca649b2328ce43aa1dc77f78447a2b5 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1686,6 +1686,14 @@ <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/favoriten_filter/filterConditionProcess.js</filterConditionProcess> <filtertype>BASIC</filtertype> </filterExtension> + <filterExtension> + <name>ResponsibleAssignment</name> + <title>Supervisor assignment</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js</filterConditionProcess> + <filtertype>EXTENDED</filtertype> + </filterExtension> </filterExtensions> </dbRecordContainer> <indexRecordContainer> diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dec63bfd984d6224a90a64f10a70daaaa670f011 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js @@ -0,0 +1,38 @@ +import("Employee_lib"); +import("KeywordRegistry_basic"); +import("Sql_lib"); +import("system.vars"); +import("system.result"); + +var operator = vars.get("$local.operator"); +var rawvalue = vars.get("$local.rawvalue"); +var operator2 = vars.get("$local.operator2"); +var sqlCond = ""; + +rawvalue = (rawvalue == "true"); + + +if(operator == "1" && rawvalue || operator == "2" && !rawvalue ) + operator2 = SqlBuilder.IN(); +else if(operator == "1" && !rawvalue || operator == "2" && rawvalue) + operator2 = SqlBuilder.NOT_IN(); +else + sqlCond = "1=1"; + + + +if (sqlCond == "") + sqlCond = new SqlBuilder().where("CONTACT.CONTACTID", + newSelect("DISTRICTCONTACT.CONTACT_ID") + .from("DISTRICTCONTACT") + .where("DISTRICTCONTACT.ADVISER_CONTACT_ID", EmployeeUtils.getCurrentContactId()) + .and( + newWhere( + newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)") + .and("current_date <= cast(DISTRICTCONTACT.VALID_UNTIL as DATE)")) + .or(newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)") + .and("DISTRICTCONTACT.VALID_UNTIL is null"))) + .and("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active()), operator2).toString(); + + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4462144da5638267f7c76cce0c779305ae80c089 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js @@ -0,0 +1,4 @@ +import("system.translate"); +import("system.result"); + +result.object([["true", translate.text("Yes")], ["false", translate.text("No")]]); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 93b1185272e49a1303b200c26fb5ba202940c0e5..647c3821e922923e5da21e3dbde9f5296a93b4c9 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -16,7 +16,6 @@ <useFavorites v="true" /> <iconId>VAADIN:USERS</iconId> <imageProcess>%aditoprj%/entity/Person_entity/imageProcess.js</imageProcess> - <usePermissions v="false" /> <titlePlural>Contacts</titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -1698,6 +1697,14 @@ <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/favorits_filter/filterConditionProcess.js</filterConditionProcess> <filtertype>BASIC</filtertype> </filterExtension> + <filterExtension> + <name>SupervisorAssignment</name> + <title>Supervisor assignment</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js</filterConditionProcess> + <filtertype>BASIC</filtertype> + </filterExtension> </filterExtensions> </dbRecordContainer> <indexRecordContainer> diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9b9b11b65c2fe1c8206d87c6ccc85a9b8c9e7d04 --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js @@ -0,0 +1,40 @@ +import("Employee_lib"); +import("KeywordRegistry_basic"); +import("Sql_lib"); +import("system.vars"); +import("system.result"); + +var operator = vars.get("$local.operator"); +var rawvalue = vars.get("$local.rawvalue"); +var operator2 = vars.get("$local.operator2"); +var sqlCond = ""; + +rawvalue = (rawvalue == "true"); + + +if(operator == "1" && rawvalue || operator == "2" && !rawvalue ) + operator2 = SqlBuilder.IN(); +else if(operator == "1" && !rawvalue || operator == "2" && rawvalue) + operator2 = SqlBuilder.NOT_IN(); +else + sqlCond = "1=1"; + + + +if (sqlCond == "") + sqlCond = new SqlBuilder().where("CONTACT.CONTACTID", + newSelect("pers.CONTACTID") + .from("DISTRICTCONTACT") + .join("CONTACT", "DISTRICTCONTACT.CONTACT_ID = org.CONTACTID", "org") + .join("CONTACT", "pers.ORGANISATION_ID = org.ORGANISATION_ID and pers.PERSON_ID is not null", "pers") + .where("DISTRICTCONTACT.ADVISER_CONTACT_ID", EmployeeUtils.getCurrentContactId()) + .and( + newWhere( + newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)") + .and("current_date <= cast(DISTRICTCONTACT.VALID_UNTIL as DATE)")) + .or(newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)") + .and("DISTRICTCONTACT.VALID_UNTIL is null"))) + .and("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active()), operator2).toString(); + + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4462144da5638267f7c76cce0c779305ae80c089 --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js @@ -0,0 +1,4 @@ +import("system.translate"); +import("system.result"); + +result.object([["true", translate.text("Yes")], ["false", translate.text("No")]]); \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index dd10d94944d2c6b07bfeb1153fb6377d4604f733..95ce88532a2bff5272518e3085d32e18f515db77 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -14,6 +14,14 @@ <key>The start date has to be before the end date.</key> <value>Das Startdatum muss vor dem Enddatum sein.</value> </entry> + <entry> + <key>Supervisors</key> + <value>Betreuer</value> + </entry> + <entry> + <key>Supervisor assignment</key> + <value>Betreuerzuordnung</value> + </entry> <entry> <key>The given starting location is empty. An area search can not be performed.</key> <value>Der übergebene Startpunkt ist leer. Die Umkreissuche kann nicht ausgeführt werden.</value> @@ -7368,6 +7376,10 @@ <key>Info (Company)</key> <value>Info (Firma)</value> </entry> + <entry> + <key>Supervisor</key> + <value>Betreuer</value> + </entry> <entry> <key>Möglicherweise ist ein Import-Feld zu groß für das Zielfeld.</key> <value>An import field may be too large for the target field.</value> diff --git a/neonContext/DistrictContact/DistrictContact.aod b/neonContext/DistrictContact/DistrictContact.aod index c24205f4a08b1465e8547795489659a8e23cc67b..8db3d54af752ddd113a94b0e68df38a00c3f6bf8 100644 --- a/neonContext/DistrictContact/DistrictContact.aod +++ b/neonContext/DistrictContact/DistrictContact.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>DistrictContact</name> - <title>District Contact</title> + <title>Supervisor</title> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GLOBE</icon> <filterView>DistrictContactFilter_view</filterView>