From 8a3c30cd7fff81d4f95088324b0ced189c4c63b5 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Fri, 15 Feb 2019 15:57:07 +0100
Subject: [PATCH] refactorings & todo refactorings

---
 entity/KeywordEntry_entity/onValidation.js       |  3 ++-
 .../recordcontainers/db/onDBUpdate.js            |  5 +++--
 entity/Offeritem_entity/Offeritem_entity.aod     | 16 +++++++++++++++-
 .../entityfields/info/valueProcess.js            |  2 +-
 .../product_id/possibleItemsProcess.js           | 16 ----------------
 .../product_id.displayvalue/expression.js        |  5 +++++
 entity/Product_entity/Product_entity.aod         |  8 ++++++++
 .../_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod  |  3 +++
 language/_____LANGUAGE_de/_____LANGUAGE_de.aod   |  4 ++++
 language/_____LANGUAGE_en/_____LANGUAGE_en.aod   |  3 +++
 10 files changed, 44 insertions(+), 21 deletions(-)
 delete mode 100644 entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js
 create mode 100644 entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js

diff --git a/entity/KeywordEntry_entity/onValidation.js b/entity/KeywordEntry_entity/onValidation.js
index ae813d0188..f1f568a35c 100644
--- a/entity/KeywordEntry_entity/onValidation.js
+++ b/entity/KeywordEntry_entity/onValidation.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("system.db");
 import("system.vars");
 import("system.text");
@@ -15,7 +16,7 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
         var newCodeNumber = db.cell(cond.buildSql("select " + maskingHelper.max("AB_KEYWORD_ENTRY.SORTING") + " from AB_KEYWORD_ENTRY", "1 = 2"));
         newCodeNumber = Number(newCodeNumber);//if no number exists till no, start value will be 1 (due to: ++0)
         if (isNaN(newCodeNumber))
-            throw new TypeError();//TODO:add Message
+            throw new TypeError(translate.text("The code number is not a valid number."));
         neon.setFieldValue("$field.SORTING", ++newCodeNumber);
     }
 }
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js b/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js
index 0f9d6cbdbc..d9f8978acd 100644
--- a/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/KeywordEntry_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("system.db");
 import("system.vars");
 import("system.text");
@@ -7,7 +8,7 @@ import("Sql_lib");
 var changedFields = vars.get("$local.changed");
 //whenever the container is changed data that depends on the keyword-container has be "fixed" to keep consistency
 //this could be information like Keyword-attributes or the sorting-position
-//maybe it'd be better to lock KeywordContainer as read-only after creation
+// TODO: maybe it'd be better to lock KeywordContainer as read-only after creation
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && changedFields.indexOf("AB_KEYWORD_ENTRY.CONTAINER") > -1)
 {
     var keyContainer = vars.get("$field.CONTAINER");
@@ -18,7 +19,7 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && changedFields.in
         var newCodeNumber = db.cell(cond.buildSql("select " + maskingHelper.max("AB_KEYWORD_ENTRY.SORTING") + " from AB_KEYWORD_ENTRY", "1 = 2"));
         newCodeNumber = Number(newCodeNumber);//if no number exists till no, start value will be 1 (due to: ++0)
         if (isNaN(newCodeNumber))
-            throw new TypeError();//TODO:add Message
+            throw new TypeError(translate.text("The code number is not a valid number."));
 
         var cols = ["SORTING"];
         var vals = [++newCodeNumber];
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 691c6b9950..916eea0cb4 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -62,7 +62,8 @@
       <name>PRODUCT_ID</name>
       <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/documentation.adoc</documentation>
       <title>Article</title>
-      <possibleItemsProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js</possibleItemsProcess>
+      <consumer>Products</consumer>
+      <linkedContext>Product_context</linkedContext>
       <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
@@ -178,6 +179,15 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>Products</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Product_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -267,6 +277,10 @@
           <name>UNIT.displayValue</name>
           <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/unit.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PRODUCT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Offeritem_entity/entityfields/info/valueProcess.js b/entity/Offeritem_entity/entityfields/info/valueProcess.js
index 522166c5f7..199fc1e677 100644
--- a/entity/Offeritem_entity/entityfields/info/valueProcess.js
+++ b/entity/Offeritem_entity/entityfields/info/valueProcess.js
@@ -6,7 +6,7 @@ import("Sql_lib");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
-    // TODO: loading from db until loading from dfo is possible.
+    // TODO: loading from db until loading from Consumer is possible.
     var productId = vars.get("$field.PRODUCT_ID");
     result.string(db.cell(SqlCondition.begin().andPrepareVars("PRODUCT.PRODUCTID", "$field.PRODUCT_ID").buildSql("select INFO from PRODUCT", "1=2")));
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js b/entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js
deleted file mode 100644
index e19938f82d..0000000000
--- a/entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("system.db");
-import("Sql_lib");
-
-//TODO: change field to lookup field
-var sqlUtils = new SqlMaskingUtils();
-var prodsSql = "select PRODUCTID, " + sqlUtils.concat(["PRODUCTCODE", "PRODUCTNAME"], "/") 
-                    + " from PRODUCT";
-
-var prods = db.table(prodsSql);
-
-var retArray = [];
-for(var i = 0; i < prods.length; i++)
-    retArray.push(prods[i]);
-
-result.object(retArray);
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
new file mode 100644
index 0000000000..505fda0b8e
--- /dev/null
+++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+// TODO: remove when #title is used as display value for lookups
+result.string("(select PRODUCT.PRODUCTNAME from PRODUCT where OFFERITEM.PRODUCT_ID = PRODUCT.PRODUCTID)");
\ No newline at end of file
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index da0c900b6f..678e3886fa 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -146,6 +146,14 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>edd8a3af-d168-4a3b-871d-39db964c700b</name>
+          <entityName>Offeritem_entity</entityName>
+          <fieldName>Products</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityConsumer>
       <name>ProductLinks</name>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 5491aec287..af924d86cc 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2334,6 +2334,9 @@
     <entry>
       <key>String value</key>
     </entry>
+    <entry>
+      <key>The code number is not a valid number.</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 d3719f8ce7..8eced752d6 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -2687,6 +2687,10 @@
     <entry>
       <key>String value</key>
     </entry>
+    <entry>
+      <key>The code number is not a valid number.</key>
+      <value>The code number is not a valid number.</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 503b12c83b..fb7789f7c7 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2356,6 +2356,9 @@
     <entry>
       <key>String value</key>
     </entry>
+    <entry>
+      <key>The code number is not a valid number.</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
-- 
GitLab