From c3b7369772c3f41e3e3531392258b46574e51fe0 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Thu, 24 Jan 2019 13:40:29 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201032242][Gruppierung=20-=20Eingagsdatum=20nur=20nach=20Tag?=
 =?UTF-8?q?=20bei=20Aktivit=C3=A4t]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 entity/Activity_entity/Activity_entity.aod    | 20 ++++
 .../entrymonth.value/expression.js            |  0
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  4 +
 process/Sql_lib/process.js                    | 93 +++++++++++++++++++
 4 files changed, 117 insertions(+)
 create mode 100644 entity/Activity_entity/recordcontainers/db/recordfieldmappings/entrymonth.value/expression.js

diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index 4b06d1d2e1..f0afe7f83e 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -237,6 +237,18 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityField>
+      <name>ENTRYMONTH</name>
+      <title>Month</title>
+      <contentType>DATE</contentType>
+      <resolution>MONTH</resolution>
+      <outputFormat>MMMM yyyy</outputFormat>
+      <groupable v="true" />
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+      </onValueChangeTypes>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -288,6 +300,14 @@
           <name>CATEGORY.value</name>
           <recordfield>ACTIVITY.CATEGORY</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ENTRYMONTH.value</name>
+          <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/entrymonth.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ENTRYMONTH.displayValue</name>
+          <recordfield>ACTIVITY.ENTRYDATE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Activity_entity/recordcontainers/db/recordfieldmappings/entrymonth.value/expression.js b/entity/Activity_entity/recordcontainers/db/recordfieldmappings/entrymonth.value/expression.js
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index bd9a6523db..3afab6b640 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -771,6 +771,10 @@
       <key>Project decision</key>
       <value>Projektentscheidung</value>
     </entry>
+    <entry>
+      <key>Month</key>
+      <value>Monat</value>
+    </entry>
     <entry>
       <key>Lead</key>
       <value>Lead</value>
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index 69e3b68521..98d834bfa9 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -857,6 +857,99 @@ SqlMaskingUtils.prototype.isNull = function(field, replaceWith) {
     return retSql;
 }
 
+/**
+ * gets the day from a timestamp
+ *
+ * @param {String} pField timestamp to get the day from
+ *
+ * @return {String} sql expression that extracts the day from a timestamp
+ */
+SqlMaskingUtils.prototype.dayFromDate = function(pField)
+{
+    var retSql = "";
+
+    switch (this.dbType)
+    {
+        case db.DBTYPE_ORACLE10_CLUSTER:
+        case db.DBTYPE_ORACLE10_THIN:
+        case db.DBTYPE_ORACLE10_OCI:
+            retSql = "to_char(" + pField + ",'dd')";
+            break;
+        case db.DBTYPE_DERBY10:
+        case db.DBTYPE_SQLSERVER2000:
+        case db.DBTYPE_MYSQL4:
+        case db.DBTYPE_MARIADB10:
+            retSql = "DAY(" + pField + ")";
+            break;
+        case db.DBTYPE_POSTGRESQL8:
+            retSql = "EXTRACT (DAY from " + pField + ")";
+            break;
+    }
+    return retSql;
+}
+
+/**
+ * gets the month from a timestamp
+ *
+ * @param {String} pField timestamp to get the month from
+ *
+ * @return {String} sql expression that extracts the month from a timestamp
+ */
+SqlMaskingUtils.prototype.monthFromDate = function(pField)
+{
+    var retSql = "";
+
+    switch (this.dbType)
+    {
+        case db.DBTYPE_ORACLE10_CLUSTER:
+        case db.DBTYPE_ORACLE10_THIN:
+        case db.DBTYPE_ORACLE10_OCI:
+            retSql = "to_char(" + pField + ",'MM')";
+            break;
+        case db.DBTYPE_DERBY10:
+        case db.DBTYPE_SQLSERVER2000:
+        case db.DBTYPE_MYSQL4:
+        case db.DBTYPE_MARIADB10:
+            retSql = "MONTH(" + pField + ")";
+            break;
+        case db.DBTYPE_POSTGRESQL8:
+            retSql = "EXTRACT (MONTH FROM " + pField + ")";
+            break;
+    }
+    return retSql;
+}
+
+/**
+ * gets the year from a timestamp
+ *
+ * @param {String} pField timestamp to get the year from
+ *
+ * @return {String} sql expression that extracts the year from a timestamp
+ */
+SqlMaskingUtils.prototype.yearFromDate = function(pField)
+{
+    var retSql = "";
+
+    switch (this.dbType)
+    {
+        case db.DBTYPE_ORACLE10_CLUSTER:
+        case db.DBTYPE_ORACLE10_THIN:
+        case db.DBTYPE_ORACLE10_OCI:
+            retSql = "to_char(" + pField + ",'yyyy')";
+            break;
+        case db.DBTYPE_DERBY10:
+        case db.DBTYPE_SQLSERVER2000:
+        case db.DBTYPE_MYSQL4:
+        case db.DBTYPE_MARIADB10:
+            retSql = "YEAR(" + pField + ")";
+            break;
+        case db.DBTYPE_POSTGRESQL8:
+            retSql = "EXTRACT (YEAR FROM " + pField + ")";
+            break;
+    }
+    return retSql;
+}
+
 function SqlUtils() {}
 
 SqlUtils.getSingleColumnType = function(fieldOrTableName, columnName, alias) {
-- 
GitLab