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