From 517a823d2afbc2761f3aac2cc7201094082b73b2 Mon Sep 17 00:00:00 2001 From: "S.Listl" <s.listl@adito.de> Date: Wed, 30 Oct 2019 08:38:04 +0100 Subject: [PATCH] Attribute 'Responsible AD supervisor' and dashlets --- .../Data_alias/basic/2019.3.1/changelog.xml | 7 +++ .../insert_attribute_ad_supervisor.xml | 24 ++++++++++ .liquibase/Data_alias/changelog.xml | 1 + .../dropdowndefinition/stateProcess.js | 14 +++--- .../dropdownfilter/valueProcess.js | 4 +- .../Organisation_entity.aod | 4 ++ .../recordcontainers/db/conditionProcess.js | 20 +++++++- entity/Person_entity/Person_entity.aod | 8 ++++ .../recordcontainers/db/conditionProcess.js | 22 ++++++++- .../QuickEntry_entity/QuickEntry_entity.aod | 26 +++++++++++ .../_____LANGUAGE_EXTRA.aod | 36 +++++++++++---- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 46 ++++++++++++++----- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 36 +++++++++++---- .../OrganisationFilter_view.aod | 21 +++++++++ .../PersonFilter_view/PersonFilter_view.aod | 21 +++++++++ process/AttributeRegistry_basic/process.js | 1 + 16 files changed, 250 insertions(+), 41 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2019.3.1/changelog.xml create mode 100644 .liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml diff --git a/.liquibase/Data_alias/basic/2019.3.1/changelog.xml b/.liquibase/Data_alias/basic/2019.3.1/changelog.xml new file mode 100644 index 00000000000..fda03e142d4 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.3.1/changelog.xml @@ -0,0 +1,7 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + + <include relativeToChangelogFile="true" file="insert_attribute_ad_supervisor.xml"/> + +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml b/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml new file mode 100644 index 00000000000..637b87fdb06 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml @@ -0,0 +1,24 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="9c2eb28c-2d77-456a-aa61-e8e7ae3fb15e"> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + <column name="ATTRIBUTE_NAME" value="Responsible AD supervisor"/> + <column name="ATTRIBUTE_TYPE" value="OBJECTSELECTION "/> + <column name="DROPDOWNDEFINITION" value="Employee_entity"/> + <column name="SORTING" valueNumeric="2"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="bcf4ccdd-9515-4926-a3e6-9066c9e49ade"/> + <column name="AB_ATTRIBUTE_ID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/> + <column name="OBJECT_TYPE" value="Person"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="62998088-1915-40cd-b39e-94f81edb865b"/> + <column name="AB_ATTRIBUTE_ID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 373e8973e00..2580416d2d7 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -4,6 +4,7 @@ <include relativeToChangelogFile="true" file="basic/2019.1.4/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2019.2.1/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2019.3.0/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2019.3.1/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> </databaseChangeLog> \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js index e7b56537726..af384e2e38a 100644 --- a/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js +++ b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js @@ -3,12 +3,14 @@ import("system.vars"); import("system.result"); import("Attribute_lib"); -var fieldState; +var fieldState = neon.COMPONENTSTATE_INVISIBLE; var type = vars.get("$field.ATTRIBUTE_TYPE").trim(); -if (type && $AttributeTypes[type] && $AttributeTypes[type].getDropDownDefinitions - && !AttributeUtil.hasRelations(vars.get("$field.UID"))) - fieldState = neon.COMPONENTSTATE_EDITABLE; -else - fieldState = neon.COMPONENTSTATE_INVISIBLE; +if (type && $AttributeTypes[type] && $AttributeTypes[type].getDropDownDefinitions) +{ + if (AttributeUtil.hasRelations(vars.get("$field.UID"))) + fieldState = neon.COMPONENTSTATE_READONLY; + else + fieldState = neon.COMPONENTSTATE_EDITABLE; +} result.string(fieldState); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js b/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js index c040a5fb108..1a58da7930c 100644 --- a/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js +++ b/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js @@ -4,7 +4,7 @@ import("system.result"); import("Attribute_lib"); if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.OBJECTSELECTION - && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)) + && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) { var entity = vars.getString("$field.DROPDOWNDEFINITION"); var emptyFilter = {entity: entity, filter: {type: "group", operator: "AND", childs: []}}; @@ -14,7 +14,7 @@ if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.OBJECTSELECTION currentFilter = JSON.parse(currentFilter); //if the filter field is empty or if the entity was changed, reset the filter - if (!vars.get("$this.value") || currentFilter.entity != emptyFilter.entity) + if (!currentFilter || currentFilter.entity != emptyFilter.entity) { var condJson = JSON.stringify(emptyFilter); result.string(condJson); diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index ebc47f40bfd..fa429536f9d 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1041,6 +1041,10 @@ <entityField> <name>IndexCity</name> </entityField> + <entityParameter> + <name>OnlyOwnSupervised_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js index f9d0b6ed3ee..f93b3e2b750 100644 --- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js @@ -1,3 +1,7 @@ +import("Employee_lib"); +import("AttributeRegistry_basic"); +import("Attribute_lib"); +import("system.logging"); import("system.vars"); import("system.db"); import("system.result"); @@ -42,7 +46,6 @@ if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedC } cond.andPrepareVars("ORGANISATION.KIND", "$param.OrganisationType_param"); - if(onlyShowContactIds != null && onlyShowContactIds.length > 0) { let additionalCondition = SqlCondition.begin(); @@ -54,6 +57,19 @@ if(onlyShowContactIds != null && onlyShowContactIds.length > 0) cond.andSqlCondition(additionalCondition, "1=2"); alternativeCondition = "1 = 2"; } +if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSupervised_param") == "true") +{ + var subQuery = new SqlBuilder() + .select("1") + .from("AB_ATTRIBUTERELATION") + .where(new SqlCondition() + .andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", ContextUtils.getCurrentContextId()) + .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = CONTACT.CONTACTID") + .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.responsibleADsupervisor()) + .andPrepare("AB_ATTRIBUTERELATION." + $AttributeTypes.OBJECTSELECTION.databaseField, EmployeeUtils.sliceUserId(EmployeeUtils.getCurrentUserId())) + ); + cond.andSqlBuilder(subQuery); +} //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026 -result.string(cond.translate(alternativeCondition)); \ No newline at end of file +result.string(cond.translate(alternativeCondition)); diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 9261c6e57bc..8ddf9367f4a 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1107,6 +1107,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>STANDARD_COUNTRY</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/standard_country/valueProcess.js</valueProcess> </entityField> + <entityActionField> + <name>ActionField</name> + <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/actionfield/onActionProcess.js</onActionProcess> + </entityActionField> + <entityParameter> + <name>OnlyOwnSupervised_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js index 69c8f9443ee..63a7be5bdb4 100644 --- a/entity/Person_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js @@ -1,8 +1,12 @@ +import("Context_lib"); +import("AttributeRegistry_basic"); +import("Employee_lib"); +import("AttributeFilter_lib"); +import("Attribute_lib"); import("system.vars"); import("system.db"); import("system.result"); import("Sql_lib"); - var cond = new SqlCondition(); let alternativeCondition = "1 = 1"; cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param") @@ -24,5 +28,19 @@ if(onlyShowContactIds != null && onlyShowContactIds.length > 0) cond.andSqlCondition(additionalCondition, "1=2"); alternativeCondition = "1 = 2"; } + +if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSupervised_param") == "true") +{ + var subQuery = new SqlBuilder() + .select("1") + .from("AB_ATTRIBUTERELATION") + .where(new SqlCondition() + .andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", ContextUtils.getCurrentContextId()) + .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = CONTACT.CONTACTID") + .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.responsibleADsupervisor()) + .andPrepare("AB_ATTRIBUTERELATION." + $AttributeTypes.OBJECTSELECTION.databaseField, EmployeeUtils.sliceUserId(EmployeeUtils.getCurrentUserId())) + ); + cond.andSqlBuilder(subQuery); +} //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026 -result.string(cond.translate(alternativeCondition)); \ No newline at end of file +result.string(cond.translate(alternativeCondition)); diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod index a9fc5171af2..9552ccd4093 100644 --- a/entity/QuickEntry_entity/QuickEntry_entity.aod +++ b/entity/QuickEntry_entity/QuickEntry_entity.aod @@ -57,6 +57,32 @@ <fieldName>ISO3Name</fieldName> </dependency> </entityConsumer> + <entityField> + <name>FIRSTNAME</name> + <title>Firstname</title> + </entityField> + <entityField> + <name>LASTNAME</name> + <title>Lastname</title> + </entityField> + <entityField> + <name>PERSON_TITLE</name> + <title>Title</title> + <consumer>SalutationTitles</consumer> + </entityField> + <entityField> + <name>PERSON_SALUTATION</name> + <title>Salutation</title> + <consumer>Salutations</consumer> + </entityField> + <entityField> + <name>PERSON_CONTACT_ID</name> + <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_contact_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PERSON_ID</name> + <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_id/valueProcess.js</valueProcess> + </entityField> <entityConsumer> <name>Salutations</name> <dependency> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 67f79141b63..29d48841024 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -5172,15 +5172,6 @@ <entry> <key>Configurations</key> </entry> - <entry> - <key>Appointment checkup for the selected day</key> - </entry> - <entry> - <key>Show tickets where I am the editor</key> - </entry> - <entry> - <key>Quick entry</key> - </entry> <entry> <key>Data block size</key> </entry> @@ -5211,6 +5202,33 @@ <entry> <key>Add to distribution list</key> </entry> + <entry> + <key>Responsible AD supervisor</key> + </entry> + <entry> + <key>Appointment checkup for the selected day</key> + </entry> + <entry> + <key>Show my contacts</key> + </entry> + <entry> + <key>Show tickets where I am the editor</key> + </entry> + <entry> + <key>Quick entry</key> + </entry> + <entry> + <key>Either or both a contact and a company must be specified</key> + </entry> + <entry> + <key>Show my organisations</key> + </entry> + <entry> + <key>My organisations</key> + </entry> + <entry> + <key>Attribute groups can't be selected</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index f2e68f6ab3a..a0f79f9e265 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -10,6 +10,18 @@ <key>Project management</key> <value>Projektmanagement</value> </entry> + <entry> + <key>Show my organisations</key> + <value>Meine Firmen anzeigen</value> + </entry> + <entry> + <key>My organisations</key> + <value>Meine Firmen</value> + </entry> + <entry> + <key>Show my contacts</key> + <value>Meine Kontakte anzeigen</value> + </entry> <entry> <key>ARCHIVE</key> <value>Archiviert</value> @@ -61,6 +73,10 @@ <key>Long string value</key> <value>Langer String-Wert</value> </entry> + <entry> + <key>Attribute groups can't be selected</key> + <value>Eigenschafsgruppen können nicht verwendet werden</value> + </entry> <entry> <key>Object selection</key> <value>Objektauswahl</value> @@ -372,6 +388,10 @@ <key>Serial letters</key> <value>Serienbriefe</value> </entry> + <entry> + <key>Either or both a contact and a company must be specified</key> + <value>Es muss entweder ein Kontakt, eine Firma oder beides angegeben werden</value> + </entry> <entry> <key>Categorization</key> <value>Kategorisierung</value> @@ -3677,6 +3697,10 @@ <entry> <key>normal</key> </entry> + <entry> + <key>My contacts</key> + <value>Meine Kontakte</value> + </entry> <entry> <key>Termine von</key> </entry> @@ -6112,6 +6136,7 @@ </entry> <entry> <key>Links</key> + <value>Verknüpfungen</value> </entry> <entry> <key>Set dunning</key> @@ -6445,6 +6470,7 @@ </entry> <entry> <key>${CONTRACT_STATUS}</key> + <value>Vertragsstatus</value> </entry> <entry> <key>Time in minutes</key> @@ -6492,12 +6518,11 @@ </entry> <entry> <key>Integrate selected into current contact</key> - <value>Selektierten Datensatz in aktuellen integrieren</value> - <value>Dubletten</value> + <value>Integriere ausgewählten in aktuellen Kontakt</value> </entry> <entry> <key>Duplicate actions</key> - <value>Dubletten Aktionen</value> + <value>Dublettenaktionen</value> </entry> <entry> <key>Export letter</key> @@ -6522,14 +6547,6 @@ <key>Count duplicates in cluster</key> <value>Anzahl Dubletten im Cluster</value> </entry> - <entry> - <key>Duplicate actions</key> - <value>Dublettenaktionen</value> - </entry> - <entry> - <key>Integrate selected into current contact</key> - <value>Integriere ausgewählten in aktuellen Kontakt</value> - </entry> <entry> <key>Unrelated organisations duplicates</key> <value>Ignorierte Dublettenrelationen</value> @@ -6578,6 +6595,13 @@ <key>A %0 record has been merged</key> <value>Zwei Datensätze vom Typ %0 wurden zusammengeführt</value> </entry> + <entry> + <key>Hospitality</key> + </entry> + <entry> + <key>Responsible AD supervisor</key> + <value>Zuständiger AD Betreuer</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 4eb712c5b81..cf72a723206 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -5222,15 +5222,6 @@ <entry> <key>Configurations</key> </entry> - <entry> - <key>Appointment checkup for the selected day</key> - </entry> - <entry> - <key>Show tickets where I am the editor</key> - </entry> - <entry> - <key>Quick entry</key> - </entry> <entry> <key>Data block size</key> </entry> @@ -5261,6 +5252,33 @@ <entry> <key>Add to distribution list</key> </entry> + <entry> + <key>Responsible AD supervisor</key> + </entry> + <entry> + <key>Appointment checkup for the selected day</key> + </entry> + <entry> + <key>Show my contacts</key> + </entry> + <entry> + <key>Show tickets where I am the editor</key> + </entry> + <entry> + <key>Quick entry</key> + </entry> + <entry> + <key>Either or both a contact and a company must be specified</key> + </entry> + <entry> + <key>Show my organisations</key> + </entry> + <entry> + <key>My organisations</key> + </entry> + <entry> + <key>Attribute groups can't be selected</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index d9f75404be8..e07000fb478 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -19,6 +19,27 @@ </neonDashletCategory> </categories> </neonDashletConfiguration> + <neonDashletConfiguration> + <name>OwnSupervisedOrganisations</name> + <title>My organisations</title> + <description>Show my organisations</description> + <fragment>Organisation/filter</fragment> + <singleton v="false" /> + <requiresConfiguration v="false" /> + <icon>vaadin:building</icon> + <categories> + <neonDashletCategory> + <name>contactmanagement</name> + <title>Contactmanagement</title> + </neonDashletCategory> + </categories> + <parameters> + <neonDashletParameter> + <name>OnlyOwnSupervised_param</name> + <value>true</value> + </neonDashletParameter> + </parameters> + </neonDashletConfiguration> </dashletConfigurations> <layout> <boxLayout> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 3503ec3460f..f821995c0e6 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -19,6 +19,27 @@ </neonDashletCategory> </categories> </neonDashletConfiguration> + <neonDashletConfiguration> + <name>OwnSupervisedContacts</name> + <title>My contacts</title> + <description>Show my contacts</description> + <fragment>Person/filter</fragment> + <singleton v="false" /> + <requiresConfiguration v="false" /> + <icon>vaadin:users</icon> + <categories> + <neonDashletCategory> + <name>contactmanagement</name> + <title>Contactmanagement</title> + </neonDashletCategory> + </categories> + <parameters> + <neonDashletParameter> + <name>OnlyOwnSupervised_param</name> + <value>true</value> + </neonDashletParameter> + </parameters> + </neonDashletConfiguration> </dashletConfigurations> <layout> <boxLayout> diff --git a/process/AttributeRegistry_basic/process.js b/process/AttributeRegistry_basic/process.js index 27085a93aef..13279769556 100644 --- a/process/AttributeRegistry_basic/process.js +++ b/process/AttributeRegistry_basic/process.js @@ -17,3 +17,4 @@ $AttributeRegistry.targetGroup = function(){return "c7d28377-8cb1-4f92-a9ac-ed08 $AttributeRegistry.targetGroup$competitior = function(){return "1d30d0ab-6103-4972-84c0-fd23eef15ca1";}; $AttributeRegistry.departments = function(){return "87d4ff5b-0ab6-4534-be26-76c6ef486072";}; $AttributeRegistry.salesprojectType = function(){return "fd3963bc-8e60-411a-9911-b97eb73e5cf7";}; +$AttributeRegistry.responsibleADsupervisor = function(){return "c0b26482-c0aa-413d-a9c3-f44c56bd04a9";}; -- GitLab