From 652846e6f4c4725bca840e8046bce19809086506 Mon Sep 17 00:00:00 2001
From: "m.schroeger" <m.schroeger@adito.de>
Date: Tue, 27 Nov 2018 09:36:27 +0100
Subject: [PATCH] moved ProcessHandlingUtil into own library (from Util_lib)

---
 .../entityfields/addr/onValidation.js         |  3 ++-
 .../entityfields/contractcode/onValidation.js |  6 ++++-
 .../entityfields/contractdue/onValidation.js  |  3 ++-
 .../entityfields/contractend/onValidation.js  |  3 ++-
 .../entityfields/contractend/onValueChange.js |  3 ++-
 .../contractstart/onValidation.js             |  3 ++-
 .../contractstart/onValueChange.js            |  3 ++-
 .../entityfields/offercode/onValidation.js    |  3 ++-
 .../entityfields/relation_id/onValueChange.js |  3 ++-
 .../entityfields/product_id/onValueChange.js  |  3 ++-
 .../entityfields/quantity/onValueChange.js    |  3 ++-
 .../entityfields/productcode/onValidation.js  |  6 ++++-
 .../entityfields/pricelist/onValidation.js    |  3 ++-
 .../entityfields/valid_from/onValidation.js   |  3 ++-
 .../entityfields/valid_to/onValidation.js     |  3 ++-
 .../entityfields/reason/onValidation.js       |  3 ++-
 .../entityfields/projectcode/onValidation.js  |  3 ++-
 process/Entity_lib/Entity_lib.aod             |  6 +++++
 process/Entity_lib/process.js                 | 23 +++++++++++++++++++
 process/Product_lib/process.js                |  4 ++--
 process/Util_lib/process.js                   | 23 -------------------
 21 files changed, 71 insertions(+), 42 deletions(-)
 create mode 100644 process/Entity_lib/Entity_lib.aod
 create mode 100644 process/Entity_lib/process.js

