From c782012b71d0c318c6475b3330c01164b53b6404 Mon Sep 17 00:00:00 2001
From: "c.wimmer" <c.wimmer@cwimmer-nb.aditosoftware.local>
Date: Fri, 18 Dec 2020 17:32:01 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Crowd-Development=20/=20Besuch=20vo?=
 =?UTF-8?q?r=20Ort][TicketNr.:=201068897][[Feature]=20Sammlung=20f=C3=BCr?=
 =?UTF-8?q?=20weitere=20Ideen]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../VisitPlanEntry_entity.aod                 |  9 +++++
 .../begin_time/dropDownProcess.js             |  9 +++--
 .../entityfields/begin_time/onValueChange.js  | 11 ++++++
 .../entityfields/begin_time/valueProcess.js   |  1 -
 .../entityfields/end_time/dropDownProcess.js  |  9 +++--
 .../VisitRecommendation_entity.aod            |  1 +
 .../initFilterProcess.js                      | 37 +++++++++++++++++++
 .../recordcontainers/jdito/contentProcess.js  |  2 +-
 8 files changed, 69 insertions(+), 10 deletions(-)
 create mode 100644 entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js
 create mode 100644 entity/VisitRecommendation_entity/initFilterProcess.js

diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
index 911e30fab21..6447068d1fb 100644
--- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
+++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
@@ -69,6 +69,11 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/end_time/valueProcess.js</valueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>BEGIN_TIME</name>
@@ -80,6 +85,10 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
     </entityField>
     <entityActionGroup>
       <name>entityActionGroup</name>
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
index f5ef197dc6d..12411ad70b3 100644
--- a/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
@@ -12,13 +12,14 @@ for(var i = 0; i < 24; i++)
     i = i.toString();
     if(i.length == 1)
     {
-        values.push([datetime.toLong("0" + i + ":00", "HH:mm"), "0" + i + ":00"]);
-        values.push([datetime.toLong("0" + i + ":30", "HH:mm"), "0" + i + ":30"]);
+        values.push([datetime.toLong("0" + i + ":00", "HH:mm", "UTC"), "0" + i + ":00"]);
+        values.push([datetime.toLong("0" + i + ":30", "HH:mm", "UTC"), "0" + i + ":30"]);
     }
     else
     {
-        values.push([datetime.toLong(i + ":00", "HH:mm"), i + ":00"]);
-        values.push([datetime.toLong(i + ":30", "HH:mm"), i + ":30"]);
+        values.push([datetime.toLong(i + ":00", "HH:mm", "UTC"), i + ":00"]);
+        if(i != "23")
+            values.push([datetime.toLong(i + ":30", "HH:mm", "UTC"), i + ":30"]);
     }
 }
 
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js
new file mode 100644
index 00000000000..c126a5d2a26
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js
@@ -0,0 +1,11 @@
+import("system.logging");
+import("system.datetime");
+import("system.vars");
+import("system.eMath");
+import("system.neon");
+
+logging.log(eMath.absInt(vars.get("$this.value")))
+if(datetime.toDate(vars.get("$this.value"), "HH:mm") == "23:00")
+    neon.setFieldValue("$field.END_TIME", eMath.absInt(vars.get("$this.value")) + datetime.ONE_MINUTE * 30);
+else
+    neon.setFieldValue("$field.END_TIME", eMath.absInt(vars.get("$this.value")) + datetime.ONE_HOUR);
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
index f320a45527c..052b11da3b9 100644
--- a/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
@@ -4,7 +4,6 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 
-// 7am as default value if field is empty and recordstate = new
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null)
 {
     result.string(datetime.toLong("07:00", "HH:mm"));
diff --git a/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js b/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
index fad1ff9a83e..fc6e5d4034f 100644
--- a/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
@@ -12,13 +12,14 @@ for(var i = 0; i < 24; i++)
     i = i.toString();
     if(i.length == 1)
     {
-        values.push([datetime.toLong("0" + i + ":00", "HH:mm"), "0" + i + ":00"]);
-        values.push([datetime.toLong("0" + i + ":30", "HH:mm"), "0" + i + ":30"]);
+        if(i != "0")
+            values.push([datetime.toLong("0" + i + ":00", "HH:mm", "UTC"), "0" + i + ":00"]);
+        values.push([datetime.toLong("0" + i + ":30", "HH:mm", "UTC"), "0" + i + ":30"]);
     }
     else 
     {
-        values.push([datetime.toLong(i + ":00", "HH:mm"), i + ":00"]);
-        values.push([datetime.toLong(i + ":30", "HH:mm"), i + ":30"]);
+        values.push([datetime.toLong(i + ":00", "HH:mm", "UTC"), i + ":00"]);
+        values.push([datetime.toLong(i + ":30", "HH:mm", "UTC"), i + ":30"]);
     }
 }
 
diff --git a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
index 24e4568c65e..0aa7cf7d9db 100644
--- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
+++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
@@ -6,6 +6,7 @@
   <iconProcess>%aditoprj%/entity/VisitRecommendation_entity/iconProcess.js</iconProcess>
   <title>Visit Recommendation</title>
   <grantCreate v="true" />
+  <initFilterProcess>%aditoprj%/entity/VisitRecommendation_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:BRIEFCASE</iconId>
   <image>VAADIN:BRIEFCASE</image>
   <titlePlural>Visit Recommendations</titlePlural>
diff --git a/entity/VisitRecommendation_entity/initFilterProcess.js b/entity/VisitRecommendation_entity/initFilterProcess.js
new file mode 100644
index 00000000000..bda986ba45a
--- /dev/null
+++ b/entity/VisitRecommendation_entity/initFilterProcess.js
@@ -0,0 +1,37 @@
+import("Contact_lib");
+import("system.neon");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("system.result");
+import("Employee_lib");
+
+
+if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER) 
+{
+    var sourceKey = $KeywordRegistry.visitRecommendationPrioSource$manual()
+    filter = {
+        type: "group",
+        operator: "OR",
+        childs: [{
+            type: "row",
+            name: "RESPONSIBLE",
+            operator: "EQUAL",
+            contenttype: "TEXT",
+            key: EmployeeUtils.getCurrentContactId(),
+            value: ContactUtils.getFullTitleByContactId(EmployeeUtils.getCurrentContactId(), false)
+        },
+        {
+            type: "row",
+            name: "RESPONSIBLE",
+            operator: "ISNULL",
+            contenttype: "TEXT",
+            key: ""
+        }
+    ]
+    };
+    res = JSON.stringify(filter);
+}
+
+if (res)
+    result.string(res);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index 2c1eda5488e..980747cff5b 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -21,7 +21,7 @@ import("Address_lib");
 var recommendationData = [];
 var tmpData = [];
 var activitySubQuery = "";
-
+logging.log(JSON.stringify(vars.get("$local.filter")));
 var recommendationSQLData = newSelect(
                             [
                                 "VISITRECOMMENDATIONID",                //0
-- 
GitLab