diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/productprice.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/productprice.xml index 6ba30645103ad9564903bdbc2892c0a16e9f5053..a8dcad563fd4d0fa49e9d4023ef8d479e8525a71 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/productprice.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/productprice.xml @@ -47,7 +47,7 @@ <column name="FROMQUANTITY" valueNumeric="1.00"/> <column name="PRODUCT_ID" value="c9f744bc-7903-4ec0-96f9-1df010ce1f37"/> <column name="VAT" valueNumeric="0.00"/> - <column name="VALID_FROM" valueDate="2019-05-17T02:00:00"/> + <column name="VALID_FROM" valueDate="2020-07-15T02:00:00"/> <column name="CURRENCY" value="EUR"/> <column name="CONTACT_ID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> </insert> @@ -90,7 +90,7 @@ <column name="PRODUCTPRICEID" value="75365b30-fd09-4255-b1d7-f4c91e9d255e"/> <column name="PRICE" valueNumeric="2500.00"/> <column name="FROMQUANTITY" valueNumeric="1.00"/> - <column name="VALID_TO" valueDate="2020-05-18T02:00:00"/> + <column name="VALID_TO" valueDate="2022-05-18T02:00:00"/> <column name="PRODUCT_ID" value="805cd37f-d6c7-424b-99b0-b3de9ec89f7b"/> <column name="VAT" valueNumeric="19.00"/> <column name="VALID_FROM" valueDate="2019-05-17T02:00:00"/> @@ -127,7 +127,7 @@ <column name="FROMQUANTITY" valueNumeric="1.00"/> <column name="PRODUCT_ID" value="8cdbd2d8-70e2-4899-9ac6-3f0c3e28cab1"/> <column name="VAT" valueNumeric="19.00"/> - <column name="VALID_FROM" valueDate="2019-05-22T02:00:00"/> + <column name="VALID_FROM" valueDate="2021-06-17T02:00:00"/> <column name="CURRENCY" value="EUR"/> </insert> <insert tableName="productprice"> @@ -169,7 +169,7 @@ <column name="PRODUCTPRICEID" value="bf8ef6ac-9f34-40fd-aa2e-9792fee9a970"/> <column name="PRICE" valueNumeric="15000.00"/> <column name="FROMQUANTITY" valueNumeric="1.00"/> - <column name="VALID_TO" valueDate="2020-05-22T02:00:00"/> + <column name="VALID_TO" valueDate="2022-05-22T02:00:00"/> <column name="PRODUCT_ID" value="e073ddc7-e3b8-4430-9e4f-12065106a624"/> <column name="VAT" valueNumeric="19.00"/> <column name="VALID_FROM" valueDate="2019-05-17T02:00:00"/> @@ -216,7 +216,7 @@ <column name="PRODUCTPRICEID" value="ead04c9b-955e-4595-bb31-31685b3ceaec"/> <column name="PRICE" valueNumeric="10000.00"/> <column name="FROMQUANTITY" valueNumeric="1.00"/> - <column name="VALID_TO" valueDate="2020-05-21T02:00:00"/> + <column name="VALID_TO" valueDate="2022-05-21T02:00:00"/> <column name="PRODUCT_ID" value="535cec1a-e81c-4833-aad6-1d2348dbc0fb"/> <column name="VAT" valueNumeric="19.00"/> <column name="VALID_FROM" valueDate="2019-05-23T02:00:00"/> @@ -229,7 +229,7 @@ <column name="PRODUCTPRICEID" value="f90ff3d2-3e62-4b6f-bcfb-db4d4ecd8de8"/> <column name="PRICE" valueNumeric="5000.00"/> <column name="FROMQUANTITY" valueNumeric="1.00"/> - <column name="VALID_TO" valueDate="2020-06-15T02:00:00"/> + <column name="VALID_TO" valueDate="2019-05-23T02:00:00"/> <column name="PRODUCT_ID" value="535cec1a-e81c-4833-aad6-1d2348dbc0fb"/> <column name="VAT" valueNumeric="19.00"/> <column name="VALID_FROM" valueDate="2019-05-17T02:00:00"/> diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index ba7fb3a8735539a3fbea1238c37f817ab7112242..3dbcf1f9873c47263c2a3dbe799bc62638f27e38 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -241,6 +241,10 @@ <name>PRODUCTPRICE_OBJECTTYPE</name> <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js</valueProcess> </entityField> + <entityParameter> + <name>IgnoreOnValidation_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> @@ -248,6 +252,7 @@ <hasDependentRecords v="true" /> <conditionProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/Productprice_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <alias>Data_alias</alias> <recordFieldMappings> <dbRecordFieldMapping> diff --git a/entity/Productprice_entity/onValidation.js b/entity/Productprice_entity/onValidation.js index 393e20d490dc66e77b0f38ab18ad526e85b0fdd5..2bfd42916247e16b08a7d6d09da372ed9bef0449 100644 --- a/entity/Productprice_entity/onValidation.js +++ b/entity/Productprice_entity/onValidation.js @@ -1,34 +1,14 @@ -import("Product_lib"); -import("system.translate"); -import("system.result"); import("Date_lib"); +import("system.result"); import("system.vars"); -var messages = ""; - -var startDate = vars.get("$field.VALID_FROM"); -var endDate = vars.get("$field.VALID_TO"); - -if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) - messages += DateUtils.getValidationFailString(); - -var priceList = { - priceList: vars.get("$field.PRICELIST"), - priceListId: vars.get("$field.PRODUCTPRICEID"), - fromQuantity: vars.get("$field.FROMQUANTITY"), - buySell: vars.get("$field.BUYSELL"), - vat: vars.get("$field.VAT"), - currency: vars.get("$field.CURRENCY"), - validFrom: vars.get("$field.VALID_FROM"), - validTo: vars.get("$field.VALID_TO") - }; -var identicalPriceList = ProductUtils.checkForIndenticalPriceLists(vars.get("$field.PRODUCT_ID"), priceList); -if(identicalPriceList != null) +if(vars.getString("$param.IgnoreOnValidation_param") != "true") { - if (messages) - messages += "\n"; - messages += translate.text("Identical price list found!"); -} - -if (messages) - result.string(messages) \ No newline at end of file + var startDate = vars.get("$field.VALID_FROM"); + var endDate = vars.get("$field.VALID_TO"); + + if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) + { + result.string(DateUtils.getValidationFailString()); + } +} \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/onDBInsert.js b/entity/Productprice_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..3bd6ad5c6cd885240b6c77505ce01472f4f4ecfe --- /dev/null +++ b/entity/Productprice_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,30 @@ +import("Date_lib"); +import("system.datetime"); +import("system.entities"); +import("Sql_lib"); +import("system.vars"); + + +var priceList = vars.get("$field.PRICELIST"); +var productId = vars.get("$field.PRODUCT_ID"); +var buySell = vars.get("$field.BUYSELL"); +var validFrom = vars.get("$field.VALID_FROM"); +var today = DateUtils.getTodayUTC(); +var productPriceListId = vars.get("$field.PRODUCTPRICEID"); + +var validPriceLists = newSelect("PRODUCTPRICE.PRODUCTPRICEID") + .from("PRODUCTPRICE") + .where("PRODUCTPRICE.PRICELIST", priceList) + .and("PRODUCTPRICE.PRODUCTPRICEID", productPriceListId, SqlBuilder.NOT_EQUAL()) + .and("PRODUCTPRICE.PRODUCT_ID", productId) + .and("PRODUCTPRICE.BUYSELL", buySell) + .and("PRODUCTPRICE.FROMQUANTITY", validFrom, SqlBuilder.LESS_OR_EQUAL()) + .and(newWhere("PRODUCTPRICE.VALID_TO", validFrom, SqlBuilder.GREATER_OR_EQUAL()).or("PRODUCTPRICE.VALID_TO is null")) + .arrayColumn(); + +var config = entities.createConfigForUpdatingRows().entity("Productprice_entity").fieldValues({"VALID_TO": today}).addParameter("IgnoreOnValidation_param", true); + +for (i = 0; i < validPriceLists.length; i++) { + + entities.updateRow(config.uid(validPriceLists[i])) +}