diff --git a/entity/Comm_entity/entityfields/addr/onValidation.js b/entity/Comm_entity/entityfields/addr/onValidation.js
index 97fccc1a01a..f7e031675a3 100644
--- a/entity/Comm_entity/entityfields/addr/onValidation.js
+++ b/entity/Comm_entity/entityfields/addr/onValidation.js
@@ -7,6 +7,7 @@ import("system.mail");
 import("Keyword_lib");
 import("Comm_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var kwdUtil = new KeywordUtils();
 var kwd = kwdUtil.createKeyword("COMM.MEDIUM");
@@ -15,7 +16,7 @@ var commCategory = kwd.getPropForKey(commMedium, "contentType", true);//TODO: ma
 
 var fn = CommValidationUtil.makeValidationFn(commCategory);
 if (fn != null){
-    var commAddr = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.ADDR"));
+    var commAddr = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ADDR"));
     var additional = CommValidationUtil.getExtensionsBlueprint();
     additional.countryCode = vars.get("$param.RelationsMainCountry_param");//TODO: try to use users language first and then the companies
     var res = fn.call(null, commAddr, additional);
diff --git a/entity/Contract_entity/entityfields/contractcode/onValidation.js b/entity/Contract_entity/entityfields/contractcode/onValidation.js
index e357339a3f7..8d2de85d894 100644
--- a/entity/Contract_entity/entityfields/contractcode/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractcode/onValidation.js
@@ -3,8 +3,12 @@ import("system.result");
 import("system.vars");
 import("system.db");
 import("Util_lib");
+import("Entity_lib");
 
-var codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTCODE")) + "'"
+var contractCode, codeCount;
+
+contractCode = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTCODE"));
+codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + contractCode + "'"
                        + " and CONTRACTID <> '" + vars.get("$field.CONTRACTID") + "'");
 if(codeCount > 0)
 {
diff --git a/entity/Contract_entity/entityfields/contractdue/onValidation.js b/entity/Contract_entity/entityfields/contractdue/onValidation.js
index d269674beab..f220af58521 100644
--- a/entity/Contract_entity/entityfields/contractdue/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractdue/onValidation.js
@@ -3,9 +3,10 @@ import("system.translate");
 import("system.vars");
 import("Date_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var dateUtils = new DateUtils();
-var cDue = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTDUE"));
+var cDue = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTDUE"));
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cDue) === false || dateUtils.validateBeginnBeforeEnd(cDue, vars.get("$field.CONTRACTEND")) === false) {
     result.string(translate.text("The next due date must be after the start of the contract and before the expiry of the contract!"));
diff --git a/entity/Contract_entity/entityfields/contractend/onValidation.js b/entity/Contract_entity/entityfields/contractend/onValidation.js
index 8bb7dc15d6b..84b84bf607a 100644
--- a/entity/Contract_entity/entityfields/contractend/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractend/onValidation.js
@@ -2,9 +2,10 @@ import("system.result");
 import("system.vars");
 import("Date_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var dateUtils = new DateUtils();
-var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTEND"));
+var cEnd = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTEND"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cEnd) === false)
diff --git a/entity/Contract_entity/entityfields/contractend/onValueChange.js b/entity/Contract_entity/entityfields/contractend/onValueChange.js
index ae1ba0c5ca7..b411c425e4e 100644
--- a/entity/Contract_entity/entityfields/contractend/onValueChange.js
+++ b/entity/Contract_entity/entityfields/contractend/onValueChange.js
@@ -1,7 +1,8 @@
 import("system.vars");
 import("Util_lib");
+import("Entity_lib");
 
-var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTEND"));
+var cEnd = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTEND"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (cDue > cEnd && cDue != "")
diff --git a/entity/Contract_entity/entityfields/contractstart/onValidation.js b/entity/Contract_entity/entityfields/contractstart/onValidation.js
index 4ebb606ecee..0a0a26c89ee 100644
--- a/entity/Contract_entity/entityfields/contractstart/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractstart/onValidation.js
@@ -3,9 +3,10 @@ import("system.result");
 import("system.vars");
 import("Date_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var dateUtils = new DateUtils();
-var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
+var cStart = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (dateUtils.validateBeginnBeforeEnd(cStart, vars.get("$field.CONTRACTEND")) === false)
diff --git a/entity/Contract_entity/entityfields/contractstart/onValueChange.js b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
index 2e58cfbebf5..f2e29fdda8f 100644
--- a/entity/Contract_entity/entityfields/contractstart/onValueChange.js
+++ b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
@@ -1,7 +1,8 @@
 import("system.vars");
 import("Util_lib");
+import("Entity_lib");
 
-var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
+var cStart = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (cDue < cStart && cDue != "")
diff --git a/entity/Offer_entity/entityfields/offercode/onValidation.js b/entity/Offer_entity/entityfields/offercode/onValidation.js
index c2f733568d6..63c353b420b 100644
--- a/entity/Offer_entity/entityfields/offercode/onValidation.js
+++ b/entity/Offer_entity/entityfields/offercode/onValidation.js
@@ -3,11 +3,12 @@ import("system.result");
 import("system.neon");
 import("OfferOrder_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var OfferUtils = new OfferUtils();
 
 if( vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW
-    && !OfferUtils.validateOfferNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.OFFERCODE"))) )
+    && !OfferUtils.validateOfferNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.OFFERCODE"))) )
 {
     vars.set( "$field.OFFERCODE", SalesprojectUtils.getNextOfferNumber().toString() );
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/relation_id/onValueChange.js b/entity/Offer_entity/entityfields/relation_id/onValueChange.js
index 4c3220606c5..9e8a557d911 100644
--- a/entity/Offer_entity/entityfields/relation_id/onValueChange.js
+++ b/entity/Offer_entity/entityfields/relation_id/onValueChange.js
@@ -1,8 +1,9 @@
 import("system.vars");
 import("system.db");
 import("Util_lib");
+import("Entity_lib");
 
-var relid = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.RELATION_ID"));
+var relid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.RELATION_ID"));
 if(relid != "")
 {
     var relData = db.array(db.ROW, "select LANGUAGE from RELATION where RELATIONID = '" + relid + "'");
diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
index 196b4ab169e..252419a862f 100644
--- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
@@ -3,8 +3,9 @@ import("system.vars");
 import("system.neon");
 import("Product_lib");
 import("Util_lib");
+import("Entity_lib");
 
-var pid = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
+var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
 if(pid != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
diff --git a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
index d605b64c6f8..aedc968cc70 100644
--- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
@@ -3,9 +3,10 @@ import("system.vars");
 import("system.neon");
 import("Product_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var pid = vars.get("$field.PRODUCT_ID");
-var newQuantity = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.QUANTITY"));
+var newQuantity = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.QUANTITY"));
 if(pid != "" && newQuantity != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
diff --git a/entity/Product_entity/entityfields/productcode/onValidation.js b/entity/Product_entity/entityfields/productcode/onValidation.js
index b72108499db..1dc5b4f9963 100644
--- a/entity/Product_entity/entityfields/productcode/onValidation.js
+++ b/entity/Product_entity/entityfields/productcode/onValidation.js
@@ -3,8 +3,12 @@ import("system.result");
 import("system.vars");
 import("system.db");
 import("Util_lib");
+import("Entity_lib");
 
-var codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRODUCTCODE")) + "'"
+var codeCount, productCode;
+
+productCode = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCTCODE"));
+codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + productCode + "'"
                        + " and PRODUCTID <> '" + vars.get("$field.PRODUCTID") + "'");
 if(codeCount > 0)
 {
diff --git a/entity/Productprice_entity/entityfields/pricelist/onValidation.js b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
index 4927c81bd89..280ee4e3e23 100644
--- a/entity/Productprice_entity/entityfields/pricelist/onValidation.js
+++ b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
@@ -3,10 +3,11 @@ import("system.result");
 import("system.vars");
 import("Product_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var pUtils = new ProductUtils();
 var priceList = {
-                priceList: ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRICELIST"))
+                priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST"))
                 , fromQuantity: vars.get("$field.FROMQUANTITY")
                 , buySell: vars.get("$field.BUYSELL")
                 , currency: vars.get("$field.CURRENCY")
diff --git a/entity/Productprice_entity/entityfields/valid_from/onValidation.js b/entity/Productprice_entity/entityfields/valid_from/onValidation.js
index 74fa861f9bb..636c0d09237 100644
--- a/entity/Productprice_entity/entityfields/valid_from/onValidation.js
+++ b/entity/Productprice_entity/entityfields/valid_from/onValidation.js
@@ -2,9 +2,10 @@ import("system.result");
 import("system.vars");
 import("Date_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var dateUtils = new DateUtils();
-var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.VALID_FROM"));
+var cStart = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VALID_FROM"));
 
 if (dateUtils.validateBeginnBeforeEnd(cStart, vars.get("$field.VALID_TO")) === false)
     result.string(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/valid_to/onValidation.js b/entity/Productprice_entity/entityfields/valid_to/onValidation.js
index de9f15393fc..befc9ac5107 100644
--- a/entity/Productprice_entity/entityfields/valid_to/onValidation.js
+++ b/entity/Productprice_entity/entityfields/valid_to/onValidation.js
@@ -2,9 +2,10 @@ import("system.result");
 import("system.vars");
 import("Date_lib");
 import("Util_lib");
+import("Entity_lib");
 
 var dateUtils = new DateUtils();
-var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.VALID_TO"));
+var cEnd = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VALID_TO"));
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.VALID_FROM"), cEnd) === false)
     result.string(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js b/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js
index 6a13d6a1ca6..dde86e982a4 100644
--- a/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js
+++ b/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js
@@ -2,8 +2,9 @@ import("system.result");
 import("system.vars");
 import("system.translate");
 import("Util_lib");
+import("Entity_lib");
 
-var reason = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.REASON"));
+var reason = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.REASON"));
 
 if (!vars.getString("$field.DATE_CANCELLED") && reason) {
     result.string(translate.text("A reason is only possible if a date is given."))
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
index d98945cc17a..1f7657c4fed 100644
--- a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
@@ -3,9 +3,10 @@ import("system.result");
 import("system.neon");
 import("Salesproject_lib");
 import("Util_lib");
+import("Entity_lib");
 
 if( vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW
-    && !Salesproject.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
+    && !Salesproject.validateProjectNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
 {
     vars.set( "$field.PROJECTCODE", Salesproject.getNextProjectNumber().toString("1 = 1") );
 }
\ No newline at end of file
diff --git a/process/Entity_lib/Entity_lib.aod b/process/Entity_lib/Entity_lib.aod
new file mode 100644
index 00000000000..d8eaf5d930b
--- /dev/null
+++ b/process/Entity_lib/Entity_lib.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
+  <name>Entity_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Entity_lib/process.js</process>
+</process>
diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js
new file mode 100644
index 00000000000..4c0e41ed076
--- /dev/null
+++ b/process/Entity_lib/process.js
@@ -0,0 +1,23 @@
+/**
+* provides static methods for special handling of entities in JDito-Processes
+* do not create an instance of this
+* @class
+* @static
+*/
+function ProcessHandlingUtils(){
+}
+
+/**
+* In onValidation-Process a local variable called "$local.value" is made available from kernel.
+* It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")).
+* The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available,
+* but the entered value now is the present one because the field has already been validated before.
+* Otherwise a "variable not found" error would occur.
+*
+* @param {String} fieldValue value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") )
+*
+* @return {String} Field value for onValidation-Process
+*/
+ProcessHandlingUtils.getOnValidationValue = function(fieldValue) {
+    return vars.exists("$local.value") ? vars.get("$local.value") : fieldValue;
+}
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
index 161c665d32d..94451a5e126 100644
--- a/process/Product_lib/process.js
+++ b/process/Product_lib/process.js
@@ -82,7 +82,7 @@ function ProductUtils()
      * @param pPriceListFilter {Object} opt { currency: "currencyValue", quantity: "quantityValue", relationId: "relationIdValue (for custom price lists)" }
      * 
      * @example //Product_entity, Field: PRODUCT_ID, Process: onValueChange
-     *          var pid = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
+     *          var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
      *          var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
      *          var relid = vars.exists("$param.RelationId_param") ? vars.get("$param.RelationId_param") : "";
      *          var pUtils = new ProductUtils();
@@ -280,7 +280,7 @@ function ProductUtils()
      * @example //Productprice_entity, Field: PRICELIST, Process: onValidation
      *          var pUtils = new ProductUtils();
      *          var priceList = {
-     *                          priceList: ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRICELIST"))
+     *                          priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST"))
      *                          , fromQuantity: vars.get("$field.FROMQUANTITY")
      *                          , buySell: vars.get("$field.BUYSELL")
      *                          , currency: vars.get("$field.CURRENCY")
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 969fe5b2f57..6cd2c3114ec 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -1454,26 +1454,3 @@ function CopyModuleUtils()
         }
     }
 }
-
-/**
-* provides somehow static methods for special handling in JDito-Processes
-* do not create an instance of this
-* @class
-*/
-ProcessHandlingUtil = {
-    
-    /**
-    * In onValidation-Process a local variable called "$local.value" is made available from kernel.
-    * It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")).
-    * The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available,
-    * but the entered value now is the present one because the field has already been validated before.
-    * Otherwise a "variable not found" error would occur.
-    *
-    * @param {String} pFieldValue req value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") )
-    * @return {String} Field value for onValidation-Process
-    */
-    getOnValidationValue: function(pFieldValue)
-    {
-        return vars.exists("$local.value") ? vars.get("$local.value") : pFieldValue;
-    }
-}
-- 
GitLab