From c497c8eee28e0dbc666dc9cf2618666a37368a95 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Wed, 29 Jan 2020 10:45:07 +0100
Subject: [PATCH] WorkflowTask complete task error

---
 entity/WorkflowTask_entity/WorkflowTask_entity.aod    |  2 ++
 .../entityfields/completetask/stateProcess.js         |  5 +++++
 .../entityfields/create_time/titleProcess.js          |  6 ++++++
 .../recordcontainers/jdito/contentProcess.js          | 11 +++++++++--
 language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod  |  3 +++
 language/_____LANGUAGE_de/_____LANGUAGE_de.aod        |  4 ++++
 language/_____LANGUAGE_en/_____LANGUAGE_en.aod        |  3 +++
 7 files changed, 32 insertions(+), 2 deletions(-)
 create mode 100644 entity/WorkflowTask_entity/entityfields/completetask/stateProcess.js
 create mode 100644 entity/WorkflowTask_entity/entityfields/create_time/titleProcess.js

diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
index 093057d737..1ca9b00ef9 100644
--- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod
+++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
@@ -44,6 +44,7 @@
       <title>Creation date</title>
       <contentType>DATE</contentType>
       <state>READONLY</state>
+      <titleProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/create_time/titleProcess.js</titleProcess>
     </entityField>
     <entityParameter>
       <name>WorkflowDefinitionId_param</name>
@@ -54,6 +55,7 @@
       <title>Complete task</title>
       <onActionProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/completetask/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:CHECK</iconId>
+      <stateProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/completetask/stateProcess.js</stateProcess>
       <tooltip>Complete task</tooltip>
     </entityActionField>
     <entityParameter>
diff --git a/entity/WorkflowTask_entity/entityfields/completetask/stateProcess.js b/entity/WorkflowTask_entity/entityfields/completetask/stateProcess.js
new file mode 100644
index 0000000000..16def1966d
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/completetask/stateProcess.js
@@ -0,0 +1,5 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PROCESSINSTANCE_ID") ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/entityfields/create_time/titleProcess.js b/entity/WorkflowTask_entity/entityfields/create_time/titleProcess.js
new file mode 100644
index 0000000000..7e0690651f
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/create_time/titleProcess.js
@@ -0,0 +1,6 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+if (!vars.get("$field.PROCESSINSTANCE_ID"))
+    result.string(translate.text("Date"));
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
index 1af939151e..6fd4066771 100644
--- a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("system.project");
 import("Context_lib");
 import("system.neon");
@@ -13,12 +14,13 @@ import("system.workflow");
 var isOnlyForCurrentUser = vars.get("$param.OnlyForCurrentUser_param") == "true";
 
 var loadConfig = workflow.createConfigForLoadingTasks();
-var tasks;
+var tasks, dummyTask;
 
 if (vars.get("$local.idvalues") && vars.get("$local.idvalues")[0])
 {
+    var taskId = vars.get("$local.idvalues")[0];
     loadConfig = workflow.createConfigForLoadingTask()
-        .taskId(vars.get("$local.idvalues")[0]);
+        .taskId(taskId);
         
     //TODO: there shouldn't be an error
     try {
@@ -26,7 +28,9 @@ if (vars.get("$local.idvalues") && vars.get("$local.idvalues")[0])
     } 
     catch (err) 
     {
+        //This can happen if the task is done, then it can't be loaded. If that's the case, return a dummy row
         tasks = [];
+        dummyTask = [taskId, translate.text("Task done"), "", "", vars.get("$sys.date"), "", "", "", "", "", "", "", "", "", "", "", ""];
     }
 }
 else 
@@ -69,4 +73,7 @@ tasks = tasks.map(function (task)
 tasks = JditoFilterUtils.filterRecords(["UID", "NAME", "PROCESSDEFINITION_ID", "PROCESSINSTANCE_ID", 
     "CREATE_TIME", "FORMDEFINITION", "USER", "DESCRIPTION", "CATEGORY", "ASSIGNEE", "", "DUEDATE", "OWNER"], tasks, vars.get("$local.filter").filter);
 
+if (dummyTask)
+    tasks = [dummyTask];
+
 result.object(tasks);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index c1ce05f093..41a1270cf3 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -6053,6 +6053,9 @@
     <entry>
       <key>To check</key>
     </entry>
+    <entry>
+      <key>DSGVO Disclosure</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 953945b6de..90681049b5 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -50,6 +50,10 @@
       <key>Has marketing approved this step?</key>
       <value>Hat das Marketing diesem Schritt zugestimmt?</value>
     </entry>
+    <entry>
+      <key>Task done</key>
+      <value>Aufgabe abgeschlossen</value>
+    </entry>
     <entry>
       <key>Export process</key>
       <value>Prozess exportieren</value>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index b9320a5730..887df788ad 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -6103,6 +6103,9 @@
     <entry>
       <key>To check</key>
     </entry>
+    <entry>
+      <key>DSGVO Disclosure</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
-- 
GitLab