From f791d4e37a69633127c5e77e48ffa8227a5ea7b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Schr=C3=B6ger?= <m.schroeger@adito.de> Date: Tue, 13 Nov 2018 12:35:12 +0100 Subject: [PATCH] Validierung: Methode zur Verwendung von "$local.value" in onValidation-Prozesse --- .../entityfields/addr/onValidation.js | 3 ++- .../entityfields/contractcode/onValidation.js | 3 ++- .../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 | 3 ++- .../entityfields/pricelist/onValidation.js | 3 ++- .../entityfields/valid_from/onValidation.js | 3 ++- .../entityfields/valid_to/onValidation.js | 3 ++- .../entityfields/projectcode/onValidation.js | 3 ++- .../entityfields/projectcode/onValueChange.js | 3 ++- process/Util_lib/process.js | 23 +++++++++++++++++++ 18 files changed, 57 insertions(+), 17 deletions(-) diff --git a/entity/Comm_entity/entityfields/addr/onValidation.js b/entity/Comm_entity/entityfields/addr/onValidation.js index b99bc842254..97fccc1a01a 100644 --- a/entity/Comm_entity/entityfields/addr/onValidation.js +++ b/entity/Comm_entity/entityfields/addr/onValidation.js @@ -6,6 +6,7 @@ import("system.result"); import("system.mail"); import("Keyword_lib"); import("Comm_lib"); +import("Util_lib"); var kwdUtil = new KeywordUtils(); var kwd = kwdUtil.createKeyword("COMM.MEDIUM"); @@ -14,7 +15,7 @@ var commCategory = kwd.getPropForKey(commMedium, "contentType", true);//TODO: ma var fn = CommValidationUtil.makeValidationFn(commCategory); if (fn != null){ - var commAddr = vars.get("$local.value");//contains the entered value - the field contains the value only after successfull validation + var commAddr = ProcessHandlingUtil.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 5b26ae2f6e7..e357339a3f7 100644 --- a/entity/Contract_entity/entityfields/contractcode/onValidation.js +++ b/entity/Contract_entity/entityfields/contractcode/onValidation.js @@ -2,8 +2,9 @@ import("system.translate"); import("system.result"); import("system.vars"); import("system.db"); +import("Util_lib"); -var codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + vars.get("$local.value") + "'" +var codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.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 6e86ad155d5..d269674beab 100644 --- a/entity/Contract_entity/entityfields/contractdue/onValidation.js +++ b/entity/Contract_entity/entityfields/contractdue/onValidation.js @@ -2,9 +2,10 @@ import("system.result"); import("system.translate"); import("system.vars"); import("Date_lib"); +import("Util_lib"); var dateUtils = new DateUtils(); -var cDue = vars.get("$local.value"); +var cDue = ProcessHandlingUtil.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 fdd3b12c574..8bb7dc15d6b 100644 --- a/entity/Contract_entity/entityfields/contractend/onValidation.js +++ b/entity/Contract_entity/entityfields/contractend/onValidation.js @@ -1,9 +1,10 @@ import("system.result"); import("system.vars"); import("Date_lib"); +import("Util_lib"); var dateUtils = new DateUtils(); -var cEnd = vars.get("$local.value"); +var cEnd = ProcessHandlingUtil.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 5a41f5caef6..ae1ba0c5ca7 100644 --- a/entity/Contract_entity/entityfields/contractend/onValueChange.js +++ b/entity/Contract_entity/entityfields/contractend/onValueChange.js @@ -1,6 +1,7 @@ import("system.vars"); +import("Util_lib"); -var cEnd = vars.get("$local.value"); +var cEnd = ProcessHandlingUtil.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 f09d0ff9ed4..4ebb606ecee 100644 --- a/entity/Contract_entity/entityfields/contractstart/onValidation.js +++ b/entity/Contract_entity/entityfields/contractstart/onValidation.js @@ -2,9 +2,10 @@ import("system.neon"); import("system.result"); import("system.vars"); import("Date_lib"); +import("Util_lib"); var dateUtils = new DateUtils(); -var cStart = vars.get("$local.value"); +var cStart = ProcessHandlingUtil.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 c8715e611c2..2e58cfbebf5 100644 --- a/entity/Contract_entity/entityfields/contractstart/onValueChange.js +++ b/entity/Contract_entity/entityfields/contractstart/onValueChange.js @@ -1,6 +1,7 @@ import("system.vars"); +import("Util_lib"); -var cStart = vars.get("$local.value"); +var cStart = ProcessHandlingUtil.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 7dc708a6c7f..d74d0c362ec 100644 --- a/entity/Offer_entity/entityfields/offercode/onValidation.js +++ b/entity/Offer_entity/entityfields/offercode/onValidation.js @@ -2,10 +2,11 @@ import("system.vars"); import("system.result"); import("system.neon"); import("Offer_lib"); +import("Util_lib"); var OfferUtils = new OfferUtils(); -if( !OfferUtils.validateOfferNumber(vars.get("$local.value")) ) +if( !OfferUtils.validateOfferNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.OFFERCODE"))) ) { result.string(OfferUtils.getOfferNumberValidationFailString()); } \ 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 5aa3b55ed58..b5114f0629a 100644 --- a/entity/Offer_entity/entityfields/relation_id/onValueChange.js +++ b/entity/Offer_entity/entityfields/relation_id/onValueChange.js @@ -1,7 +1,8 @@ import("system.vars"); import("system.db"); +import("Util_lib"); -var relid = vars.get("$local.value"); +var relid = ProcessHandlingUtil.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 f55f272b2f2..0c8a79b2abb 100644 --- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js @@ -2,8 +2,9 @@ import("system.logging"); import("system.vars"); import("system.neon"); import("Product_lib"); +import("Util_lib"); -var pid = vars.get("$local.value"); +var pid = ProcessHandlingUtil.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 5acf7788daa..ac528c67dd2 100644 --- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js @@ -2,9 +2,10 @@ import("system.logging"); import("system.vars"); import("system.neon"); import("Product_lib"); +import("Util_lib"); var pid = vars.get("$field.PRODUCT_ID"); -var newQuantity = vars.get("$local.value"); +var newQuantity = ProcessHandlingUtil.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 5de6f5400bb..b72108499db 100644 --- a/entity/Product_entity/entityfields/productcode/onValidation.js +++ b/entity/Product_entity/entityfields/productcode/onValidation.js @@ -2,8 +2,9 @@ import("system.translate"); import("system.result"); import("system.vars"); import("system.db"); +import("Util_lib"); -var codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + vars.get("$local.value") + "'" +var codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.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 c2e17e931c1..4927c81bd89 100644 --- a/entity/Productprice_entity/entityfields/pricelist/onValidation.js +++ b/entity/Productprice_entity/entityfields/pricelist/onValidation.js @@ -2,10 +2,11 @@ import("system.translate"); import("system.result"); import("system.vars"); import("Product_lib"); +import("Util_lib"); var pUtils = new ProductUtils(); var priceList = { - priceList: vars.get("$local.value") + priceList: ProcessHandlingUtil.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 f5e5361b6b6..74fa861f9bb 100644 --- a/entity/Productprice_entity/entityfields/valid_from/onValidation.js +++ b/entity/Productprice_entity/entityfields/valid_from/onValidation.js @@ -1,9 +1,10 @@ import("system.result"); import("system.vars"); import("Date_lib"); +import("Util_lib"); var dateUtils = new DateUtils(); -var cStart = vars.get("$local.value"); +var cStart = ProcessHandlingUtil.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 5558b9a4ab1..de9f15393fc 100644 --- a/entity/Productprice_entity/entityfields/valid_to/onValidation.js +++ b/entity/Productprice_entity/entityfields/valid_to/onValidation.js @@ -1,9 +1,10 @@ import("system.result"); import("system.vars"); import("Date_lib"); +import("Util_lib"); var dateUtils = new DateUtils(); -var cEnd = vars.get("$local.value"); +var cEnd = ProcessHandlingUtil.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/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js index 75b9fcc84cc..1df10f89516 100644 --- a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js +++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js @@ -2,10 +2,11 @@ import("system.vars"); import("system.result"); import("system.neon"); import("Salesproject_lib"); +import("Util_lib"); var SalesprojectUtils = new SalesprojectUtils(); -if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) ) +if( !SalesprojectUtils.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) ) { result.string(SalesprojectUtils.getProjectNumberValidationFailString()); } \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js index 937237a494b..289a0b56e8f 100644 --- a/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js +++ b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js @@ -1,9 +1,10 @@ import("system.vars"); import("system.result"); import("Salesproject_lib"); +import("Util_lib"); var SalesprojectUtils = new SalesprojectUtils(); -if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) ) +if( !SalesprojectUtils.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) ) { vars.set("$field.PROJECTCODE", SalesprojectUtils.getNextProjectNumber()); } diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 71cd86700d0..9a02ca2d3e8 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -1448,4 +1448,27 @@ function CopyModuleUtils() } } } +} + +/** + * provides somehow static methods for special handling in JDito-Processes + * do not create an instance of this + */ +function 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 + */ +ProcessHandlingUtil.getOnValidationValue = function(pFieldValue) +{ + return vars.exists("$local.value") ? vars.get("$local.value") : pFieldValue; } \ No newline at end of file -- GitLab