From 307fe6d9551745e4f59e6e324e4891a1fd401149 Mon Sep 17 00:00:00 2001
From: Sebastian Pongratz <s.pongratz@adito.de>
Date: Tue, 30 Nov 2021 11:36:41 +0100
Subject: [PATCH] Merge branch 'cm_2001570_AnalysesDashboard' into '2021.2'

[Projekt: xRM-ContactManagement][TicketNr.: 2001570][Dashlet ToDo zeigt falsche/keine Aufgaben an]

See merge request xrm/basic!1478

(cherry picked from commit 6f78e5e83e7d365d599f0c1ca4e7d041466ad17c)

0255822c [Projekt: xRM-ContactManagement][TicketNr.: 2001570][Dashlet ToDo zeigt falsche/keine Aufgaben an]
---
 .../entityfields/new_tasks/valueProcess.js    | 17 +++++++++------
 .../opennewtasks/onActionProcess.js           | 11 ++++++++--
 .../openoverduetasks/onActionProcess.js       | 14 +++++++++----
 .../overdue_tasks/valueProcess.js             | 21 ++++++++++++-------
 entity/Task_entity/Task_entity.aod            |  2 +-
 process/migrateTask/process.js                |  2 +-
 6 files changed, 46 insertions(+), 21 deletions(-)

diff --git a/entity/Analyses_entity/entityfields/new_tasks/valueProcess.js b/entity/Analyses_entity/entityfields/new_tasks/valueProcess.js
index 3e2e63befe..367c63ee6d 100644
--- a/entity/Analyses_entity/entityfields/new_tasks/valueProcess.js
+++ b/entity/Analyses_entity/entityfields/new_tasks/valueProcess.js
@@ -1,14 +1,19 @@
 import("Employee_lib");
-import("system.db");
 import("system.result");
 import("Sql_lib");
 import("KeywordRegistry_basic");
-                     
+
+var contactId = EmployeeUtils.getCurrentContactId();
+var departmentId = EmployeeUtils.getUsersDepartment(contactId, false);
+
 var opentask = newSelect("count(TASKID)")
     .from("TASK")
-    .where("TASK.STATUS", $KeywordRegistry.taskStatus$new())
-    .and ("TASK.KIND", "TASK")
-    .and("TASK.EDITOR_CONTACT_ID", EmployeeUtils.getCurrentContactId())
-    .cell();
+    .join("TASKATTENDEES","TASKATTENDEES.TASK_ID = TASK.TASKID")
+    .where(
+        newWhere("TASKATTENDEES.CONTACT_ID", contactId)
+        .or("TASKATTENDEES.DEPARTMENT_ID",departmentId)
+    )
+    .and("TASK.STATUS", $KeywordRegistry.taskStatus$new())
+    .cell();  
     
 result.string(opentask || 0);
\ No newline at end of file
diff --git a/entity/Analyses_entity/entityfields/opennewtasks/onActionProcess.js b/entity/Analyses_entity/entityfields/opennewtasks/onActionProcess.js
index 2f701771cd..a63838ac81 100644
--- a/entity/Analyses_entity/entityfields/opennewtasks/onActionProcess.js
+++ b/entity/Analyses_entity/entityfields/opennewtasks/onActionProcess.js
@@ -4,10 +4,17 @@ import("Sql_lib");
 import("Employee_lib");
 import("system.neon");
 
+var contactId = EmployeeUtils.getCurrentContactId();
+var departmentId = EmployeeUtils.getUsersDepartment(contactId, false);
+
 var taskIds = newSelect("TASKID")
     .from("TASK")
-    .where("TASK.STATUS", $KeywordRegistry.taskStatus$new())
-    .and("TASK.EDITOR_CONTACT_ID", EmployeeUtils.getCurrentContactId())
+    .join("TASKATTENDEES","TASKATTENDEES.TASK_ID = TASK.TASKID")
+    .where(
+        newWhere("TASKATTENDEES.CONTACT_ID", contactId)
+        .or("TASKATTENDEES.DEPARTMENT_ID", departmentId)
+    )
+    .and("TASK.STATUS", $KeywordRegistry.taskStatus$new())
     .arrayColumn();
 
 var recipe = neonFilter.createEntityRecordsRecipeBuilder().uidsIncludelist(taskIds).toString();
