From aa2f08acd613d74db2d4eed58f71d25d6d967f4a Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Mon, 26 Nov 2018 11:16:23 +0100 Subject: [PATCH] Salesproject: create Milestones on changes --- aliasDefinition/Data_alias/Data_alias.aod | 2 +- .../SalesprojectCycle_entity.aod | 2 ++ .../entityfields/type/valueProcess.js | 0 .../entityfields/value/possibleItemsProcess.js | 11 ++++++----- entity/Salesproject_entity/Salesproject_entity.aod | 1 + entity/Salesproject_entity/onDBInsert.js | 4 ++-- entity/Salesproject_entity/onDBUpdate.js | 5 +++++ .../data/example_salesproject/SALESPROJECT_gfk.xml | 2 +- .../db_changes/struct/create_salesproject_cycle.xml | 2 +- process/Keyword_lib/process.js | 12 ++++++++++++ process/Salesproject_lib/process.js | 9 +++++++-- 11 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 entity/SalesprojectCycle_entity/entityfields/type/valueProcess.js create mode 100644 entity/Salesproject_entity/onDBUpdate.js diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index e5d9fb31d4..85d9ea5997 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3171,7 +3171,7 @@ <name>TYPE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="4" /> <size v="10" /> <scale v="0" /> <notNull v="false" /> diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod index 9befac9617..5d159a9908 100644 --- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod +++ b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod @@ -43,6 +43,8 @@ <name>TYPE</name> <tableName>SALESPROJECT_CYCLE</tableName> <columnName>TYPE</columnName> + <contentType>NUMBER</contentType> + <valueProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/type/valueProcess.js</valueProcess> </entityField> <entityField> <name>VALUE</name> diff --git a/entity/SalesprojectCycle_entity/entityfields/type/valueProcess.js b/entity/SalesprojectCycle_entity/entityfields/type/valueProcess.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js b/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js index 5f5dd7b9b2..b5cc5a9e29 100644 --- a/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js +++ b/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js @@ -1,21 +1,22 @@ import("system.result"); import("system.vars"); +import("system.logging"); import("Keyword_lib"); var kwdUtils, items, keyword; kwdUtils = new KeywordUtils(); - -switch (vars.get("$field.TYPE")) +logging.log(vars.get("$field.TYPE").toSource()) +switch (parseInt(vars.get("$field.TYPE"))) { - case "Phase": + case 1: keyword = "SALESPROJECT.PHASE"; break; - case "State": + case 2: keyword = "SALESPROJECT.STATE"; break; } - +logging.log(keyword) if (keyword) { items = kwdUtils.getStandardArray(keyword); } diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 91fa179c02..e24e99ec2a 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -8,6 +8,7 @@ <iconId>VAADIN:FILTER</iconId> <alias>Data_alias</alias> <onDBInsert>%aditoprj%/entity/Salesproject_entity/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/Salesproject_entity/onDBUpdate.js</onDBUpdate> <entityFields> <entityIncomingField> <name>#INCOMING</name> diff --git a/entity/Salesproject_entity/onDBInsert.js b/entity/Salesproject_entity/onDBInsert.js index 677dab41bf..24f917cdcd 100644 --- a/entity/Salesproject_entity/onDBInsert.js +++ b/entity/Salesproject_entity/onDBInsert.js @@ -1,5 +1,5 @@ import("system.vars"); import("Salesproject_lib"); -Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), Salesproject_TYPES.PHASE, vars.get("$field.PHASE")); -Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), Salesproject_TYPES.STATE, vars.get("$field.STATE")); \ No newline at end of file +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE")); +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE")); \ No newline at end of file diff --git a/entity/Salesproject_entity/onDBUpdate.js b/entity/Salesproject_entity/onDBUpdate.js new file mode 100644 index 0000000000..14b1627655 --- /dev/null +++ b/entity/Salesproject_entity/onDBUpdate.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.logging"); +import("Salesproject_lib"); + +logging.log(vars.get("$local.changed").toSource()) \ No newline at end of file diff --git a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml index f806e07377..db97bcf7d4 100644 --- a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml +++ b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml @@ -35,7 +35,7 @@ <column name="USER_NEW" value="admin"/> <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> <column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/> - <column name="TYPE" value="Phase"/> + <column name="TYPE" valueNumeric="1"/> <column name="VALUE" valueNumeric="1"/> <column name="DATE_START" valueDate="2018-06-13T09:03:43"/> <column name="DATE_END" valueDate="2018-06-13T09:03:43"/> diff --git a/others/db_changes/struct/create_salesproject_cycle.xml b/others/db_changes/struct/create_salesproject_cycle.xml index 49d8701706..73db00ee25 100644 --- a/others/db_changes/struct/create_salesproject_cycle.xml +++ b/others/db_changes/struct/create_salesproject_cycle.xml @@ -9,7 +9,7 @@ <constraints nullable="false"/> </column> - <column name="TYPE" type="VARCHAR(10)"/> + <column name="TYPE" type="INTEGER"/> <column name="VALUE" type="INTEGER"/> <column name="DATE_START" type="TIMESTAMP"/> diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index fd778f65a0..9faa3d7467 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -44,6 +44,7 @@ function KeywordUtils(){ * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" * @return {Object} object with the following methods: * <br/>- toArray + * <br/>- get * <br/>- getPropForKey * <br/>- getPropsForKey * <br/>- filter @@ -262,6 +263,12 @@ function KeywordUtils(){ ,createKeywordEntry("6", translate.text("Sales ID")) ]); break; + case "SALESPROJECT.CYCLE.TYPE": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("1", translate.text("Phase"), null, {keyword: "SALESPROJECT.PHASE"}) + ,createKeywordEntry("2", translate.text("State"), null, {category: "SALESPROJECT.STATE"}) + ]); + break; case "OFFER.PROBABILITY": valueContainer = createKeywordEntriesContainer([ createKeywordEntry("1", translate.text("0 %"), null, {percentValue: 0}) @@ -338,6 +345,10 @@ function KeywordUtils(){ } return res; }; + + _existsFn = function(key){ + return (valueContainer[key] != undefined); + }; return { /** @@ -355,6 +366,7 @@ function KeywordUtils(){ } return this; } + ,exists: _existsFn }; }; diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index e3f10b6a49..506500b8f9 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -2,6 +2,7 @@ import("system.translate"); import("system.db"); import("system.eMath"); import("Util_lib"); +import("Keyword_lib"); /** * Types for the milestone. @@ -44,13 +45,17 @@ Salesproject = { * Insert a new milestone. * * @param {String} ID of the salesproject - * @param {TYPES} type type can either be Salesproject_TYPES.PHASE or Salesproject_TYPES.STATE + * @param {Integer} type can be any value of the keyword SALESPROJECT.CYCLE.TYPE * @param {Integer} value value of the phase or state * * @result {boolean} true if inserted, else false */ insertMilestone: function(salesprojectId, type, value) { - if (type == Salesproject_TYPES.PHASE || type == Salesproject_TYPES.STATE) { + var kwdUtils, items; + + kwdUtils = new KeywordUtils(); + + if (kwdUtils.createKeyword("SALESPROJECT.CYCLE.TYPE").exists(type)) { db.insertData( "SALESPROJECT_CYCLE", ["SALESPROJECT_CYCLEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START", "USER_NEW", "DATE_NEW"], -- GitLab