From 42bf2f05d7f4f8ecbdbe319aa3f07bda32c6bc44 Mon Sep 17 00:00:00 2001 From: Benjamin Ulrich <b.ulrich@adito.de> Date: Thu, 19 Aug 2021 07:38:26 +0000 Subject: [PATCH] [Projekt: xRM-Sales][TicketNr.: 1085057][Umsatzprognose aus Firmenfilter] --- .../Organisation_entity.aod | 9 +- .../children/openturnover/onActionProcess.js | 22 ++ entity/Turnover_entity/Turnover_entity.aod | 2 +- entity/Turnover_entity/initFilterProcess.js | 30 ++- .../_____LANGUAGE_EXTRA.aod | 21 ++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 21 ++ neonContext/Turnover/Turnover.aod | 4 + ...ultiDataChartOrganisationGrouping_view.aod | 209 ++++++++++++++++++ .../documentation.adoc | 6 + 10 files changed, 320 insertions(+), 8 deletions(-) create mode 100644 entity/Organisation_entity/entityfields/filterviewactiongroup/children/openturnover/onActionProcess.js create mode 100644 neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/TurnoverDynamicMultiDataChartOrganisationGrouping_view.aod create mode 100644 neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/documentation.adoc diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index cd75186ab89..2ceff6d0144 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1187,6 +1187,13 @@ <selectionType>UNBOUND</selectionType> <iconId>VAADIN:MONEY</iconId> </entityActionField> + <entityActionField> + <name>openTurnover</name> + <title>Open Turnover</title> + <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/openturnover/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:CHART</iconId> + </entityActionField> <entityActionField> <name>addAttributeToSelection</name> <title>Set attribute (use filter result)</title> @@ -1315,7 +1322,7 @@ </dependency> <children> <entityParameter> - <name>ContactId_param</name> + <name>ContactIds_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/openturnover/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/openturnover/onActionProcess.js new file mode 100644 index 00000000000..369a9d04fef --- /dev/null +++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/openturnover/onActionProcess.js @@ -0,0 +1,22 @@ +import("system.neon"); +import("Context_lib"); +import("FilterViewAction_lib"); +import("system.vars"); + +var contactIds = []; +var currentContext = ContextUtils.getCurrentContextId(); + +if (vars.get("$sys.selection").length > 0) +{ + contactIds = vars.get("$sys.selection"); +} +else +{ + contactIds = FilterViewActionUtils.getUidsByEntityFilter(currentContext, vars.get("$sys.filter")); +} + +var params = { + "ContactIds_param": JSON.stringify(contactIds) +}; + +neon.openContext("Turnover", "TurnoverDynamicMultiDataChartOrganisationGrouping_view", null, neon.OPERATINGSTATE_SEARCH, params, null); \ No newline at end of file diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod index 3f19987dced..8f20baba778 100644 --- a/entity/Turnover_entity/Turnover_entity.aod +++ b/entity/Turnover_entity/Turnover_entity.aod @@ -201,7 +201,7 @@ </children> </entityProvider> <entityParameter> - <name>ContactId_param</name> + <name>ContactIds_param</name> <expose v="true" /> </entityParameter> <entityParameter> diff --git a/entity/Turnover_entity/initFilterProcess.js b/entity/Turnover_entity/initFilterProcess.js index b7905f93bee..3d13a60e2f3 100644 --- a/entity/Turnover_entity/initFilterProcess.js +++ b/entity/Turnover_entity/initFilterProcess.js @@ -6,10 +6,10 @@ import("Keyword_lib"); import("KeywordRegistry_basic"); import("system.result"); -var contactId = vars.get("$param.ContactId_param"); +var contactIds = vars.get("$param.ContactIds_param"); var salesprojectId = vars.get("$param.SalesprojectIdDynamicChart_param"); -if(contactId || salesprojectId) +if(contactIds || salesprojectId) { var filter = { type: "group", @@ -24,11 +24,29 @@ if(contactId || salesprojectId) }] }; - if(contactId) + if(contactIds) { - filter.childs[0].name = "ORGANISATION_ID"; - filter.childs[0].key = contactId; - filter.childs[0].value = OrganisationUtils.getNameByContactId(contactId); + contactIds = JSON.parse(contactIds); + + filter.operator = "OR"; + for (i = 0; i < contactIds.length; i++) + { + if(i != 0) + { + filter.childs.push({ + type: "row", + name: null, + operator: "EQUAL", + contenttype: "TEXT", + key: null, + value: null + }); + } + + filter.childs[i].name = "ORGANISATION_ID"; + filter.childs[i].key = contactIds[i]; + filter.childs[i].value = OrganisationUtils.getNameByContactId(contactIds[i]); + } } else if(salesprojectId) { diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index ad0a74378d8..c264c38136f 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -9496,6 +9496,27 @@ <entry> <key>TrueType Font</key> </entry> + <entry> + <key>No recipient is marked for test run replacement.</key> + </entry> + <entry> + <key>Should a test email be sent to you instead?</key> + </entry> + <entry> + <key>Copy Recipients</key> + </entry> + <entry> + <key>copy</key> + </entry> + <entry> + <key>There are no test recipients.</key> + </entry> + <entry> + <key>The test run is not properly configured.</key> + </entry> + <entry> + <key>Open Turnover</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 86f1d20bd15..13fce6618cf 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -38,6 +38,10 @@ <key>Default phone</key> <value>Standard Telefon</value> </entry> + <entry> + <key>Open Turnover</key> + <value>Umsatzprognose öffnen</value> + </entry> <entry> <key>Number of clicks</key> <value>Anzahl Klicks</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 14758851ea7..1f456fce27c 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -9611,6 +9611,27 @@ <entry> <key>TrueType Font</key> </entry> + <entry> + <key>No recipient is marked for test run replacement.</key> + </entry> + <entry> + <key>Should a test email be sent to you instead?</key> + </entry> + <entry> + <key>Copy Recipients</key> + </entry> + <entry> + <key>copy</key> + </entry> + <entry> + <key>There are no test recipients.</key> + </entry> + <entry> + <key>The test run is not properly configured.</key> + </entry> + <entry> + <key>Open Turnover</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Turnover/Turnover.aod b/neonContext/Turnover/Turnover.aod index b1da34ccaf6..5b68846a330 100644 --- a/neonContext/Turnover/Turnover.aod +++ b/neonContext/Turnover/Turnover.aod @@ -22,5 +22,9 @@ <name>d54348be-db01-4f89-ad3f-99ef35fa7e32</name> <view>TurnoverDynamicMultiDataChart_view</view> </neonViewReference> + <neonViewReference> + <name>2356a379-c5d3-4eea-b81e-ad3eb70a7309</name> + <view>TurnoverDynamicMultiDataChartOrganisationGrouping_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/TurnoverDynamicMultiDataChartOrganisationGrouping_view.aod b/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/TurnoverDynamicMultiDataChartOrganisationGrouping_view.aod new file mode 100644 index 00000000000..ccb59b7d2f9 --- /dev/null +++ b/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/TurnoverDynamicMultiDataChartOrganisationGrouping_view.aod @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TurnoverDynamicMultiDataChartOrganisationGrouping_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/documentation.adoc</documentation> + <filterable v="true" /> + <layout> + <groupLayout> + <name>layout</name> + </groupLayout> + </layout> + <children> + <dynamicMultiDataChartViewTemplate> + <name>ColumnChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Volume</yAxisLabel> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <maxDBRow v="1000" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>e799a70f-0d62-4871-bf78-208450514924</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>42754fbc-e0e4-4175-bed1-1b8a612f0b1a</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>7e55a377-7b61-47ce-a969-a0eec026eb4d</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>ef1322ac-a717-4a29-bda0-09bb2cafd124</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>LineChart</name> + <chartType>LINE</chartType> + <yAxisLabel>Volume</yAxisLabel> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <maxDBRow v="1000" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>c89c74f6-97d2-407c-97bb-705badd0a47b</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>cb37d17b-0582-4858-b821-0d0bf9d31936</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>73faf8fc-faf8-469e-b9b8-50fc1784b759</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>6cc4169a-bf40-4bb6-b842-00b8dcf00e7c</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>AreaChart</name> + <chartType>AREA</chartType> + <yAxisLabel>Volume</yAxisLabel> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <maxDBRow v="1000" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>a21fd450-e912-426d-a714-670d7cf238e7</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>4a2291ee-ede4-45c1-b1cc-1ed6e7a91e56</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>5dfa62d6-a0ff-4a10-a041-8de6fe9c635a</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>f2e8b9c6-fbda-4715-b118-311f9d5eeb12</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>BarChart</name> + <chartType>BAR</chartType> + <yAxisLabel>Volume</yAxisLabel> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <maxDBRow v="1000" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>3157970c-538f-45d9-89ea-00d514c14e43</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>48aebea0-789c-40da-ab0a-e859f76c7ba0</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>2138239a-aba5-4d49-84cb-f4cd03be0a09</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>d8e81828-77cd-4066-a924-b9a7b3bd4fbf</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>SplineChart</name> + <chartType>SPLINE</chartType> + <yAxisLabel>Volume</yAxisLabel> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <maxDBRow v="1000" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>7481739d-d6e6-4c48-bcae-8b593d8d6834</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>fa8e7b00-0a3e-42c9-8848-8e6e423cbe1a</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>ff7437b9-b517-482a-a1fa-814bc58acfe9</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + <neonDynamicMultiDataChartColumn> + <name>b3ed1ac2-5449-4dd6-b45d-372ffeaff6c8</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <treeTableViewTemplate> + <name>TreeTable</name> + <showChildrenCount v="false" /> + <defaultGroupFields> + <element>ORGANISATION_ID</element> + </defaultGroupFields> + <isCreatable v="false" /> + <isDeletable v="false" /> + <isEditable v="false" /> + <columns> + <neonTreeTableColumn> + <name>96b1a5cf-a9d2-4082-bff7-664a16bfefb7</name> + <entityField>GroupField</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3b98f8bc-643c-4fa9-be27-e1770cfb04f0</name> + <entityField>PLANNING_VOLUME</entityField> + <aggregateEntityField>PlanningVolume_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f5279d1a-1794-4d1e-9821-a1bb37188bc1</name> + <entityField>FORECAST_VOLUME</entityField> + <aggregateEntityField>ForecastVolume_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>989c33e7-1833-44c3-94f6-81c2d09049dc</name> + <entityField>FORECAST_VOLUME_weighted</entityField> + <aggregateEntityField>ForecastVolumeWeighted_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>91d3962e-1d4b-4923-bbd5-ed6e2453d1d2</name> + <entityField>TURNOVER_VOLUME</entityField> + <aggregateEntityField>TurnoverVolume_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>80ec8777-8d68-4904-922d-1a7045fb5a5c</name> + <entityField>emptyField</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> + </children> +</neonView> diff --git a/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/documentation.adoc b/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/documentation.adoc new file mode 100644 index 00000000000..d82264b3cd8 --- /dev/null +++ b/neonView/TurnoverDynamicMultiDataChartOrganisationGrouping_view/documentation.adoc @@ -0,0 +1,6 @@ +== TurnoverDynamicMultiDataChartOrganisationGrouping_view + +This View is no different to TurnoverDynamicMultiDataChart_view except the defaultGroupFields: the normal view has the YEAR set, +and the viewtemplates of this view have the ORGANISATION_ID set. +Reason being, that we want to have the organisation set as defaultGroupField when usng the "openTurnover" action from Organisation_entity. +There currently is no way of dynamically changing the defaultGroupField, so this very similar view has to exist. \ No newline at end of file -- GitLab