From f9d1998cb25b64146203f3d02777608d24c12f91 Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Mon, 11 Feb 2019 15:30:25 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201032312][Keywords=20f=C3=BCr=20bestehende=20Module=20anlegen?=
 =?UTF-8?q?]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 entity/Keyword_entity/Keyword_entity.aod      | 12 ++++++
 entity/Task_entity/Task_entity.aod            | 42 ++++++++++++++++++-
 .../children/containername_param/code.js      |  4 ++
 .../children/containername_param/code.js      |  4 ++
 .../status/possibleItemsProcess.js            |  7 ----
 .../entityfields/type/possibleItemsProcess.js |  7 ----
 .../status.displayvalue/expression.js         |  5 +++
 .../type.displayvalue/expression.js           |  5 +++
 .../data_alias/data/example_task/base.xml     |  6 +--
 .../data_alias/struct/create_task.xml         |  4 +-
 process/Keyword_lib/process.js                | 21 +---------
 11 files changed, 77 insertions(+), 40 deletions(-)
 create mode 100644 entity/Task_entity/entityfields/keywordstates/children/containername_param/code.js
 create mode 100644 entity/Task_entity/entityfields/keywordtypes/children/containername_param/code.js
 delete mode 100644 entity/Task_entity/entityfields/status/possibleItemsProcess.js
 delete mode 100644 entity/Task_entity/entityfields/type/possibleItemsProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js

diff --git a/entity/Keyword_entity/Keyword_entity.aod b/entity/Keyword_entity/Keyword_entity.aod
index 681c0b77df..afc39b04e7 100644
--- a/entity/Keyword_entity/Keyword_entity.aod
+++ b/entity/Keyword_entity/Keyword_entity.aod
@@ -160,6 +160,18 @@
           <fieldName>KeywordGenders</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>001e0934-0920-4b38-afff-caf299e96abf</name>
+          <entityName>Task_entity</entityName>
+          <fieldName>KeywordTypes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>8d28f08b-675d-4bcf-9318-a508d45ca69e</name>
+          <entityName>Task_entity</entityName>
+          <fieldName>KeywordStates</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index a2069a8026..0e739e2eda 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -30,8 +30,8 @@
     <entityField>
       <name>STATUS</name>
       <title>{$TASK_STATUS}</title>
+      <consumer>KeywordStates</consumer>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
       <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/status/valueProcess.js</valueProcess>
     </entityField>
@@ -76,7 +76,7 @@
     <entityField>
       <name>TYPE</name>
       <title>type</title>
-      <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess>
+      <consumer>KeywordTypes</consumer>
       <groupable v="true" />
     </entityField>
     <entityField>
@@ -140,6 +140,36 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>KeywordStates</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Keyword_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/Task_entity/entityfields/keywordstates/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordTypes</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Keyword_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/Task_entity/entityfields/keywordtypes/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -212,6 +242,14 @@
           <name>REQUESTOR_RELATION_ID.displayValue</name>
           <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_relation_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TYPE.displayValue</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STATUS.displayValue</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Task_entity/entityfields/keywordstates/children/containername_param/code.js b/entity/Task_entity/entityfields/keywordstates/children/containername_param/code.js
new file mode 100644
index 0000000000..580aeb3de0
--- /dev/null
+++ b/entity/Task_entity/entityfields/keywordstates/children/containername_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Keyword_lib");
+
+result.string($KeywordRegistry.get.TaskStatus);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/keywordtypes/children/containername_param/code.js b/entity/Task_entity/entityfields/keywordtypes/children/containername_param/code.js
new file mode 100644
index 0000000000..45a01452c0
--- /dev/null
+++ b/entity/Task_entity/entityfields/keywordtypes/children/containername_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Keyword_lib");
+
+result.string($KeywordRegistry.get.TaskType);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/status/possibleItemsProcess.js b/entity/Task_entity/entityfields/status/possibleItemsProcess.js
deleted file mode 100644
index c954aedab3..0000000000
--- a/entity/Task_entity/entityfields/status/possibleItemsProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var items;
-
-items = KeywordUtils.getStandardArray("TASK.STATUS");
-result.object(items);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/type/possibleItemsProcess.js b/entity/Task_entity/entityfields/type/possibleItemsProcess.js
deleted file mode 100644
index ff1398053b..0000000000
--- a/entity/Task_entity/entityfields/type/possibleItemsProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var items;
-
-items = KeywordUtils.getStandardArray("TASK.TYPE");
-result.object(items);
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
new file mode 100644
index 0000000000..4af15e0ec6
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.TaskStatus, "TASK.STATUS");
+result.string(sql);
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js
new file mode 100644
index 0000000000..a0b8bddfdc
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.TaskType, "TASK.TYPE");
+result.string(sql);
diff --git a/others/db_changes/data_alias/data/example_task/base.xml b/others/db_changes/data_alias/data/example_task/base.xml
index d87f6b06ef..e52129586b 100644
--- a/others/db_changes/data_alias/data/example_task/base.xml
+++ b/others/db_changes/data_alias/data/example_task/base.xml
@@ -10,7 +10,7 @@
 
             <column name="CODE" valueNumeric="10000"/>
             <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren"/>