diff --git a/entity/Analyses_entity/entityfields/openoverduetasks/onActionProcess.js b/entity/Analyses_entity/entityfields/openoverduetasks/onActionProcess.js
index dfbf3354e4..43974a54a6 100644
--- a/entity/Analyses_entity/entityfields/openoverduetasks/onActionProcess.js
+++ b/entity/Analyses_entity/entityfields/openoverduetasks/onActionProcess.js
@@ -1,17 +1,23 @@
 import("system.neonFilter");
 import("system.neon");
-import("system.db");
 import("ActivityTask_lib");
 import("Employee_lib");
 import("system.vars");
 import("Sql_lib");
 
+var contactId = EmployeeUtils.getCurrentContactId();
+var departmentId = EmployeeUtils.getUsersDepartment(contactId, false);
+
 var overdueTask = newSelect("TASKID")
                     .from("TASK")
-                    .where("TASK.MATURITY_DATE", "$sys.date", SqlBuilder.LESS())
-                    .and("TASK.EDITOR_CONTACT_ID", EmployeeUtils.getCurrentContactId())
+                    .join("TASKATTENDEES","TASKATTENDEES.TASK_ID = TASK.TASKID")
+                    .where(
+                        newWhere("TASKATTENDEES.CONTACT_ID", contactId)
+                        .or("TASKATTENDEES.DEPARTMENT_ID",departmentId)
+                    )
+                    .and("TASK.MATURITY_DATE", "$sys.date", SqlBuilder.LESS())
                     .and("TASK.STATUS", TaskUtils.getEndedStatuses(), SqlBuilder.NOT_IN())
-                    .array(db.COLUMN)
+                    .arrayColumn();
 
 var recipe = neonFilter.createEntityRecordsRecipeBuilder().uidsIncludelist(overdueTask).toString();
 neon.openContextWithRecipe("Task", "TaskFilter_view", recipe, neon.OPERATINGSTATE_SEARCH);
diff --git a/entity/Analyses_entity/entityfields/overdue_tasks/valueProcess.js b/entity/Analyses_entity/entityfields/overdue_tasks/valueProcess.js
index 98e88dd158..6d23914c84 100644
--- a/entity/Analyses_entity/entityfields/overdue_tasks/valueProcess.js
+++ b/entity/Analyses_entity/entityfields/overdue_tasks/valueProcess.js
@@ -1,15 +1,22 @@
-import("system.vars");
+import("system.result");
+import("system.neon");
+import("ActivityTask_lib");
 import("Employee_lib");
+import("system.vars");
 import("Sql_lib");
-import("ActivityTask_lib");
-import("system.result");
+
+var contactId = EmployeeUtils.getCurrentContactId();
+var departmentId = EmployeeUtils.getUsersDepartment(contactId, false);
 
 var overdueTaskCount = newSelect("count(TASKID)")
                     .from("TASK")
-                    .where("TASK.MATURITY_DATE", "$sys.date", SqlBuilder.LESS())
-                    .and ("TASK.KIND", "TASK")
-                    .and("TASK.EDITOR_CONTACT_ID", EmployeeUtils.getCurrentContactId())
+                    .join("TASKATTENDEES","TASKATTENDEES.TASK_ID = TASK.TASKID")
+                    .where(
+                        newWhere("TASKATTENDEES.CONTACT_ID", contactId)
+                        .or("TASKATTENDEES.DEPARTMENT_ID",departmentId)
+                    )
+                    .and("TASK.MATURITY_DATE", vars.get("$sys.date"), SqlBuilder.LESS())
                     .and("TASK.STATUS", TaskUtils.getEndedStatuses(), SqlBuilder.NOT_IN())
-                    .cell()
+                    .cell();
 
 result.string(overdueTaskCount);
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 4f4483a8e0..fb2bcfa6a1 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -490,7 +490,7 @@
     </entityField>
     <entityField>
       <name>connections</name>
-      <title>Verknuepfungen</title>
+      <title>Connections</title>
     </entityField>
     <entityField>
       <name>DATE_EDIT</name>
diff --git a/process/migrateTask/process.js b/process/migrateTask/process.js
index d4b0cc4cac..8ecf69cdba 100644
--- a/process/migrateTask/process.js
+++ b/process/migrateTask/process.js
@@ -24,7 +24,7 @@ oldTasks.forEach(function (pTask) {
     logging.log(text.text2html(pTask[0], true));
     statements.push(newWhereIfSet("TASK.TASKID", pTask[1])
         .buildUpdateStatement({
-            "TASK.DESCRIPTION" : text.text2html(pTask[0], true)
+            "DESCRIPTION" : text.text2html(pTask[0], true)
         }, "TASK"));
         
         statements.push(new SqlBuilder().buildInsertStatement({
-- 
GitLab