From 94625ba74bc2c7973edf127fa94fedcab192c83d Mon Sep 17 00:00:00 2001
From: "s.pongratz" <s.pongratz@adito.de>
Date: Thu, 9 Jul 2020 17:44:47 +0200
Subject: [PATCH] =?UTF-8?q?#1060544-VergabeBerechtigungen=20Actions=20hinz?=
 =?UTF-8?q?ugef=C3=BCgt=20mit=20Auslese?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../PermissionCalendar_entity.aod             | 22 +++++++++++++
 .../onActionProcess.js                        |  9 ++++++
 .../onActionProcess.js                        |  4 +--
 .../mandatoryProcess.js                       |  2 +-
 .../stateProcess.js                           |  8 ++---
 .../valueProcess.js                           |  0
 .../permissiondealer_type/valueProcess.js     | 13 ++++++--
 .../mandatoryProcess.js                       |  2 +-
 .../stateProcess.js                           | 11 +++----
 .../displayValueProcess.js                    |  6 ++++
 .../mandatoryProcess.js                       |  9 ++++++
 .../onValueChange.js                          |  9 ++++++
 .../stateProcess.js                           | 13 ++++++++
 .../permissionprocurer_type/valueProcess.js   | 15 ++++++---
 .../displayValueProcess.js                    | 11 +++----
 .../mandatoryProcess.js                       |  9 ++++++
 .../stateProcess.js                           | 13 ++++++++
 .../permissioncalendardb/conditionProcess.js  |  3 +-
 .../_____LANGUAGE_EXTRA.aod                   |  6 ++++
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  9 ++++++
 .../_____LANGUAGE_en/_____LANGUAGE_en.aod     |  6 ++++
 .../PermissionCalendar/PermissionCalendar.aod |  4 ---
 .../PermissionCalendarEditReverse_view.aod    | 31 -------------------
 .../PermissionCalendarEdit_view.aod           |  8 +++++
 .../PermissionCalendarFilterReverse_view.aod  |  3 +-
 process/PermissionCalendar_lib/process.js     |  1 +
 26 files changed, 160 insertions(+), 67 deletions(-)
 create mode 100644 entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewdepartmentpermissionprocureraction/onActionProcess.js
 rename entity/PermissionCalendar_entity/entityfields/{permissiondealer_user_rowid => permissiondealer_rowid}/valueProcess.js (100%)
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/displayValueProcess.js
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/mandatoryProcess.js
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/onValueChange.js
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/stateProcess.js
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/mandatoryProcess.js
 create mode 100644 entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/stateProcess.js
 delete mode 100644 neonView/PermissionCalendarEditReverse_view/PermissionCalendarEditReverse_view.aod

diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
index ffffa204d1..6fabd72427 100644
--- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
+++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
@@ -173,6 +173,7 @@
     <entityField>
       <name>permissionDealer_rowId</name>
       <title>Permission Dealer</title>
+      <valueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissiondealer_rowid/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissiondealer_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -202,6 +203,8 @@
       <name>permissionProcurer_User_RowId</name>
       <title>Permission Procurer User</title>
       <consumer>User</consumer>
+      <mandatoryProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/stateProcess.js</stateProcess>
       <displayValueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/onValueChange.js</onValueChange>
     </entityField>
@@ -214,8 +217,27 @@
           <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewuserpermissionprocureraction/onActionProcess.js</onActionProcess>
           <iconId>VAADIN:USER</iconId>
         </entityActionField>
+        <entityActionField>
+          <name>addNewDepartmentPermissionProcurerAction</name>
+          <title>Grant new Department Permission</title>
+          <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewdepartmentpermissionprocureraction/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:GROUP</iconId>
+        </entityActionField>
       </children>
     </entityActionGroup>