-            <column name="STATUS" valueNumeric="1"/>
+            <column name="STATUS" value="b1fd456f-f5d2-459e-b467-76e2914c8169"/>
             <column name="PRIORITY" valueNumeric="2"/>
             <column name="PROTECTIONLEVEL" valueNumeric="0"/>
             <column name="START_DATE" valueDate="2019-01-20T14:00:00"/>
@@ -31,7 +31,7 @@
 
             <column name="CODE" valueNumeric="10001"/>
             <column name="SUBJECT" value="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."/>
-            <column name="STATUS" valueNumeric="2"/>
+            <column name="STATUS" value="00595a73-22e2-4c3b-a21c-06bdec262d20"/>
             <column name="PRIORITY" valueNumeric="1"/>
             <column name="PROTECTIONLEVEL" valueNumeric="1"/>
             <column name="START_DATE" valueDate="2019-01-20T11:30:00"/>
@@ -52,7 +52,7 @@
 
             <column name="CODE" valueNumeric="10002"/>
             <column name="SUBJECT" value="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris"/>
-            <column name="STATUS" valueNumeric="1"/>
+            <column name="STATUS" value="b1fd456f-f5d2-459e-b467-76e2914c8169"/>
             <column name="PRIORITY" valueNumeric="3"/>
             <column name="PROTECTIONLEVEL" valueNumeric="0"/>
             <column name="START_DATE" valueDate="2019-01-09T08:00:00"/>
diff --git a/others/db_changes/data_alias/struct/create_task.xml b/others/db_changes/data_alias/struct/create_task.xml
index b28b6c8c05..4d10c0757c 100644
--- a/others/db_changes/data_alias/struct/create_task.xml
+++ b/others/db_changes/data_alias/struct/create_task.xml
@@ -10,13 +10,13 @@
                 <constraints nullable="false" unique="true"/>
             </column>
             <column name="SUBJECT" type="NVARCHAR(254)"/>
-            <column name="STATUS" type="SMALLINT"/>
+            <column name="STATUS" type="CHAR(36)"/>
             <column name="PRIORITY" type="SMALLINT"/>
             <column name="REQUESTOR_RELATION_ID" type="CHAR(36)"/>
             <column name="EDITOR_RELATION_ID" type="CHAR(36)"/>
             <column name="START_DATE" type="TIMESTAMP"/>
             <column name="MATURITY_DATE" type="TIMESTAMP"/>
-            <column name="TYPE" type="SMALLINT"/>
+            <column name="TYPE" type="CHAR(36)"/>
             <column name="DESCRIPTION" type="NCLOB"/>
             <column name="PROTECTIONLEVEL" type="SMALLINT"/>
         </createTable>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 16957a4f17..b8492b5071 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -30,6 +30,8 @@ $KeywordRegistry.get = {
     OfferStatus: "OfferStatus",
     OrganisationType: "OrganisationType",
     PersonGender: "PersonGender",
+    TaskStatus: "TaskStatus",
+    TaskType: "TaskType",
     
     "null": null
 };
@@ -422,25 +424,6 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL
                     ,_createKeywordEntry("3", translate.text("{$TASK_PRIORITY_HIGH}", locale), null, {defaultAvatarRepresentation: "VAADIN:EXCLAMATION"})
                     ]);
                 break;
-            case "TASK.TYPE":
-                //even this keyword may look like the same as the "ACTIVITY.CATEGORY" keyword:
-                //these are *not* categories since task-categories are reservated for future implementation
-                //the TASK.TYPE is more like an type of source for example
-                valueContainer = _createKeywordEntriesContainer([
-                     _createKeywordEntry("0", translate.text("Visit", locale))
-                    ,_createKeywordEntry("1", translate.text("E-Mail", locale))
-                    ,_createKeywordEntry("2", translate.text("Phone", locale))
-                    ,_createKeywordEntry("3", translate.text("Online-Meeting", locale))
-                ]);
-                break;
-            case "TASK.STATUS":
-                valueContainer = _createKeywordEntriesContainer([
-                     _createKeywordEntry("0", translate.text("new", locale))
-                    ,_createKeywordEntry("1", translate.text("in process", locale))
-                    ,_createKeywordEntry("2", translate.text("waiting", locale))
-                    ,_createKeywordEntry("3", translate.text("ended", locale))
-                    ]);
-                break;
             default: 
                 throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [
                     arguments.callee.name, keywordType
-- 
GitLab