From 19dd4d9defefe6a2d7155e88de3eee9e3dcdc512 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Fri, 22 Mar 2019 11:44:13 +0100 Subject: [PATCH] pricelist fixes --- .../recordcontainers/db/conditionProcess.js | 11 ++++++++++- entity/Attribute_entity/Attribute_entity.aod | 1 + .../entityfields/product_id/onValueChange.js | 4 +++- .../Productprice_entity.aod | 2 ++ .../entityfields/fromquantity/valueProcess.js | 18 ++++++++---------- .../entityfields/price/valueProcess.js | 6 ++++++ .../entityfields/pricelist/onValidation.js | 1 + .../entityfields/vat/valueProcess.js | 6 ++++++ .../ActivityDetail_view.aod | 3 ++- .../ActivityMain_view/ActivityMain_view.aod | 10 +++++----- neonView/OrderDetail_view/OrderDetail_view.aod | 2 ++ neonView/TaskMain_view/TaskMain_view.aod | 11 ++++++----- .../_____PREFERENCES_PROJECT.aod | 2 +- process/Product_lib/process.js | 6 ++++-- 14 files changed, 57 insertions(+), 26 deletions(-) create mode 100644 entity/Productprice_entity/entityfields/price/valueProcess.js create mode 100644 entity/Productprice_entity/entityfields/vat/valueProcess.js diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js index 9c8391b37c4..c772668cbde 100644 --- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js @@ -6,7 +6,16 @@ import("Sql_lib"); var cond = new SqlCondition(); if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param")) { - var activityLinkCond = SqlCondition.begin().andPrepareVars("ACTIVITYLINK.OBJECT_ROWID", "$param.RowId_param") + var rowId = vars.get("$param.RowId_param"); + var rowIdCond = null; + if (vars.get("$param.ObjectId_param") == "Person") + { + rowId = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", rowId) + .buildSql("select PERSON_ID from CONTACT", "1 = 2")) + rowIdCond = "# in (select CONTACTID from CONTACT where PERSON_ID = ?)"; + } + var activityLinkCond = SqlCondition.begin().andPrepare("ACTIVITYLINK.OBJECT_ROWID", rowId, rowIdCond) .andPrepareVars("ACTIVITYLINK.OBJECT_TYPE", "$param.ObjectId_param"); // TODO: more performant way than IN. Maybe a join?? diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 230a5381098..405955e8bde 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -194,6 +194,7 @@ </entityProvider> <entityField> <name>FULL_ATTRIBUTE_NAME</name> + <title>Name</title> <state>READONLY</state> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js</valueProcess> </entityField> diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js index 524f19c0666..fc9994c4e51 100644 --- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js @@ -3,14 +3,16 @@ import("system.neon"); import("Product_lib"); import("Util_lib"); import("Entity_lib"); +import("Attribute_lib"); var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); if(pid != "") { var currency = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : ""; + var pricelist = AttributeRelationUtils.getAttribute("97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec", contactid) || ""; - var PriceListFilter = { currency: currency, quantity: vars.get("$field.QUANTITY"), relationId: contactid }; + var PriceListFilter = { currency: currency, quantity: vars.get("$field.QUANTITY"), relationId: contactid, priceList: pricelist }; //TODO: loading from db until loading from Consumer is possible. var ProductDetails = ProductUtils.getProductDetails(pid, PriceListFilter, ["INFO"]); diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index d9059a4c13b..509d6a1fb68 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -35,6 +35,7 @@ <outputFormat>#,##0.00</outputFormat> <mandatory v="true" /> <state>AUTO</state> + <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/price/valueProcess.js</valueProcess> </entityField> <entityField> <name>PRODUCTPRICEID</name> @@ -79,6 +80,7 @@ <contentType>NUMBER</contentType> <outputFormat>#,##0.00</outputFormat> <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/vat/valueProcess.js</valueProcess> <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/vat/onValidation.js</onValidation> </entityField> <entityField> diff --git a/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js b/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js index 66e7d5877cf..b2204ba4adb 100644 --- a/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js +++ b/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js @@ -1,10 +1,8 @@ -//import("system.vars"); -//import("system.result"); -//import("system.neon"); -// -//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "") -//{ -// result.string("1"); -//} -//else -// result.string(vars.get("$this.value")); \ No newline at end of file +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "") + result.string("1"); +else + result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/price/valueProcess.js b/entity/Productprice_entity/entityfields/price/valueProcess.js new file mode 100644 index 00000000000..723d0252aa9 --- /dev/null +++ b/entity/Productprice_entity/entityfields/price/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "") + result.string("0"); \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/pricelist/onValidation.js b/entity/Productprice_entity/entityfields/pricelist/onValidation.js index 281a0788814..4aacd1ac134 100644 --- a/entity/Productprice_entity/entityfields/pricelist/onValidation.js +++ b/entity/Productprice_entity/entityfields/pricelist/onValidation.js @@ -7,6 +7,7 @@ import("Entity_lib"); var priceList = { priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST")) + , priceListId: vars.get("$field.PRODUCTPRICEID") , fromQuantity: vars.get("$field.FROMQUANTITY") , buySell: vars.get("$field.BUYSELL") , currency: vars.get("$field.CURRENCY") diff --git a/entity/Productprice_entity/entityfields/vat/valueProcess.js b/entity/Productprice_entity/entityfields/vat/valueProcess.js new file mode 100644 index 00000000000..723d0252aa9 --- /dev/null +++ b/entity/Productprice_entity/entityfields/vat/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "") + result.string("0"); \ No newline at end of file diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod index 365b115a49c..9e831646efe 100644 --- a/neonView/ActivityDetail_view/ActivityDetail_view.aod +++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod @@ -12,7 +12,8 @@ <genericViewTemplate> <name>OfferInfo</name> <editMode v="false" /> - <showDrawer v="false" /> + <showDrawer v="true" /> + <drawerCaption>Detail</drawerCaption> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod index 12164cdbc4f..eb9974e40d7 100644 --- a/neonView/ActivityMain_view/ActivityMain_view.aod +++ b/neonView/ActivityMain_view/ActivityMain_view.aod @@ -14,16 +14,16 @@ <entityField>#ENTITY</entityField> <view>ActivityPreview_view</view> </neonViewReference> - <neonViewReference> - <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name> - <entityField>ModuleTrees</entityField> - <view>ModuleTree_view</view> - </neonViewReference> <neonViewReference> <name>a3a45cd7-587f-4bc0-9980-e6d1c89a8212</name> <entityField>#ENTITY</entityField> <view>ActivityDetail_view</view> </neonViewReference> + <neonViewReference> + <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name> + <entityField>ModuleTrees</entityField> + <view>ModuleTree_view</view> + </neonViewReference> <neonViewReference> <name>7bab8dbf-b69e-412d-a604-3a6999658e10</name> <entityField>Documents</entityField> diff --git a/neonView/OrderDetail_view/OrderDetail_view.aod b/neonView/OrderDetail_view/OrderDetail_view.aod index f8b617ff780..47464d32f38 100644 --- a/neonView/OrderDetail_view/OrderDetail_view.aod +++ b/neonView/OrderDetail_view/OrderDetail_view.aod @@ -11,6 +11,8 @@ <children> <genericViewTemplate> <name>OrderDetail_template</name> + <showDrawer v="true" /> + <drawerCaption>Detail</drawerCaption> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod index 9721f1788b3..d8231d9831f 100644 --- a/neonView/TaskMain_view/TaskMain_view.aod +++ b/neonView/TaskMain_view/TaskMain_view.aod @@ -14,14 +14,10 @@ <entityField>#ENTITY</entityField> <view>TaskMainPreview_view</view> </neonViewReference> - <neonViewReference> - <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name> - <entityField>ModuleTrees</entityField> - <view>ModuleTree_view</view> - </neonViewReference> <genericViewTemplate> <name>details</name> <showDrawer v="true" /> + <drawerCaption>Detail</drawerCaption> <entityField>#ENTITY</entityField> <title>details</title> <fields> @@ -35,6 +31,11 @@ </entityFieldLink> </fields> </genericViewTemplate> + <neonViewReference> + <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name> + <entityField>ModuleTrees</entityField> + <view>ModuleTree_view</view> + </neonViewReference> <neonViewReference> <name>6846f680-84ef-46da-a0ea-6797044cf693</name> <entityField>MainDocuments</entityField> diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 35430f5089f..2e627c2e517 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -2,7 +2,7 @@ <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.1.0"> <name>_____PREFERENCES_PROJECT</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <projectName>xRM-Basic5</projectName> + <projectName>xRM-Basic2019</projectName> <jditoMaxContentSize v="57671680" /> <calendarCategoriesEvent> <entry> diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js index e3f595e558d..cdf6241f48b 100644 --- a/process/Product_lib/process.js +++ b/process/Product_lib/process.js @@ -318,12 +318,14 @@ ProductUtils.checkForIndenticalPriceLists = function(pid, priceList) { var PriceLists = this.getProductDetails(pid).PriceLists; for (var pricelist in PriceLists) { + //different pricelist id //equal price list //equal fromquantity //equal currency //equal pp/sp - if (priceList.priceList == PriceLists[pricelist].priceList - && priceList.fromQuantity == PriceLists[pricelist].fromQuantity + if (priceList.priceListId != PriceLists[pricelist].priceListId + && priceList.priceList == PriceLists[pricelist].priceList + && parseFloat(priceList.fromQuantity) == parseFloat(PriceLists[pricelist].fromQuantity) && priceList.buySell == PriceLists[pricelist].buySell && priceList.currency == PriceLists[pricelist].currency) { -- GitLab