+    <entityField>
+      <name>permissionProcurer_Department_RowId</name>
+      <title>Permission Procurer Department</title>
+      <consumer>Departments</consumer>
+      <mandatoryProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/onValueChange.js</onValueChange>
+    </entityField>
+    <entityParameter>
+      <name>PermissionProcurerType_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewdepartmentpermissionprocureraction/onActionProcess.js b/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewdepartmentpermissionprocureraction/onActionProcess.js
new file mode 100644
index 0000000000..1d2df49b67
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewdepartmentpermissionprocureraction/onActionProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("PermissionCalendar_lib");
+import("system.vars");
+import("system.neon");
+
+var params = {};
+params["PermissionProcurerType_param"] = $KeywordRegistry.permissionCalendarType$department();
+params["PermissionDealer_param"] = vars.get("$param.PermissionDealer_param");
+neon.openContext("PermissionCalendar", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewuserpermissionprocureraction/onActionProcess.js b/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewuserpermissionprocureraction/onActionProcess.js
index b19d4ef7af..f2036f9dd0 100644
--- a/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewuserpermissionprocureraction/onActionProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/addactionsreverse/children/addnewuserpermissionprocureraction/onActionProcess.js
@@ -4,6 +4,6 @@ import("system.vars");
 import("system.neon");
 
 var params = {};
-params["PermissionDealerType_param"] = $KeywordRegistry.permissionCalendarType$user();
+params["PermissionProcurerType_param"] = $KeywordRegistry.permissionCalendarType$user();
 params["PermissionDealer_param"] = vars.get("$param.PermissionDealer_param");
-neon.openContext("PermissionCalendar", "PermissionCalendarEditReverse_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
+neon.openContext("PermissionCalendar", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/mandatoryProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/mandatoryProcess.js
index b0dd49473c..ce5b287666 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/mandatoryProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/mandatoryProcess.js
@@ -3,7 +3,7 @@ import("system.vars");
 import("system.result");
 import("PermissionCalendar_lib");
 
-if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$department())
+if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$department()&& vars.getString("$param.PermissionProcurer_param"))
     result.string(true);
 else
     result.string(false);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/stateProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/stateProcess.js
index 9d47dab7c4..3d2ee67a3d 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/stateProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissiondealer_department_rowid/stateProcess.js
@@ -4,10 +4,10 @@ import("system.result");
 import("PermissionCalendar_lib");
 import("system.neon");
 
-if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$department())
+if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$department()&& vars.getString("$param.PermissionProcurer_param"))
     if(vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-        result.string("READONLY")
+        result.string(neon.COMPONENTSTATE_READONLY)
     else
-        result.string("EDITABLE");
+        result.string(neon.COMPONENTSTATE_EDITABLE);
 else
-    result.string("INVISIBLE");
\ No newline at end of file
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/valueProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_rowid/valueProcess.js
similarity index 100%
rename from entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/valueProcess.js
rename to entity/PermissionCalendar_entity/entityfields/permissiondealer_rowid/valueProcess.js
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_type/valueProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_type/valueProcess.js
index c02d458db6..de18eafdc4 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissiondealer_type/valueProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissiondealer_type/valueProcess.js
@@ -1,8 +1,15 @@
+import("system.neon");
+import("PermissionCalendar_lib");
 import("system.result");
 import("system.vars");
 
 
-let permissionDealerType = vars.get("$param.PermissionDealerType_param");
+let permissionProcurerType = vars.get("$param.PermissionDealerType_param");
 
-if (vars.get("$this.value") == null && permissionDealerType)
-    result.string(permissionDealerType);
\ No newline at end of file
+if(vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) 
+{
+    if (permissionProcurerType)
+        result.string(permissionProcurerType);
+    else
+        result.string(PermissionCalendar.getObjectType(vars.get("$param.PermissionDealer_param")));
+}
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/mandatoryProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/mandatoryProcess.js
index 20c989da57..e21c5a274d 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/mandatoryProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/mandatoryProcess.js
@@ -3,7 +3,7 @@ import("system.vars");
 import("system.result");
 import("PermissionCalendar_lib");
 
-if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$user())
+if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$user() && vars.getString("$param.PermissionProcurer_param"))
     result.string(true);
 else
     result.string(false);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/stateProcess.js b/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/stateProcess.js
