From c1d34917b464e56818051506152843de39544c2c Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Thu, 10 Sep 2020 14:54:14 +0200
Subject: [PATCH] Districts: Layout and Bugfixing

---
 .../DistrictResponsible_entity.aod            |  7 ++++++
 .../targetcontext/valueProcess.js             |  3 +++
 entity/District_entity/District_entity.aod    |  5 ++++
 .../valueProcess.js                           |  3 +++
 .../totalturnover/valueProcess.js             |  6 ++---
 .../recordcontainers/db/conditionProcess.js   | 23 ++++++++++++++-----
 entity/Person_entity/Person_entity.aod        |  4 ++--
 .../valueProcess.js                           |  5 ++--
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  2 +-
 .../DistrictFilter_view.aod                   |  4 ++++
 .../DistrictList_view/DistrictList_view.aod   |  5 ++++
 .../DistrictResponsibleList_view.aod          |  1 -
 .../DistrictResponsibleMultiEdit_view.aod     |  1 -
 .../DistrictResponsiblePreviewList_view.aod   |  1 -
 neonView/PersonMain_view/PersonMain_view.aod  | 10 ++++----
 15 files changed, 57 insertions(+), 23 deletions(-)
 create mode 100644 entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js
 create mode 100644 entity/District_entity/entityfields/districtsbycontactid_param/valueProcess.js
 rename entity/Person_entity/entityfields/districts/children/{onlyresponsibledistricts => districtsbycontactid_param}/valueProcess.js (78%)

diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
index 0bc19e1860..bffe4b6257 100644
--- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
+++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
@@ -87,6 +87,7 @@
       <name>DistrictResponsibles</name>
       <lookupIdfield>DISTRICTRESPONSIBLEID</lookupIdfield>
       <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/districtresponsibles/documentation.adoc</documentation>
+      <titlePlural>Responsibles</titlePlural>
       <dependencies>
         <entityDependency>
           <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name>
@@ -151,6 +152,8 @@
     </entityField>
     <entityProvider>
       <name>OrganisationResponsibles</name>
+      <targetContextField>targetContext</targetContextField>
+      <targetIdField>EMPLOYEE_CONTACT_ID</targetIdField>
       <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/organisationresponsibles/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
@@ -188,6 +191,10 @@
       <name>PHONE</name>
       <title>Phone</title>
     </entityField>
+    <entityField>
+      <name>targetContext</name>
+      <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js
new file mode 100644
index 0000000000..8ba819b0b1
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("Person");
\ No newline at end of file
diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod
index a469cee1fb..b42efad4e6 100644
--- a/entity/District_entity/District_entity.aod
+++ b/entity/District_entity/District_entity.aod
@@ -94,6 +94,10 @@
           <name>ExcludedDistrictIds_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>DistrictsByContactId_param</name>
+          <mandatory v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -193,6 +197,7 @@
     </entityField>
     <entityParameter>
       <name>DistrictsByContactId_param</name>
+      <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtsbycontactid_param/valueProcess.js</valueProcess>
       <expose v="true" />
     </entityParameter>
     <entityField>
diff --git a/entity/District_entity/entityfields/districtsbycontactid_param/valueProcess.js b/entity/District_entity/entityfields/districtsbycontactid_param/valueProcess.js
new file mode 100644
index 0000000000..289f9107d4
--- /dev/null
+++ b/entity/District_entity/entityfields/districtsbycontactid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("$$$###ignore_param###$$$");//dummy value, for special treatment in the conditionProcess
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/totalturnover/valueProcess.js b/entity/District_entity/entityfields/totalturnover/valueProcess.js
index a73247c1ab..40d9732b34 100644
--- a/entity/District_entity/entityfields/totalturnover/valueProcess.js
+++ b/entity/District_entity/entityfields/totalturnover/valueProcess.js
@@ -22,13 +22,13 @@ if (appliedFilter)
         .join("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
         .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
         .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID")
-        .where("SALESORDER.SALESORDERDATE", DateUtils.getCurrentYear(), SqlBuilder.YEAR_EQUALS(), SQLTYPES.INTEGER)
-        .and(db.toFilterCondition(appliedFilter, "Organisation_entity"))
+        .where(db.toFilterCondition(appliedFilter, "Organisation_entity"))
+        //.and("SALESORDER.SALESORDERDATE", DateUtils.getCurrentYear(), SqlBuilder.YEAR_EQUALS(), SQLTYPES.INTEGER)
         .cell();
 }
 
 if (districtTurnover)
-    text.formatDouble(districtTurnover, "#,##0.00");
+    districtTurnover = text.formatDouble(districtTurnover, "#,##0.00", true);
 else
     districtTurnover = "0";
 
