From f7b236410bcf0899d84a69503db5866bd731af9a Mon Sep 17 00:00:00 2001
From: "d.lechner" <d.lechner@adito.de>
Date: Fri, 26 Jul 2019 17:18:18 +0200
Subject: [PATCH] Turnover and Contact Information for Organisation

---
 .../Organisation_entity.aod                   | 32 ++++++++++++++++
 .../countactivity/valueProcess.js             |  7 ++++
 .../entityfields/lastactivity/colorProcess.js |  8 ++++
 .../entityfields/lastactivity/valueProcess.js | 15 ++++++++
 .../turnovercurrentyear/valueProcess.js       | 17 +++++++++
 .../turnoverlastyear/valueProcess.js          | 17 +++++++++
 .../turnoverpercentdiff/colorProcess.js       | 14 +++++++
 .../turnoverpercentdiff/valueProcess.js       | 21 +++++++++++
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     | 24 ++++++++++++
 .../OrganisationPreview_view.aod              | 37 +++++++++++++++++++
 10 files changed, 192 insertions(+)
 create mode 100644 entity/Organisation_entity/entityfields/countactivity/valueProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/lastactivity/colorProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/lastactivity/valueProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js
 create mode 100644 entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js

diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index c364a60dda6..77c28108b05 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -863,6 +863,38 @@
         <fieldName>Products</fieldName>
       </dependency>
     </entityConsumer>
+    <entityField>
+      <name>TurnoverCurrentYear</name>
+      <title>Turnover Current Year</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00€</outputFormat>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TurnoverLastYear</name>
+      <title>Turnover Last Year</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00€</outputFormat>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TurnoverPercentDiff</name>
+      <title>Turnover change</title>
+      <colorProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js</colorProcess>
+      <contentType>TEXT</contentType>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>CountActivity</name>
+      <title>Number of activities</title>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/countactivity/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>LastActivity</name>
+      <title>Days inactive</title>
+      <colorProcess>%aditoprj%/entity/Organisation_entity/entityfields/lastactivity/colorProcess.js</colorProcess>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/lastactivity/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Organisation_entity/entityfields/countactivity/valueProcess.js b/entity/Organisation_entity/entityfields/countactivity/valueProcess.js
new file mode 100644
index 00000000000..d3606bbab63
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/countactivity/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+import("system.db");
+var amount = db.cell("select count(ACTIVITYID) from ACTIVITY join ACTIVITYLINK on ACTIVITYLINK.ACTIVITY_ID = ACTIVITY.ACTIVITYID \n\
+                      where ACTIVITYLINK.OBJECT_ROWID = '" + vars.get("$field.CONTACTID") + "' and ACTIVITYLINK.OBJECT_TYPE = 'Organisation'");
+
+result.string(amount);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/lastactivity/colorProcess.js b/entity/Organisation_entity/entityfields/lastactivity/colorProcess.js
new file mode 100644
index 00000000000..078b0ce70cd
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/lastactivity/colorProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(parseInt(vars.get("$field.LastActivity")) > 50)
+{
+    result.string(neon.PRIORITY_HIGH_COLOR);
+}
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/lastactivity/valueProcess.js b/entity/Organisation_entity/entityfields/lastactivity/valueProcess.js
new file mode 100644
index 00000000000..29dba86a024
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/lastactivity/valueProcess.js
@@ -0,0 +1,15 @@
+import("system.datetime");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("ActivityTask_lib");
+import("Date_lib");
+
+var entryDate = ActivityUtils.getLastActivityDate(vars.get("$field.CONTACTID"));
+if (!entryDate)
+    entryDate = vars.get("$field.DATE_NEW");
+    
+daysPassed = DateUtils.getDayDifference(entryDate);
+
+if (daysPassed != null)
+    result.string(daysPassed);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js b/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js
new file mode 100644
index 00000000000..1f8ee1ceff0
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js
@@ -0,0 +1,17 @@
+import("system.translate");
+import("Util_lib");
+import("system.datetime");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("system.date");
+
+var currentYear = datetime.toDate(vars.get("$sys.date"), "yyyy");
+
+var salesCurrentYear = db.cell("select SUM(NET) from salesorder where SALESORDERDATE >= '" + currentYear + "-01-01 00:00:00.000' \n\
+                                                                and CONTACT_ID = '" + vars.get("$field.CONTACTID") + "'");
+
+if(salesCurrentYear == "")
+    salesCurrentYear = 0;
+
+result.string(salesCurrentYear);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js b/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js
new file mode 100644
index 00000000000..fcf33532b8f
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js
@@ -0,0 +1,17 @@
+import("system.logging");
+import("system.datetime");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("system.date");
+
+var lastYear = parseInt(datetime.toDate(vars.get("$sys.date"), "yyyy")) - 1;
+
+var salesLastYear = db.cell("select SUM(NET) from salesorder where SALESORDERDATE < '" + (lastYear+1) + "-01-01 00:00:00.000' \n\
+                                                             and SALESORDERDATE >= '" + lastYear + "-01-01 00:00:00.000'  \n\
+                                                             and CONTACT_ID = '" + vars.get("$field.CONTACTID") + "'");
+
+if(salesLastYear == "")
+    salesLastYear = 0;
+
+result.string(salesLastYear);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js b/entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js
new file mode 100644
index 00000000000..7a56cd33a5c
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js
@@ -0,0 +1,14 @@
+import("system.result");
+import("system.logging");
+import("system.vars");
+import("system.neon");
+
+var ret;
+var turnoverPercentDiff = parseInt(vars.get("$field.TurnoverPercentDiff"));
+
+if(turnoverPercentDiff > 0)
+    ret = neon.PRIORITY_LOW_COLOR;
+else if (turnoverPercentDiff < 0)
+    ret = neon.PRIORITY_HIGH_COLOR;
+
+result.string(ret);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js b/entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js
new file mode 100644
index 00000000000..4d60d87f534
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js
@@ -0,0 +1,21 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+
+var ret = 0;
+
+var turnoverCurrentYear = parseInt(vars.get("$field.TurnoverCurrentYear"));
+var turnoverLastYear    = parseInt(vars.get("$field.TurnoverLastYear"));
+
+if(turnoverLastYear != 0 && turnoverCurrentYear != 0)
+    ret = parseInt(100 / turnoverLastYear * turnoverCurrentYear) - 100;
+else if(turnoverLastYear == 0 && turnoverCurrentYear != 0)
+    ret = 100;
+else if(turnoverLastYear != 0 && turnoverCurrentYear == 0 )
+    ret = -100;
+else
+    ret = 0;
+
+ret += "%";
+
+result.string(ret);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 27dd1f34f9a..5861ec1b788 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -18,6 +18,10 @@
       <key>Data Privacy</key>
       <value>Datenschutz</value>
     </entry>
