From e886b7c1809155b477e4dadd978783f5d16a472f Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Thu, 21 Feb 2019 10:30:39 +0100 Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?= =?UTF-8?q?=201035070][Vertriebsprojekt=20-=20Inaktivt=C3=A4t=20abh=C3=A4n?= =?UTF-8?q?gig=20von=20der=20letzten=20Historie=20anzeigen]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Salesproject_entity.aod | 9 +++++-- .../days_notactive/valueProcess.js | 11 +++++++++ .../_____LANGUAGE_EXTRA.aod | 15 ++++++++++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 12 ++++++++++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 15 ++++++++++++ .../SalesprojectPreview_view.aod | 10 ++++++++ process/Activity_lib/process.js | 24 +++++++++++++++++++ process/Date_lib/process.js | 22 ++++++++++++++++- 8 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index a52e76a53a..582e6402cc 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -3,7 +3,6 @@ <name>Salesproject_entity</name> <title>Salesproject</title> <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/Salesproject_entity/documentation.adoc</documentation> <iconId>VAADIN:BOOK_DOLLAR</iconId> <titleProcess>%aditoprj%/entity/Salesproject_entity/titleProcess.js</titleProcess> <recordContainer>db</recordContainer> @@ -112,7 +111,7 @@ </entityField> <entityConsumer> <name>SalesprojectSources</name> - <title>Source</title> + <title>Touchpoints</title> <fieldType>DEPENDENCY_OUT</fieldType> <dependency> <name>dependency</name> @@ -395,6 +394,12 @@ <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> <iconId>NEON:HISTORY</iconId> </entityActionField> + <entityField> + <name>DAYS_NOTACTIVE</name> + <title>Days inactive</title> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js b/entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js new file mode 100644 index 0000000000..cddfb6d43c --- /dev/null +++ b/entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js @@ -0,0 +1,11 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Activity_lib"); +import("Date_lib"); + +var entryDate = ActivityUtils.getLastActivityDate(vars.get("$field.SALESPROJECTID")); +var daysPassed = DateUtils.getDayDifference(entryDate); + +if (daysPassed != null) + result.string(daysPassed); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 2e8efe2be5..bc648ee740 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2346,6 +2346,21 @@ <entry> <key>Level</key> </entry> + <entry> + <key>Touchpoint</key> + </entry> + <entry> + <key>Touchpoints</key> + </entry> + <entry> + <key>Day</key> + </entry> + <entry> + <key>Days</key> + </entry> + <entry> + <key>Days inactive</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 27fb260860..cb6f839323 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -14,6 +14,10 @@ <key>Turnover</key> <value>Umsatz</value> </entry> + <entry> + <key>Days</key> + <value>Tage</value> + </entry> <entry> <key>E-Mail</key> <value>E-Mail</value> @@ -78,6 +82,10 @@ <key>${SALESPROJECT_MEMBER}</key> <value>Projektteam</value> </entry> + <entry> + <key>Days inactive</key> + <value>Tage inaktiv</value> + </entry> <entry> <key>Active</key> <value>Aktiv</value> @@ -756,6 +764,10 @@ <key>Show open salesprojects</key> <value>Offene Vertriebsprojekte anzeigen</value> </entry> + <entry> + <key>Day</key> + <value>Tag</value> + </entry> <entry> <key>Receipt number</key> <value>Belegnummer</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 1e68696cfb..aa09e4cbb8 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -2370,6 +2370,21 @@ <entry> <key>Level</key> </entry> + <entry> + <key>Touchpoint</key> + </entry> + <entry> + <key>Touchpoints</key> + </entry> + <entry> + <key>Day</key> + </entry> + <entry> + <key>Days</key> + </entry> + <entry> + <key>Days inactive</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod index e0bc20e97a..b36c8a2373 100644 --- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod +++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod @@ -76,5 +76,15 @@ <entityField>MainDocuments</entityField> <view>DocumentList_view</view> </neonViewReference> + <scoreCardViewTemplate> + <name>SalesprojectScore_template</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>79490331-6be4-422f-9450-da0db56f0654</name> + <entityField>DAYS_NOTACTIVE</entityField> + </entityFieldLink> + </fields> + </scoreCardViewTemplate> </children> </neonView> diff --git a/process/Activity_lib/process.js b/process/Activity_lib/process.js index b9a50c73f4..8d8252e5b4 100644 --- a/process/Activity_lib/process.js +++ b/process/Activity_lib/process.js @@ -31,4 +31,28 @@ ActivityUtils.createNewActivity = function(pRowId) params["ObjectId_param"] = ContextUtils.getCurrentContextId(); params["RowId_param"] = pRowId; neon.openContext("Activity", null, null, neon.OPERATINGSTATE_NEW, params); +} + +/* + * Gets the date of the last activity + * + * @param {String} pRowId the rowid of the dataset + * + * @return {number|null} the date of the last actvity as long + */ +ActivityUtils.getLastActivityDate = function (pRowId) +{ + var context = ContextUtils.getCurrentContextId(); + var sqlUtil = new SqlMaskingUtils(); + var activitySql = "select " + sqlUtil.max("ENTRYDATE") + " from ACTIVITY " + + " join ACTIVITYLINK on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID"; + activitySql = SqlCondition.begin() + .andPrepare("ACTIVITYLINK.OBJECT_TYPE", context) + .andPrepare("ACTIVITYLINK.OBJECT_ROWID", pRowId) + .buildSql(activitySql); + + var entryDate = db.cell(activitySql); + if (entryDate != "") + return parseInt(entryDate); + return null; } \ No newline at end of file diff --git a/process/Date_lib/process.js b/process/Date_lib/process.js index bbfc15c251..f4121551b8 100644 --- a/process/Date_lib/process.js +++ b/process/Date_lib/process.js @@ -74,4 +74,24 @@ DateUtils.getMonthName = function(pMonth) { return monthNames[pMonth]; -} \ No newline at end of file +} + +/** + * Calculates the passed days between two dates. + * + * @param {Number} pPastDate the first timestamp + * @param {Number} [pCurrentDate=currentTimestamp] the second timestamp + * + * @return {Number|null} the amount of days (value is always positive) or null if pPastDate is null + */ +DateUtils.getDayDifference = function (pPastDate, pCurrentDate) +{ + if (pPastDate == null) + return null; + if (pCurrentDate == null) + pCurrentDate = datetime.date(); + var millisecDiff = Math.abs(pCurrentDate - pPastDate); + var dayDiff = Math.floor(millisecDiff / datetime.ONE_DAY); + + return dayDiff; +} -- GitLab