From 44e5e017d819d406eda94f295e4754e6bd870eed Mon Sep 17 00:00:00 2001 From: "j.luginger" <j.luginger@JLuginger.aditosoftware.local> Date: Fri, 22 Feb 2019 11:43:32 +0100 Subject: [PATCH] [Projekt: Entwicklung - Neon][TicketNr.: 1035025][SALUTATION] --- .../KeywordEntry_entity.aod | 6 +++ entity/Language_entity/Language_entity.aod | 6 +++ entity/Person_entity/Person_entity.aod | 22 ++++++++-- .../gender/displayValueProcess.js | 32 ++++++++++++++ .../entityfields/gender/onValueChange.js | 0 .../entityfields/gender/valueProcess.js | 19 ++++++++ .../entityfields/salutation/onValidation.js | 14 ++++++ .../entityfields/salutation/onValueChange.js | 0 .../salutation/possibleItemsProcess.js | 8 ++++ .../title/possibleItemsProcess.js | 13 ++++++ .../Salutation_entity/Salutation_entity.aod | 39 ++++++++++++++++- .../children/containername_param/code.js | 2 + .../entityfields/salutationid/valueProcess.js | 7 +++ .../expression.js | 5 +++ .../sex.displayvalue/expression.js | 5 +++ neonContext/Salutation/Salutation.aod | 10 +++++ .../SalutationEdit_view.aod | 43 +++++++++++++++++++ .../SalutationFilter_view.aod | 25 ++++++----- .../SalutationLookup_view.aod | 26 +++++++++++ 19 files changed, 265 insertions(+), 17 deletions(-) create mode 100644 entity/Person_entity/entityfields/gender/displayValueProcess.js create mode 100644 entity/Person_entity/entityfields/gender/onValueChange.js create mode 100644 entity/Person_entity/entityfields/gender/valueProcess.js create mode 100644 entity/Person_entity/entityfields/salutation/onValidation.js create mode 100644 entity/Person_entity/entityfields/salutation/onValueChange.js create mode 100644 entity/Person_entity/entityfields/salutation/possibleItemsProcess.js create mode 100644 entity/Person_entity/entityfields/title/possibleItemsProcess.js create mode 100644 entity/Salutation_entity/entityfields/keywordgender/children/containername_param/code.js create mode 100644 entity/Salutation_entity/entityfields/salutationid/valueProcess.js create mode 100644 entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js create mode 100644 entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js create mode 100644 neonView/SalutationEdit_view/SalutationEdit_view.aod create mode 100644 neonView/SalutationLookup_view/SalutationLookup_view.aod diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 97125bb8039..29f70bb8a0b 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -247,6 +247,12 @@ <fieldName>KeywordProbabilties</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>6e9de468-5c32-4a73-bcf9-988a9f9e943c</name> + <entityName>Salutation_entity</entityName> + <fieldName>KeywordGender</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod index f6202420add..b597ea3e44d 100644 --- a/entity/Language_entity/Language_entity.aod +++ b/entity/Language_entity/Language_entity.aod @@ -62,6 +62,12 @@ <fieldName>Languages</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>6b4c3907-9174-4a88-8f30-97b7702e4393</name> + <entityName>Salutation_entity</entityName> + <fieldName>Languages</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> </entityFields> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 85459cd4368..686f3b79597 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -23,6 +23,13 @@ <name>GENDER</name> <title>Gender</title> <consumer>KeywordGenders</consumer> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/gender/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/gender/displayValueProcess.js</displayValueProcess> + <onValueChange>%aditoprj%/entity/Person_entity/entityfields/gender/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + </onValueChangeTypes> </entityField> <entityField> <name>LASTNAME</name> @@ -42,10 +49,19 @@ <entityField> <name>SALUTATION</name> <title>Salutation</title> + <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/salutation/possibleItemsProcess.js</possibleItemsProcess> + <onValidation>%aditoprj%/entity/Person_entity/entityfields/salutation/onValidation.js</onValidation> + <onValueChange>%aditoprj%/entity/Person_entity/entityfields/salutation/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>RECORD</element> + </onValueChangeTypes> </entityField> <entityField> <name>TITLE</name> <title>Title</title> + <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/title/possibleItemsProcess.js</possibleItemsProcess> </entityField> <entityField> <name>TITLESUFFIX</name> @@ -517,21 +533,21 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <onDBUpdate>%aditoprj%/entity/Person_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> - <name>cb2de42b-de48-4543-91d6-8d00af5c5736</name> + <name>8c7dedf5-276a-4dff-a755-af9fd6e8a102</name> <tableName>PERSON</tableName> <primaryKey>PERSONID</primaryKey> <isUIDTable v="false" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>23fde8db-a3fe-421d-9e39-f6a0294e6883</name> + <name>c832aa10-3f49-4e3a-ac26-41cebecac7ee</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>6766787e-d39b-4030-bd26-cacfcd80d386</name> + <name>1a59ebc4-5334-4e11-9d55-89fc5c5f6d46</name> <tableName>ORGANISATION</tableName> <primaryKey>ORGANISATIONID</primaryKey> <isUIDTable v="false" /> diff --git a/entity/Person_entity/entityfields/gender/displayValueProcess.js b/entity/Person_entity/entityfields/gender/displayValueProcess.js new file mode 100644 index 00000000000..1d84f0ff41f --- /dev/null +++ b/entity/Person_entity/entityfields/gender/displayValueProcess.js @@ -0,0 +1,32 @@ +import("system.vars"); +import("Keyword_lib"); +import("system.logging"); +import("system.result"); +import("system.db"); +import("system.vars"); +import("system.neon"); + +var salutation = vars.get("$field.SALUTATION"); + + +if (salutation) +{ + var sex = db.cell("select SEX from SALUTATION where SALUTATION = '" + salutation + "'"); + + if (sex) + { + var keyword = KeywordUtils.getViewValue("PersonGender", sex); + + logging.log("ii" + keyword) + + result.string(keyword) + } + +} + + + + + + + diff --git a/entity/Person_entity/entityfields/gender/onValueChange.js b/entity/Person_entity/entityfields/gender/onValueChange.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/Person_entity/entityfields/gender/valueProcess.js b/entity/Person_entity/entityfields/gender/valueProcess.js new file mode 100644 index 00000000000..56881cd1bb4 --- /dev/null +++ b/entity/Person_entity/entityfields/gender/valueProcess.js @@ -0,0 +1,19 @@ +import("system.logging"); +import("system.result"); +import("system.db"); +import("system.vars"); +import("system.neon"); + +var salutation = vars.get("$field.SALUTATION") +; + +logging.log("value process: " + salutation); + +if((vars.get("sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("sys.recordstate") == neon.OPERATINGSTATE_EDIT) && !vars.get("$field.GENDER") && vars.get("$field.SALUTATION")) +{ + +var sex = db.cell("select SEX from SALUTATION where SALUTATION = '" + salutation + "'"); +logging.log(sex) +result.string( sex) + +} \ No newline at end of file diff --git a/entity/Person_entity/entityfields/salutation/onValidation.js b/entity/Person_entity/entityfields/salutation/onValidation.js new file mode 100644 index 00000000000..25929f20e02 --- /dev/null +++ b/entity/Person_entity/entityfields/salutation/onValidation.js @@ -0,0 +1,14 @@ +//import("system.logging"); +//import("system.result"); +//import("system.db"); +//import("system.vars"); +// +//var salutation = vars.get("$field.SALUTATION") +// +//if(!vars.get("$field.GENDER")) +// { +// +// var sex = db.cell("select SEX from SALUTATION where SALUTATION = '" + salutation + "'"); +// vars.set("$field.GENDER", sex) +// +// } \ No newline at end of file diff --git a/entity/Person_entity/entityfields/salutation/onValueChange.js b/entity/Person_entity/entityfields/salutation/onValueChange.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/Person_entity/entityfields/salutation/possibleItemsProcess.js b/entity/Person_entity/entityfields/salutation/possibleItemsProcess.js new file mode 100644 index 00000000000..c494b91dba1 --- /dev/null +++ b/entity/Person_entity/entityfields/salutation/possibleItemsProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.db"); + + +//var salutation = db.array(db.COLUMN, "select distinct SALUTATION from SALUTATION where SALUTATION is not NULL"); +var salutation2 = db.table("select distinct SALUTATION, SALUTATION from SALUTATION where SALUTATION is not NULL"); + +result.object(salutation2); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/title/possibleItemsProcess.js b/entity/Person_entity/entityfields/title/possibleItemsProcess.js new file mode 100644 index 00000000000..b5456c01035 --- /dev/null +++ b/entity/Person_entity/entityfields/title/possibleItemsProcess.js @@ -0,0 +1,13 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); +import("system.db"); + +var salutation = vars.get("$field.SALUTATION"); + +logging.log(salutation) + +var title = db.table("select TITLE, TITLE from SALUTATION where TITLE is not null and SALUTATION = '" + salutation + "'"); + +result.object(title); + diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod index 5ce491ed372..8cf9b343988 100644 --- a/entity/Salutation_entity/Salutation_entity.aod +++ b/entity/Salutation_entity/Salutation_entity.aod @@ -1,22 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.0"> <name>Salutation_entity</name> + <title>Anrede</title> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>db</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <recordContainer>db</recordContainer> </entityProvider> <entityField> <name>SALUTATIONID</name> + <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/salutationid/valueProcess.js</valueProcess> </entityField> <entityField> <name>HEADLINE</name> - <title>Anrede im Briedkopf</title> + <title>Anrede im Briefkopf</title> </entityField> <entityField> <name>LANGUAGE_SALUTATION</name> <title>Sprache</title> + <consumer>Languages</consumer> </entityField> <entityField> <name>LETTERSALUTATION</name> @@ -29,6 +33,7 @@ <entityField> <name>SEX</name> <title>Geschlecht</title> + <consumer>KeywordGender</consumer> </entityField> <entityField> <name>SORT</name> @@ -38,6 +43,30 @@ <name>TITLE</name> <title>(Akademischer) Titel</title> </entityField> + <entityConsumer> + <name>Languages</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>Language_entity</entityName> + <fieldName>LanguagesISO3Code</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordGender</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>containerName_param</name> + <code>%aditoprj%/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/code.js</code> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> @@ -85,6 +114,14 @@ <name>TITLE.value</name> <recordfield>SALUTATION.TITLE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>LANGUAGE_SALUTATION.displayValue</name> + <expression>%aditoprj%/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SEX.displayValue</name> + <expression>%aditoprj%/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/code.js b/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/code.js new file mode 100644 index 00000000000..bd69f66c718 --- /dev/null +++ b/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/code.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("PersonGender") \ No newline at end of file diff --git a/entity/Salutation_entity/entityfields/salutationid/valueProcess.js b/entity/Salutation_entity/entityfields/salutationid/valueProcess.js new file mode 100644 index 00000000000..a2378ee42b3 --- /dev/null +++ b/entity/Salutation_entity/entityfields/salutationid/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js new file mode 100644 index 00000000000..4f510117adc --- /dev/null +++ b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Keyword_lib"); + +var sql = LanguageKeywordUtils.getResolvedTitleSqlPart("SALUTATION.LANGUAGE"); +result.string(sql); \ No newline at end of file diff --git a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js new file mode 100644 index 00000000000..3a982fc3e43 --- /dev/null +++ b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Keyword_lib"); + +var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.PersonGender, "SALUTATION.SEX"); +result.string(sql); diff --git a/neonContext/Salutation/Salutation.aod b/neonContext/Salutation/Salutation.aod index a1150ee5c6d..0bdd2c696d6 100644 --- a/neonContext/Salutation/Salutation.aod +++ b/neonContext/Salutation/Salutation.aod @@ -4,11 +4,21 @@ <title>Anrede</title> <majorModelMode>DISTRIBUTED</majorModelMode> <filterview>SalutationFilter_view</filterview> + <editview>SalutationEdit_view</editview> + <lookupview>SalutationLookup_view</lookupview> <entity>Salutation_entity</entity> <references> <neonViewReference> <name>e1ddbe88-af31-4860-9b9e-447282060ec2</name> <view>SalutationFilter_view</view> </neonViewReference> + <neonViewReference> + <name>2663038a-4f51-4152-bbb2-2c8aa552deee</name> + <view>SalutationEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>3bb3eb80-414e-4d1b-aec1-94b0fddb4a29</name> + <view>SalutationLookup_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod new file mode 100644 index 00000000000..a9dbd96b546 --- /dev/null +++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> + <name>SalutationEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>3414fd26-d0bf-42e0-b7c7-7ca505e2c70d</name> + <entityField>LANGUAGE_SALUTATION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b56a3b42-346e-48f2-88f0-0e3c5f4b76fe</name> + <entityField>SALUTATION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>39b0ef67-57f9-40ac-b759-e32c70f16ce0</name> + <entityField>TITLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>7a6e5f1b-12c8-4d50-ad2f-bfd35fc94d5f</name> + <entityField>HEADLINE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>83feed8a-aca8-4c2a-bac3-fa3d5f9d21b0</name> + <entityField>LETTERSALUTATION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>3179d4c2-98dd-4edf-8bfb-462935bd8d50</name> + <entityField>SEX</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod index 3259a47e21e..5ac48c5730a 100644 --- a/neonView/SalutationFilter_view/SalutationFilter_view.aod +++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod @@ -2,6 +2,7 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> <name>SalutationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> <layout> <boxLayout> <name>layout</name> @@ -13,8 +14,10 @@ <entityField>#ENTITY</entityField> <columns> <neonTableColumn> - <name>4a0e3f58-8d0c-4481-8ff5-2f1762460c21</name> - <entityField>SORT</entityField> + <name>b4108c6a-173d-4692-b9dc-a0c02de7d373</name> + <entityField>LANGUAGE_SALUTATION</entityField> + <width v="75" /> + <expandRatio v="100" /> </neonTableColumn> <neonTableColumn> <name>cd9277bb-e254-41d2-bbfa-5d328e348405</name> @@ -22,27 +25,23 @@ <width v="75" /> </neonTableColumn> <neonTableColumn> - <name>68809674-e641-4965-8977-20f6b3e1002a</name> - <entityField>SEX</entityField> + <name>229e8fa9-e4c3-4cab-b692-6695c4bff4aa</name> + <entityField>TITLE</entityField> <width v="75" /> </neonTableColumn> <neonTableColumn> - <name>b4108c6a-173d-4692-b9dc-a0c02de7d373</name> - <entityField>LANGUAGE_SALUTATION</entityField> - <expandRatio v="100" /> - </neonTableColumn> - <neonTableColumn> - <name>229e8fa9-e4c3-4cab-b692-6695c4bff4aa</name> - <entityField>TITLE</entityField> + <name>dd21b360-22e4-448b-906d-059bc6c4033f</name> + <entityField>HEADLINE</entityField> <width v="75" /> </neonTableColumn> <neonTableColumn> <name>5aa35e22-4ca3-4a65-a9de-44bd209248e8</name> <entityField>LETTERSALUTATION</entityField> + <width v="75" /> </neonTableColumn> <neonTableColumn> - <name>dd21b360-22e4-448b-906d-059bc6c4033f</name> - <entityField>HEADLINE</entityField> + <name>68809674-e641-4965-8977-20f6b3e1002a</name> + <entityField>SEX</entityField> <width v="75" /> </neonTableColumn> </columns> diff --git a/neonView/SalutationLookup_view/SalutationLookup_view.aod b/neonView/SalutationLookup_view/SalutationLookup_view.aod new file mode 100644 index 00000000000..bd33469ea0a --- /dev/null +++ b/neonView/SalutationLookup_view/SalutationLookup_view.aod @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> + <name>SalutationLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>fbf20ad5-75b0-4c5c-8fbf-a2c0369f2adc</name> + <entityField>SALUTATION</entityField> + </neonTableColumn> + <neonTableColumn> + <name>ba27a68a-f353-4365-8127-e3a652137a10</name> + <entityField>TITLE</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> -- GitLab