+    <entry>
+      <key>Number of activities</key>
+      <value>Anzahl Aktivitäten</value>
+    </entry>
     <entry>
       <key>Bulk mails</key>
       <value>Serienmails</value>
@@ -45,6 +49,10 @@
     <entry>
       <key>Members</key>
     </entry>
+    <entry>
+      <key>Turnover change</key>
+      <value>Entwicklung Umsatz</value>
+    </entry>
     <entry>
       <key>The following data has been anonymised: %0</key>
       <value>Die folgenden Daten wurden anonymisiert: %0</value>
@@ -57,6 +65,10 @@
       <key>MAX</key>
       <value>maximal</value>
     </entry>
+    <entry>
+      <key>Last activity</key>
+      <value>Letzte Aktivität (Tage)</value>
+    </entry>
     <entry>
       <key>Your changes have an impact on the data privacy information (DSGVO).</key>
       <value>Ihre Änderungen haben Auswirkungen auf den Datenschutz (DSGVO).</value>
@@ -1750,6 +1762,10 @@
       <key>Relationship</key>
       <value>Beziehung</value>
     </entry>
+    <entry>
+      <key>Change</key>
+      <value>Veränderung</value>
+    </entry>
     <entry>
       <key>Text Modular</key>
       <value>Textbaustein</value>
@@ -5959,6 +5975,10 @@
       <key>{$TICKET_EDITOR}</key>
       <value>Bearbeiter</value>
     </entry>
+    <entry>
+      <key>Turnover Last Year</key>
+      <value>Umsatz Vorjahr</value>
+    </entry>
     <entry>
       <key>Supportticket</key>
     </entry>
@@ -6431,6 +6451,10 @@
     <entry>
       <key>dada</key>
     </entry>
+    <entry>
+      <key>Turnover Current Year</key>
+      <value>Umsatz aktuelles Jahr</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
index 53db1551469..086e32caceb 100644
--- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
+++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
@@ -6,6 +6,7 @@
     <headerFooterLayout>
       <name>layout</name>
       <header>Header</header>
+      <footer>OrganistaionInformation</footer>
     </headerFooterLayout>
   </layout>
   <children>
@@ -27,6 +28,24 @@
       <entityField>Addresses</entityField>
       <view>AddressList_view</view>
     </neonViewReference>
+    <genericViewTemplate>
+      <name>Turnover</name>
+      <showDrawer v="true" />
+      <drawerCaption>Turnover</drawerCaption>
+      <entityField>#ENTITY</entityField>
+      <title>Turnover</title>
+      <devices />
+      <fields>
+        <entityFieldLink>
+          <name>1998bb83-a6c3-4bfb-9372-d592379591da</name>
+          <entityField>TurnoverCurrentYear</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>894a32ef-84cb-4331-a215-616b7402521d</name>
+          <entityField>TurnoverLastYear</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
       <showDrawer v="true" />
@@ -50,5 +69,23 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <scoreCardViewTemplate>
+      <name>OrganistaionInformation</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>66f460bd-164c-4c8f-a129-49a6626a3696</name>
+          <entityField>TurnoverPercentDiff</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e1d7710b-f696-434d-b3e4-5b31f847a916</name>
+          <entityField>LastActivity</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>cc143e94-006f-4059-925a-212e91c1ece7</name>
+          <entityField>CountActivity</entityField>
+        </entityFieldLink>
+      </fields>
+    </scoreCardViewTemplate>
   </children>
 </neonView>
-- 
GitLab