From 40d4309ccb8ab300e492afacb52a3e8dc469506c Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Fri, 30 Nov 2018 11:09:48 +0100 Subject: [PATCH] =?UTF-8?q?salesproject=20Mitbewerber=20sind=20nun=20relat?= =?UTF-8?q?ion=5Fids,=20Forecast=20=C3=A4ndern-meldung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aliasDefinition/Data_alias/Data_alias.aod | 28 +++++----- .../SalesprojectCompetition_entity.aod | 52 +++++++++++++------ .../fromClauseProcess.js | 4 ++ .../SalesprojectCycle_entity.aod | 1 + entity/SalesprojectCycle_entity/onDBUpdate.js | 1 + entity/Salesproject_entity/onDBInsert.js | 4 +- entity/Salesproject_entity/onDBUpdate.js | 2 +- .../SalesprojectCompetitionEdit_view.aod | 4 +- .../SalesprojectCompetitionFilter_view.aod | 2 +- .../SalesprojectCompetitionPreview_view.aod | 2 +- .../example_salesproject/SALESPROJECT_gfk.xml | 3 +- .../create_salesproject_competition.xml | 5 +- process/Salesproject_lib/process.js | 21 ++++++-- 13 files changed, 85 insertions(+), 44 deletions(-) create mode 100644 entity/SalesprojectCompetition_entity/fromClauseProcess.js create mode 100644 entity/SalesprojectCycle_entity/onDBUpdate.js diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index c6a34fb55d..33b32e1133 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3443,20 +3443,6 @@ <title></title> <description></description> </entityFieldDb> - <entityFieldDb> - <name>ORGNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> <dbName></dbName> @@ -3569,6 +3555,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>RELATION_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod index 0de0f5401f..45202a13b6 100644 --- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod +++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod @@ -5,7 +5,28 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainerType>DB</recordContainerType> <alias>Data_alias</alias> + <fromClauseProcess>%aditoprj%/entity/SalesprojectCompetition_entity/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/SalesprojectCompetition_entity/conditionProcess.js</conditionProcess> + <linkInformation> + <linkInformation> + <name>20f54241-6118-4887-b558-471d4657816c</name> + <tableName>SALESPROJECT_COMPETITION</tableName> + <primaryKey>SALESPROJECT_COMPETITIONID</primaryKey> + <isUIDTable v="true" /> + </linkInformation> + <linkInformation> + <name>32d1fb91-f382-4416-84d5-934676b495d8</name> + <tableName>ORG</tableName> + <primaryKey>ORGID</primaryKey> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>02ac74a0-e9a1-44e8-9bc2-358b11b4cb54</name> + <tableName>RELATION</tableName> + <primaryKey>RELATIONID</primaryKey> + <readonly v="true" /> + </linkInformation> + </linkInformation> <entityFields> <entityIncomingField> <name>#INCOMING</name> @@ -36,13 +57,6 @@ <tableName>SALESPROJECT_COMPETITION</tableName> <columnName>INFO</columnName> </entityField> - <entityField> - <name>ORGNAME</name> - <title>Competitor</title> - <tableName>SALESPROJECT_COMPETITION</tableName> - <columnName>ORGNAME</columnName> - <mandatory v="true" /> - </entityField> <entityField> <name>REASON</name> <title>Reason</title> @@ -103,13 +117,21 @@ </entityDependency> </dependencies> </entityIncomingField> - </entityFields> - <linkInformation> - <linkInformation> - <name>474ddf87-d52d-4e4c-b5e3-30499a96d34c</name> + <entityField> + <name>RELATION_ID</name> + <title>Organisation</title> <tableName>SALESPROJECT_COMPETITION</tableName> - <primaryKey>SALESPROJECT_COMPETITIONID</primaryKey> - <isUIDTable v="true" /> - </linkInformation> - </linkInformation> + <columnName>RELATION_ID</columnName> + </entityField> + <entityField> + <name>ORG_NAME</name> + <tableName>ORG</tableName> + <columnName>NAME</columnName> + </entityField> + <entityField> + <name>ORG_ORGID</name> + <tableName>ORG</tableName> + <columnName>ORGID</columnName> + </entityField> + </entityFields> </entity> diff --git a/entity/SalesprojectCompetition_entity/fromClauseProcess.js b/entity/SalesprojectCompetition_entity/fromClauseProcess.js new file mode 100644 index 0000000000..07f8a92fe2 --- /dev/null +++ b/entity/SalesprojectCompetition_entity/fromClauseProcess.js @@ -0,0 +1,4 @@ +import("system.result"); + +result.string("SALESPROJECT_COMPETITION left join RELATION on (RELATION.RELATIONID = SALESPROJECT_COMPETITION.RELATION_ID) " + + "left join ORG on (ORG.ORGID = RELATION.ORG_ID)"); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod index d1d4e7cb60..54f0a57a75 100644 --- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod +++ b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod @@ -6,6 +6,7 @@ <recordContainerType>DB</recordContainerType> <alias>Data_alias</alias> <conditionProcess>%aditoprj%/entity/SalesprojectCycle_entity/conditionProcess.js</conditionProcess> + <onDBUpdate>%aditoprj%/entity/SalesprojectCycle_entity/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> <name>479f5969-fe03-4b36-8437-d2efc967e7b9</name> diff --git a/entity/SalesprojectCycle_entity/onDBUpdate.js b/entity/SalesprojectCycle_entity/onDBUpdate.js new file mode 100644 index 0000000000..10a9f323e8 --- /dev/null +++ b/entity/SalesprojectCycle_entity/onDBUpdate.js @@ -0,0 +1 @@ +notifyToUpdateForecast() \ No newline at end of file diff --git a/entity/Salesproject_entity/onDBInsert.js b/entity/Salesproject_entity/onDBInsert.js index 24f917cdcd..46e16c3d68 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"), 1, vars.get("$field.PHASE")); -Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE")); \ No newline at end of file +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE"), false); +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE"), true); \ No newline at end of file diff --git a/entity/Salesproject_entity/onDBUpdate.js b/entity/Salesproject_entity/onDBUpdate.js index aeffbb32c2..514b528e69 100644 --- a/entity/Salesproject_entity/onDBUpdate.js +++ b/entity/Salesproject_entity/onDBUpdate.js @@ -17,7 +17,7 @@ vars.get("$local.changed").forEach(function(fieldName) { } if (typeValue) { - Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar)); + Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar), true); } }); diff --git a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod index f5892c5380..ef5cf22d29 100644 --- a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod +++ b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod @@ -14,8 +14,8 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>f3cc24f9-5c2c-468d-a080-3c7af92e3a89</name> - <entityField>ORGNAME</entityField> + <name>8b4c3245-7b3a-4cd0-90f0-09631e2dbde8</name> + <entityField>RELATION_ID</entityField> </entityFieldLink> <entityFieldLink> <name>cdbba6a7-59d1-4831-b098-98a82ad46444</name> diff --git a/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod b/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod index 11ae73d3e1..46bb55a1b1 100644 --- a/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod +++ b/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod @@ -16,7 +16,7 @@ <columns> <neonTableColumn> <name>511ea459-1b6f-41e8-b35a-0f67361c82eb</name> - <entityField>ORGNAME</entityField> + <entityField>RELATION_ID</entityField> </neonTableColumn> <neonTableColumn> <name>322f7067-83ac-486e-9540-16d693775bdb</name> diff --git a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod index ac49613c7c..110db8a6a7 100644 --- a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod +++ b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod @@ -10,7 +10,7 @@ <children> <cardViewTemplate> <name>SalesprojectCompetitionHeader_template</name> - <titleField>ORGNAME</titleField> + <titleField>RELATION_ID</titleField> <descriptionField>INFO</descriptionField> <entityField>#ENTITY</entityField> </cardViewTemplate> diff --git a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml index 49d73913e7..a6aca25bd2 100644 --- a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml +++ b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml @@ -61,10 +61,9 @@ <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="DATE_CANCELLED" valueDate="2018-06-13T09:03:43"/> <column name="INFO" value="starkes Prozess Know-How, wird gefährlich für uns. Dazu private Verbindungen"/> - <column name="ORGNAME" value="Lieferdienst GmbH und Co.KG"/> + <column name="RELATION_ID" value="e5a0bbdb-6cc4-4889-97ab-dc5143fbeac2"/> <column name="STATUS" valueNumeric="1"/> </insert> diff --git a/others/db_changes/struct/create_salesproject_competition.xml b/others/db_changes/struct/create_salesproject_competition.xml index 9619363054..84c4f33f4e 100644 --- a/others/db_changes/struct/create_salesproject_competition.xml +++ b/others/db_changes/struct/create_salesproject_competition.xml @@ -8,10 +8,11 @@ <column name="SALESPROJECT_ID" type="CHAR(36)"> <constraints nullable="false"/> </column> - + <column name="RELATION_ID" type="CHAR(36)"> + <constraints nullable="false"/> + </column> <column name="DATE_CANCELLED" type="TIMESTAMP"/> <column name="INFO" type="NCLOB"/> - <column name="ORGNAME" type="VARCHAR(50)"/> <column name="REASON" type="INTEGER"/> <column name="STATUS" type="INTEGER"/> diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 4d5599f65b..ff3579d430 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -1,6 +1,8 @@ import("system.translate"); import("system.db"); import("system.eMath"); +import("system.question"); +import("system.logging"); import("Util_lib"); import("Keyword_lib"); @@ -27,7 +29,7 @@ Salesproject.getNextProjectNumber = function() { * * @param {String} projectNumber project number to check * - * @result {boolean} passed number is valid + * @result {Boolean} passed number is valid */ Salesproject.validateProjectNumber = function(projectNumber) { var JdUtils = new JDitoUtils(); @@ -40,19 +42,30 @@ Salesproject.validateProjectNumber = function(projectNumber) { * @param {String} salesprojectId of the salesproject * @param {Integer} type can be any value of the keyword SALESPROJECT.CYCLE.TYPE * @param {Integer} value value of the phase or state + * @param {Boolean} notifyForecast if true, notify user to update the forecast * - * @result {boolean} true if inserted, else false + * @result {Boolean} true if inserted, else false */ -Salesproject.insertMilestone = function(salesprojectId, type, value) { +Salesproject.insertMilestone = function(salesprojectId, type, value, notifyForecast) { if (KeywordUtils.createKeyword("SALESPROJECT.CYCLE.TYPE").exists(type)) { db.insertData( "SALESPROJECT_CYCLE", ["SALESPROJECT_CYCLEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START", "USER_NEW", "DATE_NEW"], null, [util.getNewUUID(), salesprojectId, type, value, vars.get("$sys.date"), vars.get("$sys.user"), vars.get("$sys.date")]); - + if (notifyForecast) { + this.notifyToUpdateForecast() + } return true; } return false; } + +/** + * Notify the user to update the forecast + */ +Salesproject.notifyToUpdateForecast = function() { + // Todo logging.show durch sinnvolle Meldung ersetzen oder ähnlich... + logging.show(translate.text("Please update the forecast.")) +} \ No newline at end of file -- GitLab