From 1a38550e22810b898ef3c895eb722e5c535322c9 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Wed, 17 Apr 2019 17:04:51 +0200
Subject: [PATCH] salesproject Meilensteine als zwei charts

---
 .../SalesprojectMilestone_entity.aod          | 59 +++++++++++++++----
 .../children/type_param/valueProcess.js       |  3 +
 .../children/type_param/valueProcess.js       |  3 +
 .../entityfields/value/titleProcess.js        | 10 ++++
 .../recordcontainers/db/conditionProcess.js   |  5 +-
 .../titleProcess.js                           | 10 ++++
 .../Salesproject_entity.aod                   | 15 ++++-
 .../salesprojectid_param/valueProcess.js      |  0
 neonContext/Salesproject/Salesproject.aod     |  4 ++
 .../SalesprojectMain_view.aod                 |  8 +--
 .../SalesprojectMilestone_view.aod            | 23 ++++++++
 11 files changed, 121 insertions(+), 19 deletions(-)
 create mode 100644 entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/type_param/valueProcess.js
 create mode 100644 entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/type_param/valueProcess.js
 create mode 100644 entity/SalesprojectMilestone_entity/entityfields/value/titleProcess.js
 create mode 100644 entity/SalesprojectMilestone_entity/titleProcess.js
 rename entity/Salesproject_entity/entityfields/{salesprojectmilestones => salesprojectphasemilestones}/children/salesprojectid_param/valueProcess.js (100%)
 create mode 100644 neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod

diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
index d390c31108e..34def483f6a 100644
--- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
+++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectMilestone_entity</name>
-  <title>Milestones</title>
+  <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titleProcess>%aditoprj%/entity/SalesprojectMilestone_entity/titleProcess.js</titleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -41,9 +42,9 @@
     </entityField>
     <entityField>
       <name>VALUE</name>
-      <title>Milestone</title>
       <consumer>Keywords</consumer>
       <mandatory v="true" />
+      <titleProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/titleProcess.js</titleProcess>
       <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
@@ -57,19 +58,15 @@
       <name>SalesprojectMilestones</name>
       <fieldType>DEPENDENCY_IN</fieldType>
       <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>b05e2bdf-5d8b-4ba2-8dba-a8560c255470</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>SalesprojectMilestones</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
       <children>
         <entityParameter>
           <name>SalesprojectId_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>Type_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityField>
@@ -95,6 +92,48 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>Type_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>StateMilestones</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>da87708b-e998-4694-81ae-d0068f789a89</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>SalesprojectStateMilestones</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>Type_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/type_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityProvider>
+      <name>PhaseMilestones</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>b132527b-990c-416a-b2d6-ddbe6f4397e2</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>SalesprojectPhaseMilestones</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>Type_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/type_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/type_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/type_param/valueProcess.js
new file mode 100644
index 00000000000..5b8076cef45
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/type_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("SalesprojectPhase");
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/type_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/type_param/valueProcess.js
new file mode 100644
index 00000000000..1a1b3322838
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/type_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("SalesprojectState");
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/titleProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/titleProcess.js
new file mode 100644
index 00000000000..658e8105ef1
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/value/titleProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+if (vars.exists("$field.TYPE") && vars.get("$field.TYPE"))
+{
+    result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE")));
+}
+else
+    result.string(translate.text("Milestones"));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
index 7711ad471a8..e0aa733ba87 100644
--- a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
@@ -3,8 +3,9 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var cond = new SqlCondition();
-cond.andPrepareVars("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param");
+var cond = SqlCondition.begin()
+                       .andPrepareVars("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param")
+                       .andPrepareVars("SALESPROJECT_MILESTONE.TYPE", "$param.Type_param");
 
 //TODO: use a preparedCondition when available #1030812 #1034026
 result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/titleProcess.js b/entity/SalesprojectMilestone_entity/titleProcess.js
new file mode 100644
index 00000000000..658e8105ef1
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/titleProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+if (vars.exists("$field.TYPE") && vars.get("$field.TYPE"))
+{
+    result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE")));
+}
+else
+    result.string(translate.text("Milestones"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 122da5bbb42..49c7559a789 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -135,18 +135,18 @@
       </children>
     </entityConsumer>
     <entityConsumer>
-      <name>SalesprojectMilestones</name>
+      <name>SalesprojectPhaseMilestones</name>
       <title>Milestone</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
         <entityName>SalesprojectMilestone_entity</entityName>
-        <fieldName>SalesprojectMilestones</fieldName>
+        <fieldName>PhaseMilestones</fieldName>
       </dependency>
       <children>
         <entityParameter>
           <name>SalesprojectId_param</name>
-          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
       </children>
@@ -547,6 +547,15 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityConsumer>
+      <name>SalesprojectStateMilestones</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>SalesprojectMilestone_entity</entityName>
+        <fieldName>StateMilestones</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js
similarity index 100%
rename from entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js
rename to entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js
diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod
index a5422082d26..918124f5577 100644
--- a/neonContext/Salesproject/Salesproject.aod
+++ b/neonContext/Salesproject/Salesproject.aod
@@ -26,5 +26,9 @@
       <name>c35cc718-94a8-43cf-afe4-f02d251d4e9f</name>
       <view>SalesprojectEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>9d4603e0-6e0e-4c9e-af97-f5c059debe9e</name>
+      <view>SalesprojectMilestone_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 9ea49e77d55..2ac8547b5b4 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -29,10 +29,10 @@
       <entityField>SalesprojectForecasts</entityField>
       <view>SalesprojectForecastFilter_view</view>
     </neonViewReference>
-	<neonViewReference>
-      <name>349a82ad-4a83-4718-b37e-b0adf1ddb0b2</name>
-      <entityField>SalesprojectMilestones</entityField>
-      <view>SalesprojectMilestoneChart_view</view>
+    <neonViewReference>
+      <name>8986df12-88fc-49a8-9e48-f4c1f371532f</name>
+      <entityField>#ENTITY</entityField>
+      <view>SalesprojectMilestone_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>5d7248e8-3f3e-4262-8f13-6d5eff7165c1</name>
diff --git a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod
new file mode 100644
index 00000000000..603dfb9ffa5
--- /dev/null
+++ b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod
@@ -0,0 +1,23 @@
+<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>SalesprojectMilestone_view</name>
+  <title>Milestones</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>30c775ea-7488-4dfd-8e6d-c65b7982849d</name>
+      <entityField>SalesprojectStateMilestones</entityField>
+      <view>SalesprojectMilestoneChart_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>cc8f1469-805f-4e2c-aa4f-d55f932c6deb</name>
+      <entityField>SalesprojectPhaseMilestones</entityField>
+      <view>SalesprojectMilestoneChart_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
-- 
GitLab