diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 3c8458d4e012e9b23427b7f7c9214c647d75e491..d507d0d138a404daf59354d1e1a1beb40fe0da7c 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 37c61c5ea46125ee67b5ebf02e104f3a5d60582f..96024ecc36eda176ee34af637cac7dcbfe19e7a6 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 0000000000000000000000000000000000000000..c8db7ec7ba0e820f2e89fa0c6bb48100073811e5 --- /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 0000000000000000000000000000000000000000..1b532aec63043fba84acf422369129fb9706bc12 --- /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 0000000000000000000000000000000000000000..20dd9c7dc7b04a439a16a2a9b4cd833c78f3f964 --- /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 2adb4c496b729bf420d6139e84527643d452ddc5..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..5a8a9c5933eb25e1aadbbdc66fa8ac545c1d12b5 --- /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 e4b7b91a7c818515f1dd2c40ddcd5024f279f818..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..f05ac4a9bca40cede00cff420feb6e4343d2c2cd --- /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 0000000000000000000000000000000000000000..e5c82e9c86a2c395736339cb57fe1e2fede85a2e --- /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 8dd70d03762336957667a24272a3df69a8b89d64..c3800549e1dfb92a34a34c43763dee3df79f5a5b 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 96fe65066986842adaac2b05409ec910fc8e278f..82da24e117a6d6484a588ee712a1212718c6dd47 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 9c601e9d5a4b6e3875d9733899cc049e2637d271..39f286488daf433d79cda73c8e35cde72e964853 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 37f47edb8bd6a1b5a0cec9aba63ea5adb853ddf1..a5422082d260a0e651632846afbc6b826ae25ff3 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 c19b2a85a61c7834216395ae36f9f36a61a0ec9a..3626804e1c32ebcc9f4fbb25529c806c6937080f 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 177c2715e8d3291f6b2caf9dd6bb4eca2bd9b447..0000000000000000000000000000000000000000 --- 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 2774b5d2994c4eb1f7ed260ea4e4d863f8b4c0fa..0000000000000000000000000000000000000000 --- 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 c87d969c7e783a67c5a59460acedbc63322c216e..0000000000000000000000000000000000000000 --- 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 98018a3e81f528bacbddee140cc5e08863f720aa..0000000000000000000000000000000000000000 --- 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 4f429107957c57843a11aaff1328c91c90cac815..d2651987d7b1400048898ae5d5ad86b2f5b670d3 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 a33cf5327537177245c5192fa1dce9ffd317ab08..5075336ab8a62209ae9b092900eec7b8f8496614 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 0f98d5e899c68d36887f0faddf08e76266c9587b..2df66cbf60d17804cc3d027c8e2af5558ae566a5 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 85744379172ee4a7dd11a311749d1010d35f8d04..a7713459de8218a409a158b5bcf79b12659835c4 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