From 92cffbce2015793a045ae799d2f10548c463554f Mon Sep 17 00:00:00 2001
From: Sebastian Listl <s.listl@adito.de>
Date: Wed, 25 Aug 2021 17:42:21 +0200
Subject: [PATCH] 1085288 workflow task complete action fix

---
 .../completemultipletasks/onActionProcess.js  | 27 ++++++++++++++++---
 .../completemultipletasks/stateProcess.js     | 20 +++++++++++++-
 2 files changed, 42 insertions(+), 5 deletions(-)

diff --git a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js
index 9fa595c8bf..8924818c3b 100644
--- a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js
+++ b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js
@@ -6,10 +6,23 @@ import("system.vars");
 var tasks = vars.get("$sys.selectionRows");
 var currentUserId = EmployeeUtils.getCurrentUserId();
 var refreshRequired = false;
+var formTaskId = null;
 tasks.forEach(function (task)
 {
-    //tasks requiring form data can't be completed here
-    if ((!task["FORMDEFINITION"] || task["FORMDEFINITION"] == "null") && task["ISACTIVE"] == "true")
+    var taskForm = null;
+    if (!formTaskId)
+    {
+        try
+        {
+            taskForm = workflow.getFormProperties(task["UID"]);
+        }
+        catch (ex) {}
+    }
+    if (taskForm && taskForm != "null")
+    {
+        formTaskId = task["UID"];
+    }
+    else
     {
         var taskId = task["#UID"];
         if (!task["ASSIGNEE"])
@@ -19,5 +32,11 @@ tasks.forEach(function (task)
     }
 });
 
-if (refreshRequired)
-    neon.refreshAll();
\ No newline at end of file
+if (formTaskId)
+{
+    neon.openContext("WorkflowTask", "WorkflowTaskForm_view", [formTaskId], neon.OPERATINGSTATE_EDIT, {});
+}
+else if (refreshRequired)
+{    
+    neon.refreshAll();
+}
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js
index 5014ae2e21..d39aa258d2 100644
--- a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js
+++ b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js
@@ -1,11 +1,29 @@
+import("system.workflow");
 import("system.result");
 import("system.neon");
 import("system.vars");
 
 var tasks = vars.get("$sys.selectionRows");
+var formCount = 0;
 var isActive = tasks.every(function (task)
 {
-    return (!task["FORMDEFINITION"] || task["FORMDEFINITION"] == "null") && task["ISACTIVE"] == "true";
+    if (task["ISACTIVE"] != "true")
+    {
+        return false;
+    }
+    try
+    {
+        var taskForm = workflow.getFormProperties(task["UID"]);
+    }
+    catch (ex)
+    {
+        taskForm = null;
+    }
+    if (taskForm && taskForm != "null")
+    {
+        formCount++;
+    }
+    return formCount <= 1;
 });
 
 result.string(isActive ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_DISABLED);
\ No newline at end of file
-- 
GitLab