From 888a1589d5374779510c66e3e25c31cc6b3cad1f Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Thu, 25 Apr 2019 14:43:22 +0200 Subject: [PATCH] Cost to campaignstep, filter category keyword --- .../CampaignCost_entitiy.aod | 4 ++++ .../valueProcess.js | 18 ++++++++++++++++++ .../netperparticipant/valueProcess.js | 2 +- .../CampaignStep_entity.aod | 10 ++++++++++ .../cost.value/expression.js | 3 +++ .../KeywordEntry_entity.aod | 6 ++++++ .../documentation.adoc | 2 ++ .../recordcontainers/db/conditionProcess.js | 4 ++++ .../CampaignStepPreview_view.aod | 4 ++++ 9 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js create mode 100644 entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/cost.value/expression.js create mode 100644 entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod index a280adae7f0..3896ae9bcc6 100644 --- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod +++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod @@ -147,6 +147,10 @@ <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ExcludedKeyIdsSubquery_param</name> + <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityActionGroup> diff --git a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js new file mode 100644 index 00000000000..f9fdcc7295c --- /dev/null +++ b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js @@ -0,0 +1,18 @@ +import("system.neon"); +import("system.vars"); +import("system.db"); +import("Sql_lib"); +import("system.result"); + +var cond = SqlCondition.begin() + .andPrepareVars("CAMPAIGNCOST.CAMPAIGN_ID", "$field.CAMPAIGN_ID"); + +if (vars.get("$field.CAMPAIGNSTEP_ID")) + cond.andPrepareVars("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$field.CAMPAIGNSTEP_ID"); +else + cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null") + +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) + cond.andPrepareVars("CAMPAIGNCOST.CAMPAIGNCOSTID", "$field.CAMPAIGNCOSTID", "# <> ?"); + +result.string(db.translateStatement(cond.buildSql("select CATEGORY from CAMPAIGNCOST", "1=2", "group by CATEGORY"))); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js index 21c35016923..f3dedbcae4b 100644 --- a/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js +++ b/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js @@ -5,7 +5,7 @@ import("system.eMath"); var netto = parseFloat(vars.get("$field.NET")); var countParticipants = parseFloat(vars.get("$field.countParticipants")); -if (countParticipants > 0) +if (netto && countParticipants &&countParticipants > 0) result.string(eMath.roundDec(netto / countParticipants, 2, eMath.ROUND_HALF_UP)); else result.string(0); \ No newline at end of file diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index 96cb0aedca3..19cea84b443 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -218,6 +218,12 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>COST</name> + <title>Cost</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -295,6 +301,10 @@ <name>DESCRIPTION.value</name> <recordfield>CAMPAIGNSTEP.DESCRIPTION</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COST.value</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/cost.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/cost.value/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/cost.value/expression.js new file mode 100644 index 00000000000..90244a5bfed --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/cost.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("(select sum(NET) from CAMPAIGNCOST where CAMPAIGNCOST.CAMPAIGN_ID = CAMPAIGNSTEP.CAMPAIGN_ID and CAMPAIGNCOST.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID)") \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 61a86af519a..6f3c591388a 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -445,6 +445,12 @@ </entityParameter> </children> </entityConsumer> + <entityParameter> + <name>ExcludedKeyIdsSubquery_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc b/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc new file mode 100644 index 00000000000..5eb6c62c6b9 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc @@ -0,0 +1,2 @@ +Can be filled with a subquery-string, which delivers KeyIds to exclude. +The subquery is used insade a "KEYID not in(...)" \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js index 4fb1ef2f327..e027aee8210 100644 --- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.vars"); import("system.db"); import("system.result"); @@ -10,5 +11,8 @@ if (vars.get("$param.OnlyActives_param") == "true") cond.andPrepare("AB_KEYWORD_ENTRY.ISACTIVE", "1"); } +if (vars.exists("$param.ExcludedKeyIdsSubquery_param") && vars.get("$param.ExcludedKeyIdsSubquery_param")) + cond.and("AB_KEYWORD_ENTRY.KEYID not in (" + vars.get("$param.ExcludedKeyIdsSubquery_param") + ")"); + var condStr = db.translateCondition(cond.build("1 = 1")); result.string(condStr); \ No newline at end of file diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod index cbf63b52c35..d9ab350b2ee 100644 --- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod +++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod @@ -35,6 +35,10 @@ <name>88fbd366-0107-44b7-8d9c-f4fee89c0637</name> <entityField>CampaignStatus</entityField> </entityFieldLink> + <entityFieldLink> + <name>27558e2a-a377-4126-a29d-422d2d5a44b4</name> + <entityField>COST</entityField> + </entityFieldLink> </fields> </genericViewTemplate> </children> -- GitLab