From 82842e577c206421bcbbb404d8875986df2cdad5 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Fri, 8 Mar 2019 16:33:05 +0100
Subject: [PATCH] fix salesprojext

---
 .../entityfields/volume/titleProcess.js          |  2 +-
 .../Salesproject_entity/Salesproject_entity.aod  |  7 ++-----
 .../entityfields/volume/contentTypeProcess.js    | 13 -------------
 .../entityfields/volume/displayValueProcess.js   |  6 ++++++
 .../entityfields/volume/onValidation.js          | 15 +++++++++++++++
 .../volume.displayvalue/expression.js            |  6 ------
 .../_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod  |  9 +++++++++
 language/_____LANGUAGE_de/_____LANGUAGE_de.aod   | 11 +++++++++++
 language/_____LANGUAGE_en/_____LANGUAGE_en.aod   | 11 +++++++++++
 .../data_alias/basic/2019.2/fix_sp_phases.xml    | 16 ++++++++++++++++
 10 files changed, 71 insertions(+), 25 deletions(-)
 delete mode 100644 entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/volume/displayValueProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/volume/onValidation.js
 delete mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js

diff --git a/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js b/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
index e8c2da35cd4..dd25fd0e8ea 100644
--- a/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
+++ b/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("system.translate");
 
-result.string(translate.text("${VOLUME_MONEY}") + translate.text("${THOUSAND_SHORT}") + translate.text("${EURO_SIGN}"));
\ No newline at end of file
+result.string(translate.text("${VOLUME_MONEY}") + " " + translate.text("${THOUSAND_SHORT}") + " " + translate.text("${EURO_SIGN}"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 7230670a82e..b2c19d80712 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -83,7 +83,8 @@
       <name>VOLUME</name>
       <title>Volume</title>
       <description>The displayValue from the recoord container adds T € (translated)</description>
-      <contentTypeProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js</contentTypeProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/volume/onValidation.js</onValidation>
     </entityField>
     <entityConsumer>
       <name>Organisations</name>
@@ -501,10 +502,6 @@
           <name>CONTACT_ID.displayValue</name>
           <recordfield>ORGANISATION.NAME</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>VOLUME.displayValue</name>
-          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PROBABILITY.displayValue</name>
           <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js</expression>
diff --git a/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js b/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js
deleted file mode 100644
index ce76b0444f1..00000000000
--- a/entity/Salesproject_entity/entityfields/volume/contentTypeProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.result");
-import("system.vars");
-import("system.neon");
-
-var recordState = vars.get("$sys.recordstate");
-if (recordState == neon.OPERATINGSTATE_EDIT || recordState == neon.OPERATINGSTATE_NEW)
-{
-    result.string("NUMBER");
-}
-else
-{
-    result.string("TEXT");
-}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js
new file mode 100644
index 00000000000..55d8076a737
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+var volume = vars.get("$field.VOLUME");
+result.string(parseInt(volume) + " " + translate.text("${THOUSAND_SHORT}") + " " + translate.text("${EURO_SIGN}"))
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/volume/onValidation.js b/entity/Salesproject_entity/entityfields/volume/onValidation.js
new file mode 100644
index 00000000000..b8e79ba522d
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/volume/onValidation.js
@@ -0,0 +1,15 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("PostalAddress_lib");
+import("Entity_lib");
+
+// TODO: displayValue + contentType number crashes so we use TEXT and validate ourselve
+// Workaround for 1035861
+
+var volume =  ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VOLUME"));
+var message = "";
+if (!/^\d+$/.test(volume))
+    message = translate.text("Only numbers are allowed.");
+    
+result.string(message);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js
deleted file mode 100644
index 542d45f41cf..00000000000
--- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.translate");
-import("system.result");
-import("Sql_lib");
-
-var maskingUtils = new SqlMaskingUtils();
-result.string(maskingUtils.concat(["char(SALESPROJECT.VOLUME)", "'" + translate.text("${THOUSAND_SHORT}") + "'", "'" + translate.text("${EURO_SIGN}") + "'"], " ", true))
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 0d7b4a721cd..f143950a67e 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2532,6 +2532,15 @@
     <entry>
       <key>Only numbers are allowed.</key>
     </entry>
+    <entry>
+      <key>Superordinate Attribute</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</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 013f088551c..ad87e840639 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -58,6 +58,10 @@
       <key>Communication data</key>
       <value>Kommunikationsdaten</value>
     </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</key>
+      <value>Negotiation</value>
+    </entry>
     <entry>
       <key>Male</key>
       <value>Männlich</value>
@@ -86,6 +90,10 @@
       <key>Time expenses</key>
       <value>Aufwand</value>
     </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+      <value>Offer</value>
+    </entry>
     <entry>
       <key>Status</key>
       <value>Status</value>
@@ -2962,6 +2970,9 @@
       <key>Only numbers are allowed.</key>
       <value>Es sind nur Zahlen erlaubt.</value>
     </entry>
+    <entry>
+      <key>Parent Attribute</key>
+    </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 4f52d66b2f1..0b67b538477 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2556,6 +2556,17 @@
     <entry>
       <key>Only numbers are allowed.</key>
     </entry>
+    <entry>
+      <key>Superordinate Attribute</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_OFFER}</key>
+      <value>Offer</value>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_NEGOTIATION}</key>
+      <value>Negotiation</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml b/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
index 6115dbb158f..0e36cda05c7 100644
--- a/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
+++ b/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
@@ -25,6 +25,22 @@
             <column name="ISESSENTIAL" valueNumeric="0"/>
         </insert>
         
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="${SALESPROJECT_OFFER}"/>
+            <where>AB_KEYWORD_ENTRYID = ?</where>
+            <whereParams>
+                <param value="0e8eab64-4c79-4eed-9746-0ac6fc397620"/>
+            </whereParams>
+        </update>
+                
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="${SALESPROJECT_NEGOTIATION}"/>
+            <where>AB_KEYWORD_ENTRYID = ?</where>
+            <whereParams>
+                <param value="405e2b7b-20c2-4824-a8b5-c7a533784ef3"/>
+            </whereParams>
+        </update>
+        
         <sql>update AB_KEYWORD_ENTRY set SORTING = SORTING+1 where AB_KEYWORD_ENTRYID in (
             '8a2d19c9-bc32-437e-9261-78ed30110e92',
             '46f55a58-dbe4-40ae-9306-481df9095088',
-- 
GitLab