From dc101647471e8af5b59a9dd3e8008fa01003994b Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Thu, 11 Apr 2019 14:29:55 +0200 Subject: [PATCH] Meilensteine als chart --- .../KeywordEntry_entity.aod | 6 ++++ .../SalesprojectMilestone_entity.aod | 34 ++++++++++++++++-- .../entityfields/dayscount/valueProcess.js | 15 ++++++++ .../containername_param/valueProcess.js | 4 +++ .../entityfields/type/displayValueProcess.js | 5 +++ .../entityfields/type/possibleItemsProcess.js | 6 ---- .../entityfields/value/displayValueProcess.js | 5 +++ .../value/possibleItemsProcess.js | 20 ----------- .../recordcontainers/db/orderClauseProcess.js | 4 +++ .../parent.value/expression.js | 2 ++ .../salesprojectid_param/valueProcess.js | 0 .../_____LANGUAGE_EXTRA.aod | 6 ++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 8 +++++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 6 ++++ neonContext/Salesproject/Salesproject.aod | 4 --- .../SalesprojectMilestone.aod | 16 +-------- .../SalesprojectCycleEdit_view.aod | 35 ------------------- .../SalesprojectCycleFilter_view.aod | 32 ----------------- .../SalesprojectCyclePreview_view.aod | 28 --------------- .../SalesprojectCycle_view.aod | 23 ------------ .../SalesprojectMain_view.aod | 5 +++ .../SalesprojectMilestoneChart_view.aod} | 3 ++ process/Keyword_lib/process.js | 22 ++++++++++++ process/Salesproject_lib/process.js | 14 +++++++- 24 files changed, 137 insertions(+), 166 deletions(-) create mode 100644 entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js create mode 100644 entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js create mode 100644 entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js delete mode 100644 entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js create mode 100644 entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js delete mode 100644 entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js create mode 100644 entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js create mode 100644 entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js rename entity/Salesproject_entity/entityfields/{salesprojectcycles => salesprojectmilestones}/children/salesprojectid_param/valueProcess.js (100%) delete mode 100644 neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod delete mode 100644 neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod delete mode 100644 neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod delete mode 100644 neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod rename neonView/{SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod => SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod} (86%) diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 3c8458d4e0..d507d0d138 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -367,6 +367,12 @@ <fieldName>KeywordContactStates</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>740a9696-d394-48ea-bcbf-a5484a093bde</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>Keywords</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index 37c61c5ea4..96024ecc36 100644 --- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -25,23 +25,26 @@ </entityField> <entityField> <name>SALESPROJECT_MILESTONEID</name> + <searchable v="false" /> <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_milestoneid/valueProcess.js</valueProcess> </entityField> <entityField> <name>SALESPROJECT_ID</name> + <searchable v="false" /> <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_id/valueProcess.js</valueProcess> </entityField> <entityField> <name>TYPE</name> <title>Type</title> <mandatory v="true" /> - <possibleItemsProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess> + <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>VALUE</name> <title>Milestone</title> + <consumer>Keywords</consumer> <mandatory v="true" /> - <possibleItemsProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js</possibleItemsProcess> + <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js</displayValueProcess> </entityField> <entityParameter> <name>SalesprojectId_param</name> @@ -69,6 +72,28 @@ </entityParameter> </children> </entityProvider> + <entityField> + <name>DaysCount</name> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PARENT</name> + </entityField> + <entityConsumer> + <name>Keywords</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> @@ -76,6 +101,7 @@ <title></title> <alias>Data_alias</alias> <conditionProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBUpdate>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> @@ -111,6 +137,10 @@ <name>SALESPROJECT_ID.value</name> <recordfield>SALESPROJECT_MILESTONE.SALESPROJECT_ID</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PARENT.value</name> + <expression>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js new file mode 100644 index 0000000000..c8db7ec7ba --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js @@ -0,0 +1,15 @@ +import("system.result"); +import("system.vars"); +import("system.datetime"); + +var start = parseInt(vars.get("$field.DATE_START")); +var end = vars.get("$field.DATE_END"); + +if (!end) + end = parseInt(vars.get("$sys.date")); + +end = parseInt(end); + +var oneDay = datetime.ONE_DAY; +var diffDays = Math.round(Math.abs((end - start)/(oneDay))); +result.string(diffDays); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js new file mode 100644 index 0000000000..1b532aec63 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TYPE")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js new file mode 100644 index 0000000000..20dd9c7dc7 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); + +result.string(KeywordUtils.getTranslatedContainer(vars.get("$field.TYPE"))); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js b/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js deleted file mode 100644 index 2adb4c496b..0000000000 --- a/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); - -var items = LegacyKeywordUtils.getStandardArray("SALESPROJECT.MILESTONE.TYPE"); -result.object(items); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js new file mode 100644 index 0000000000..5a8a9c5933 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Keyword_lib"); + +result.string(KeywordUtils.getViewValue(vars.get("$field.TYPE"), vars.get("$field.VALUE"))) \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js deleted file mode 100644 index e4b7b91a7c..0000000000 --- a/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); - -var items, keyword, type; - -items = []; - -type = vars.getString("$field.TYPE"); - -// load the possible values based on the type. -if (type) { - keyword = LegacyKeywordUtils.get("SALESPROJECT.MILESTONE.TYPE", type)[2].keyword; - - if (keyword) { - items = LegacyKeywordUtils.getStandardArray(keyword); - } -} - -result.object(items); diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000..f05ac4a9bc --- /dev/null +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +result.object({ + "SALESPROJECT_MILESTONE.DATE_END": false +}); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js new file mode 100644 index 0000000000..e5c82e9c86 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("''") \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js similarity index 100% rename from entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js rename to entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 8dd70d0376..c3800549e1 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2841,6 +2841,12 @@ <entry> <key>ObjectRelationType</key> </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</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 96fe650669..82da24e117 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,6 +6,10 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>SalesprojectState</key> + <value>Status</value> + </entry> <entry> <key>Project management</key> <value>Projektmanagement</value> @@ -46,6 +50,10 @@ <key>Discount %</key> <value>Rabatt %</value> </entry> + <entry> + <key>SalesprojectPhase</key> + <value>Phase</value> + </entry> <entry> <key>Email must be unique!</key> <value>Die E-Mail-Adresse muss eindeutig sein!</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 9c601e9d5a..39f286488d 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -2872,6 +2872,12 @@ <entry> <key>ObjectRelationType</key> </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 37f47edb8b..a5422082d2 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -26,9 +26,5 @@ <name>c35cc718-94a8-43cf-afe4-f02d251d4e9f</name> <view>SalesprojectEdit_view</view> </neonViewReference> - <neonViewReference> - <name>d7fb7e2b-c932-4b96-be2c-ae5ec3d36beb</name> - <view>SalesprojectMilestone_view</view> - </neonViewReference> </references> </neonContext> diff --git a/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod b/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod index c19b2a85a6..3626804e1c 100644 --- a/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod +++ b/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod @@ -3,23 +3,9 @@ <name>SalesprojectMilestone</name> <description>Milestones of a salesproject</description> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterview>SalesprojectMilestoneFilter_view</filterview> - <editview>SalesprojectMilestoneEdit_view</editview> - <preview>SalesprojectMilestonePreview_view</preview> + <filterview>SalesprojectMilestoneChart_view</filterview> <entity>SalesprojectMilestone_entity</entity> <references> - <neonViewReference> - <name>5de9785c-92cc-4fe1-ae13-8d65b9a68ce0</name> - <view>SalesprojectMilestoneFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>04073406-1035-4a3b-919b-7e0bfda699e0</name> - <view>SalesprojectMilestoneEdit_view</view> - </neonViewReference> - <neonViewReference> - <name>b3a4073e-9431-4de1-a4d5-c9d11a71a214</name> - <view>SalesprojectMilestonePreview_view</view> - </neonViewReference> <neonViewReference> <name>54bee07a-f45d-458a-bfc6-56ba4992b63d</name> <view>SalesprojectMilestoneChart_view</view> diff --git a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod b/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod deleted file mode 100644 index 177c2715e8..0000000000 --- a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod +++ /dev/null @@ -1,35 +0,0 @@ -<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>SalesprojectMilestoneEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>Edit</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>ea501589-7a01-42d3-b0f4-521041554ee7</name> - <entityField>DATE_START</entityField> - </entityFieldLink> - <entityFieldLink> - <name>5df5e35b-4967-4efd-98ac-a57f757e04b4</name> - <entityField>DATE_END</entityField> - </entityFieldLink> - <entityFieldLink> - <name>db138f88-0cc7-42d9-a5d6-2bfc4f13985c</name> - <entityField>TYPE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>71891f0f-e610-4584-8936-f2249e99e7ac</name> - <entityField>VALUE</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod b/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod deleted file mode 100644 index 2774b5d299..0000000000 --- a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod +++ /dev/null @@ -1,32 +0,0 @@ -<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>SalesprojectMilestoneFilter_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>Milestones</name> - <autoNewRow v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>1f66befa-a479-437e-b68f-da3cac6fed90</name> - <entityField>DATE_START</entityField> - </neonTableColumn> - <neonTableColumn> - <name>5001e853-a479-4e63-a0c6-3021926402b6</name> - <entityField>TYPE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>8a4c91ad-a1e4-4a94-acad-de232c7b0be7</name> - <entityField>VALUE</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod deleted file mode 100644 index c87d969c7e..0000000000 --- a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod +++ /dev/null @@ -1,28 +0,0 @@ -<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>SalesprojectMilestonePreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <cardViewTemplate> - <name>Header</name> - <titleField>VALUE</titleField> - <descriptionField>DATE_START</descriptionField> - <entityField>#ENTITY</entityField> - </cardViewTemplate> - <genericViewTemplate> - <name>Info</name> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>e77b903f-a06f-4437-9b25-693b6f2aa45f</name> - <entityField>DATE_END</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod b/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod deleted file mode 100644 index 98018a3e81..0000000000 --- a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod +++ /dev/null @@ -1,23 +0,0 @@ -<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>SalesprojectMilestone_view</name> - <title>Milestones</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>c68c50b8-6ff9-4be4-ab1e-c8bd9b93f650</name> - <entityField>SalesprojectMilestones</entityField> - <view>SalesprojectMilestoneFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>b172fd14-209d-412f-9250-aeb0f37091b5</name> - <entityField>SalesprojectForecasts</entityField> - <view>SalesprojectForecastFilter_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 4f42910795..d2651987d7 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -59,5 +59,10 @@ <entityField>Documents</entityField> <view>DocumentFilter_view</view> </neonViewReference> + <neonViewReference> + <name>349a82ad-4a83-4718-b37e-b0adf1ddb0b2</name> + <entityField>SalesprojectMilestones</entityField> + <view>SalesprojectMilestoneChart_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod similarity index 86% rename from neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod rename to neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod index a33cf53275..5075336ab8 100644 --- a/neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod +++ b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod @@ -11,6 +11,9 @@ <multiDataChartViewTemplate> <name>MilestoneChart</name> <chartType>COLUMN</chartType> + <xAxis>VALUE</xAxis> + <yAxis>DaysCount</yAxis> + <categoryField>TYPE</categoryField> <entityField>#ENTITY</entityField> </multiDataChartViewTemplate> </children> diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index 0f98d5e899..2df66cbf60 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -208,6 +208,28 @@ KeywordUtils.exists = function(pKeyId, pContainerName) return parseInt(db.cell(sql)) > 0; }; +/** + * get the translated container name. + * + * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; + * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here + * @return translated name, if it exists in the switch case + */ +KeywordUtils.getTranslatedContainer = function(pContainerName) +{ + switch (pContainerName) + { + case "SalesprojectPhase": + return translate.text("Phase"); + case "SalesprojectState": + return translate.text("State"); + break; + default: + return "Please add " + pContainerName + " to the switch case in Salesproject_lib"; + } + +} + /** * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute * diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 8574437917..a7713459de 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.logging"); import("system.neon"); import("system.vars"); @@ -50,6 +51,17 @@ Salesproject.validateProjectNumber = function(projectNumber) { Salesproject.insertMilestone = function(salesprojectId, type, value, notifyForecast) { logging.log(type + " " + value + " " + KeywordUtils.exists(value, type)) if (KeywordUtils.exists(value, type)) { + db.updateData( + "SALESPROJECT_MILESTONE", + ["DATE_END"], + null, + [vars.get("$sys.date")], + SqlCondition.begin() + .andPrepare("SALESPROJECT_MILESTONE.SALESPROJECT_ID", salesprojectId) + .andPrepare("SALESPROJECT_MILESTONE.TYPE", type) + .and("SALESPROJECT_MILESTONE.DATE_END is null") + .build("1=2")); + db.insertData( "SALESPROJECT_MILESTONE", ["SALESPROJECT_MILESTONEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START"], @@ -94,4 +106,4 @@ Salesproject.createNewSalesproject= function(pRelationId) params["ContactId_param"] = pRelationId; neon.openContext("Salesproject", null, null, neon.OPERATINGSTATE_NEW, params); -} +} \ No newline at end of file -- GitLab