From 9ce8032a2ddc5cd0e143f73f6c75eb6ab7fa478e Mon Sep 17 00:00:00 2001
From: "p.neub" <p.neub@adito.de>
Date: Wed, 19 May 2021 10:58:45 +0200
Subject: [PATCH] =?UTF-8?q?[Projekt:=20xRM-Sales][TicketNr.:=201080452][Au?=
 =?UTF-8?q?tomatische=20Wahrscheinlichkeit=20soll=20nicht=20h=C3=B6here=20?=
 =?UTF-8?q?Werte=20=C3=BCberschreiben]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Salesproject_entity.aod                   |  4 +++
 .../entityfields/phase/onValueChange.js       | 25 +++++++++++++++++++
 .../recordcontainers/db/onDBUpdate.js         | 12 ---------
 3 files changed, 29 insertions(+), 12 deletions(-)
 create mode 100644 entity/Salesproject_entity/entityfields/phase/onValueChange.js

diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 7f800c660a3..f40a10ef01e 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -47,6 +47,10 @@
       <mandatory v="true" />
       <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/Salesproject_entity/entityfields/phase/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>PROJECTCODE</name>
diff --git a/entity/Salesproject_entity/entityfields/phase/onValueChange.js b/entity/Salesproject_entity/entityfields/phase/onValueChange.js
new file mode 100644
index 00000000000..4fbd8be4825
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phase/onValueChange.js
@@ -0,0 +1,25 @@
+import("Sql_lib");
+import("system.neon");
+import("system.vars");
+
+var currPobab = parseInt(
+    newSelect("SALESPROJECT.PROBABILITY")
+    .from("SALESPROJECT")
+    .where("SALESPROJECT.SALESPROJECTID", vars.get("$field.SALESPROJECTID"))
+    .cell()
+);
+var autoProbab = parseInt(
+    newSelect("SALESPROJECTPHASEDEFINITION.AUTOPROBABILITY")
+    .from("SALESPROJECTPHASEDEFINITION")
+    .where("SALESPROJECTPHASEDEFINITION.PHASE", vars.get("$this.value"))
+    .cell()
+);
+
+if(isNaN(autoProbab) || autoProbab < currPobab)
+{
+    neon.setFieldValue("$field.PROBABILITY", currPobab);
+}
+else
+{
+    neon.setFieldValue("$field.PROBABILITY", autoProbab);
+}
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index 29d8ada35d3..c9dfa3fa5c3 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -22,18 +22,6 @@ vars.get("$local.changed").forEach(function(fieldName) {
     
     switch (fieldName) {
         case "SALESPROJECT.PHASE":
-            typeValue = "SalesprojectPhase";
-            var autoProbab = newSelect("SALESPROJECTPHASEDEFINITION.AUTOPROBABILITY")
-                .from("SALESPROJECTPHASEDEFINITION")
-                .where("SALESPROJECTPHASEDEFINITION.PHASE", vars.get("$field.PHASE")).cell();
-            if(!isNaN(parseInt(autoProbab)))
-            {
-                newWhere("SALESPROJECT.SALESPROJECTID", vars.get("$field.SALESPROJECTID"))
-                .and("SALESPROJECT.PROBABILITY", autoProbab, SqlBuilder.LESS())
-                .updateFields({
-                    "PROBABILITY": autoProbab
-                }, "SALESPROJECT");
-            }
             break;
         case "SALESPROJECT.STATUS":
             // Milestone
-- 
GitLab