index d1da690a3e..e17b225d17 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/stateProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissiondealer_user_rowid/stateProcess.js
@@ -4,13 +4,10 @@ import("system.result");
 import("PermissionCalendar_lib");
 import("system.neon");
 
-if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$user())
+if(vars.getString("$field.PERMISSIONDEALER_TYPE") == $KeywordRegistry.permissionCalendarType$user() && vars.getString("$param.PermissionProcurer_param"))
     if(vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-        result.string("READONLY");
+        result.string(neon.COMPONENTSTATE_READONLY)
     else
-        if (vars.getString("$param.PermissionDealer_param"))
-            result.string("READONLY");
-        else
-            result.string("EDITABLE");
+        result.string(neon.COMPONENTSTATE_EDITABLE);
 else
-    result.string("INVISIBLE");
\ No newline at end of file
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/displayValueProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/displayValueProcess.js
new file mode 100644
index 0000000000..d5a26f0a31
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+
+let display = vars.get("$field.PERMISSIONPROCURER_ROWID.displayValue");
+if(display != "undefined")
+    result.string(vars.get("$field.PERMISSIONPROCURER_ROWID.displayValue"));
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/mandatoryProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/mandatoryProcess.js
new file mode 100644
index 0000000000..6736c4a5ec
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/mandatoryProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("PermissionCalendar_lib");
+
+if(vars.getString("$field.PERMISSIONPROCURER_TYPE") == $KeywordRegistry.permissionCalendarType$department() && vars.getString("$param.PermissionDealer_param"))
+    result.string(true);
+else
+    result.string(false);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/onValueChange.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/onValueChange.js
new file mode 100644
index 0000000000..a10a281ce5
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/onValueChange.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$this.value") != null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    vars.set("$field.PERMISSIONPROCURER_ROWID", vars.get("$this.value"));
+    vars.set("$field.PERMISSIONPROCURER_TYPE", $KeywordRegistry.permissionCalendarType$department());
+}
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/stateProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/stateProcess.js
new file mode 100644
index 0000000000..69ad9d69c7
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_department_rowid/stateProcess.js
@@ -0,0 +1,13 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("PermissionCalendar_lib");
+import("system.neon");
+
+if(vars.getString("$field.PERMISSIONPROCURER_TYPE") == $KeywordRegistry.permissionCalendarType$department() && vars.getString("$param.PermissionDealer_param"))
+    if(vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+        result.string(neon.COMPONENTSTATE_READONLY)
+    else
+        result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_type/valueProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_type/valueProcess.js
index 2cb573dc51..7d609bbc47 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_type/valueProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_type/valueProcess.js
@@ -1,8 +1,15 @@
+import("system.neon");
 import("PermissionCalendar_lib");
-import("Employee_lib");
 import("system.result");
-import("system.neon");
 import("system.vars");
 
-if(vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.PermissionProcurer_param"))
-    result.string(PermissionCalendar.getObjectType(vars.get("$param.PermissionProcurer_param")));
\ No newline at end of file
+
+let permissionProcurerType = vars.get("$param.PermissionProcurerType_param");
+
+if(vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) 
+{
+    if (permissionProcurerType)
+        result.string(permissionProcurerType);
+    else
+        result.string(PermissionCalendar.getObjectType(vars.get("$param.PermissionProcurer_param")));
+}
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/displayValueProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/displayValueProcess.js
index 4aed107595..d5a26f0a31 100644
--- a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/displayValueProcess.js
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/displayValueProcess.js
@@ -1,9 +1,6 @@
-import("KeywordRegistry_basic");
-import("system.result");
 import("system.vars");
-import("PermissionCalendar_lib");
-
-let permissionProcurerUserDisplay = PermissionCalendar.getNameDisplay(vars.getString("$this.value"), $KeywordRegistry.permissionCalendarType$user());
+import("system.result");
 
-if (permissionProcurerUserDisplay != "undefined")
-    result.string(permissionProcurerUserDisplay);
+let display = vars.get("$field.PERMISSIONPROCURER_ROWID.displayValue");
+if(display != "undefined")
+    result.string(vars.get("$field.PERMISSIONPROCURER_ROWID.displayValue"));
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/mandatoryProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/mandatoryProcess.js
new file mode 100644
index 0000000000..c958afbcaa
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/mandatoryProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("PermissionCalendar_lib");
+
+if(vars.getString("$field.PERMISSIONPROCURER_TYPE") == $KeywordRegistry.permissionCalendarType$user() && vars.getString("$param.PermissionDealer_param"))
+    result.string(true);
+else
+    result.string(false);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/stateProcess.js b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/stateProcess.js
new file mode 100644
index 0000000000..1af2036a8c
--- /dev/null
+++ b/entity/PermissionCalendar_entity/entityfields/permissionprocurer_user_rowid/stateProcess.js
@@ -0,0 +1,13 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("PermissionCalendar_lib");
+import("system.neon");
+
+if(vars.getString("$field.PERMISSIONPROCURER_TYPE") == $KeywordRegistry.permissionCalendarType$user() && vars.getString("$param.PermissionDealer_param"))
+    if(vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+        result.string(neon.COMPONENTSTATE_READONLY)
+    else
+        result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/PermissionCalendar_entity/recordcontainers/permissioncalendardb/conditionProcess.js b/entity/PermissionCalendar_entity/recordcontainers/permissioncalendardb/conditionProcess.js
index 80d6ae15b8..82af1af206 100644
--- a/entity/PermissionCalendar_entity/recordcontainers/permissioncalendardb/conditionProcess.js
+++ b/entity/PermissionCalendar_entity/recordcontainers/permissioncalendardb/conditionProcess.js
@@ -9,7 +9,8 @@ let permissionDealer = vars.getString("$param.PermissionDealer_param");
 var cond = new SqlBuilder();
 if (permissionProcurer) 
 {
-    cond.whereIfSet("AB_PERMISSIONCALENDAR.PERMISSIONPROCURER_ROWID", EmployeeUtils.sliceUserId(permissionProcurer));
+    cond.whereIfSet("AB_PERMISSIONCALENDAR.PERMISSIONPROCURER_ROWID", EmployeeUtils.sliceUserId(permissionProcurer))
+    .orIfSet("AB_PERMISSIONCALENDAR.PERMISSIONPROCURER_ROWID", PermissionCalendar.getAllParents(permissionProcurer) , SqlBuilder.IN());
 } 
 else if (permissionDealer)  
 {
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 63ba21d8ce..754ed5d700 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -6851,6 +6851,12 @@
     <entry>
       <key>Workflow Model</key>
     </entry>
+    <entry>
+      <key>Permission Procurer Department</key>
+    </entry>
+    <entry>
+      <key>Grant new Department Permission</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 23532c5d74..093846f329 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -8771,6 +8771,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Permission Procurer User</key>
+      <value>Rechteempfänger Benutzer</value>
     </entry>
     <entry>
       <key>Grant new User Permission</key>
@@ -8779,6 +8780,14 @@ Bitte Datumseingabe prüfen</value>
     <entry>
       <key>Workflow Model</key>
     </entry>
+    <entry>
+      <key>Permission Procurer Department</key>
+      <value>Rechteempfänger Abteilung</value>
+    </entry>
+    <entry>
+      <key>Grant new Department Permission</key>
+      <value>Neue Abteilungs-Berechtigung vergeben</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 48dca7bfd8..a2eaa32042 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -6917,6 +6917,12 @@
     <entry>
       <key>Workflow Model</key>
     </entry>
+    <entry>
+      <key>Permission Procurer Department</key>
+    </entry>
+    <entry>
+      <key>Grant new Department Permission</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/PermissionCalendar/PermissionCalendar.aod b/neonContext/PermissionCalendar/PermissionCalendar.aod
index 2a143ec693..01c68cf39a 100644
--- a/neonContext/PermissionCalendar/PermissionCalendar.aod
+++ b/neonContext/PermissionCalendar/PermissionCalendar.aod
@@ -27,9 +27,5 @@
       <name>e0b5c183-3f5c-48ad-ba6c-60ae1a0c3b85</name>
       <view>PermissionCalendarFilterDrawer_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>dd1363e0-d7ba-44d3-b587-e243b760d9e4</name>
-      <view>PermissionCalendarEditReverse_view</view>
-    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/PermissionCalendarEditReverse_view/PermissionCalendarEditReverse_view.aod b/neonView/PermissionCalendarEditReverse_view/PermissionCalendarEditReverse_view.aod
deleted file mode 100644
index 3fca170746..0000000000
--- a/neonView/PermissionCalendarEditReverse_view/PermissionCalendarEditReverse_view.aod
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
-  <name>PermissionCalendarEditReverse_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <noneLayout>
-      <name>layout</name>
-    </noneLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>PermissionCalendarEditReverseGeneric</name>
-      <editMode v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>c40a7708-1983-4848-a93c-92b873104095</name>
-          <entityField>PERMISSION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>8da9a2ae-f338-4342-b762-125e972d4980</name>
-          <entityField>permissionProcurer_User_RowId</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>7ce1d83a-9d5c-4c36-81a8-2e832448eaaf</name>
-          <entityField>PERMISSIONDEALER_USER_ROWID</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
index 9e557d4f2e..60c76072d2 100644
--- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
+++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
@@ -27,6 +27,14 @@
           <name>bf110421-8305-47c4-8bab-d859b14c7bd4</name>
           <entityField>PERMISSIONDEALER_USER_ROWID</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>687b28e4-ea71-40d9-92b4-c771c5c04132</name>
+          <entityField>permissionProcurer_Department_RowId</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>413799e6-1f74-43c9-a947-6b5423b75aa2</name>
+          <entityField>permissionProcurer_User_RowId</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
index 41f27fe542..e3ac3b974a 100644
--- a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
+++ b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
@@ -16,8 +16,7 @@
       <favoriteActionGroup1>AddActionsReverse</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
       <isCreatable v="false" />
-      <isDeletable v="false" />
-      <isEditable v="false" />
+      <isEditable v="true" />
       <title></title>
       <columns>
         <neonTableColumn>
diff --git a/process/PermissionCalendar_lib/process.js b/process/PermissionCalendar_lib/process.js
index 453eced128..25a29b8bd5 100644
--- a/process/PermissionCalendar_lib/process.js
+++ b/process/PermissionCalendar_lib/process.js
@@ -415,6 +415,7 @@ PermissionCalendar.getPermissions = function(pCurrentUser)
     .select("AB_PERMISSIONCALENDARID, PERMISSIONDEALER_ROWID, PERMISSIONDEALER_TYPE, PERMISSIONPROCURER_ROWID, PERMISSION")
     .from("AB_PERMISSIONCALENDAR")
     .where("AB_PERMISSIONCALENDAR.PERMISSIONPROCURER_ROWID", pCurrentUser)
+    .orIfSet("AB_PERMISSIONCALENDAR.PERMISSIONPROCURER_ROWID", PermissionCalendar.getAllParents(EmployeeUtils.prefixUserId(pCurrentUser)) , SqlBuilder.IN())
     .orderBy("PERMISSIONDEALER_ROWID ASC")
     .table();
 };
-- 
GitLab