diff --git a/entity/District_entity/recordcontainers/db/conditionProcess.js b/entity/District_entity/recordcontainers/db/conditionProcess.js
index 550838ae02..8329757ab9 100644
--- a/entity/District_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/District_entity/recordcontainers/db/conditionProcess.js
@@ -6,12 +6,23 @@ var onlyResponsibleParam = vars.get("$param.DistrictsByContactId_param");
 var cond = newWhere();
 if (onlyResponsibleParam)
 {
-    var responsibleDistricts = newSelect("DISTRICTRESPONSIBLE.DISTRICT_ID")
-                                    .from("DISTRICTRESPONSIBLE")
-                                    .where("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID", onlyResponsibleParam)
-                                    .arrayColumn();
-    
-    cond.and("DISTRICT.DISTRICTID", responsibleDistricts, SqlBuilder.IN());
+    //dummy value, if the dummy value is here, we can safely ignore that param, otherwise we need to filter the district list
+    if (onlyResponsibleParam != "$$$###ignore_param###$$$")
+    {
+        var responsibleDistricts = newSelect("DISTRICTRESPONSIBLE.DISTRICT_ID")
+                                        .from("DISTRICTRESPONSIBLE")
+                                        .where("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID", onlyResponsibleParam)
+                                        .arrayColumn();
+
+        cond.and("DISTRICT.DISTRICTID", responsibleDistricts, SqlBuilder.IN());
+    }
+}
+else
+{
+    //this will happen if the param was specified but is empty. This happen when you use the  consumer "ResponsibleDistricts" because the 
+    //parameter "DistrictsByContactId_param" is mandatory in that case. If the value is empty we must not return any data because we would see all
+    //districts otherwise
+    cond.and("1 = 2");
 }
 
 
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 63484e094c..2cc3bad53c 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -1320,8 +1320,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>OnlyResponsibleDistricts</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/onlyresponsibledistricts/valueProcess.js</valueProcess>
+          <name>DistrictsByContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Person_entity/entityfields/districts/children/onlyresponsibledistricts/valueProcess.js b/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js
similarity index 78%
rename from entity/Person_entity/entityfields/districts/children/onlyresponsibledistricts/valueProcess.js
rename to entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js
index e1c2fe5e69..e32550b2a4 100644
--- a/entity/Person_entity/entityfields/districts/children/onlyresponsibledistricts/valueProcess.js
+++ b/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js
@@ -2,9 +2,8 @@ import("system.vars");
 import("system.result");
 import("Employee_lib");
 
-
 var contactId = vars.get("$field.CONTACTID");
-
-if (EmployeeUtils.isUser(contactId)) {
+if (EmployeeUtils.isUser(contactId)) 
+{
     result.string(contactId);
 } 
\ No newline at end of file
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index c72543f26b..a819b77306 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -9325,7 +9325,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Responsibles</key>
-      <value>Gebietsverantwortliche</value>
+      <value>Verantwortliche</value>
     </entry>
     <entry>
       <key>Districts</key>
diff --git a/neonView/DistrictFilter_view/DistrictFilter_view.aod b/neonView/DistrictFilter_view/DistrictFilter_view.aod
index 55eac41d35..0ae033d234 100644
--- a/neonView/DistrictFilter_view/DistrictFilter_view.aod
+++ b/neonView/DistrictFilter_view/DistrictFilter_view.aod
@@ -20,6 +20,10 @@
         <element>DISTRICT_NUMBER</element>
       </linkedColumns>
       <columns>
+        <neonTreeTableColumn>
+          <name>923c5603-ed8f-4924-8a1d-9f6cc0d170e6</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>9f8e99dc-cfb3-4038-b949-27571f787db2</name>
           <entityField>DISTRICT_NAME</entityField>
diff --git a/neonView/DistrictList_view/DistrictList_view.aod b/neonView/DistrictList_view/DistrictList_view.aod
index 4525f95ab6..161c81303a 100644
--- a/neonView/DistrictList_view/DistrictList_view.aod
+++ b/neonView/DistrictList_view/DistrictList_view.aod
@@ -13,6 +13,7 @@
       <name>treeTableViewTemplate</name>
       <parentField>PARENTDISTRICT_DISTRICTID</parentField>
       <hideActions v="true" />
+      <showChildrenCount v="false" />
       <entityField>#ENTITY</entityField>
       <linkedColumns />
       <defaultGroupFields />
@@ -22,6 +23,10 @@
       <isDeletable v="false" />
       <isEditable v="false" />
       <columns>
+        <neonTreeTableColumn>
+          <name>6c3d52d5-8a51-4fd5-9b26-a54485c8f5a6</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>15a66360-dff7-4d21-b4e1-f48102f0bda1</name>
           <entityField>DISTRICT_NAME</entityField>
diff --git a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
index 9a9327680d..2d6c800894 100644
--- a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
+++ b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
@@ -1,7 +1,6 @@
 <?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>DistrictResponsibleList_view</name>
-  <title>Responsibles</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <noneLayout>
diff --git a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
index 5446115f96..b03d4f1669 100644
--- a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
+++ b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
@@ -12,7 +12,6 @@
     <genericMultipleViewTemplate>
       <name>genericViewTemplate</name>
       <entityField>#ENTITY</entityField>
-      <title>Responsible</title>
       <columns>
         <neonGenericMultipleTableColumn>
           <name>e1988e26-68a4-4a96-a484-4d9f7506505d</name>
diff --git a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
index d04097450b..7e50b1a724 100644
--- a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
+++ b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
@@ -1,7 +1,6 @@
 <?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>DistrictResponsiblePreviewList_view</name>
-  <title>Contactperson</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <noneLayout>
diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod
index 1151edfebd..918eaa3936 100644
--- a/neonView/PersonMain_view/PersonMain_view.aod
+++ b/neonView/PersonMain_view/PersonMain_view.aod
@@ -49,6 +49,11 @@
       <entityField>Documents</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>f826f154-bf7f-4c7e-9ce2-3105cc629851</name>
+      <entityField>#ENTITY</entityField>
+      <view>PersonDistricts_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>5754fc3a-c81c-42ba-90ea-2859b10bb391</name>
       <entityField>LogHistories</entityField>
@@ -64,10 +69,5 @@
       <entityField>SelfDuplicatesUncached</entityField>
       <view>PersonFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>f826f154-bf7f-4c7e-9ce2-3105cc629851</name>
-      <entityField>#ENTITY</entityField>
-      <view>PersonDistricts_view</view>
-    </neonViewReference>
   </children>
 </neonView>
-- 
GitLab