From b752af10e9f67f914a6facf92f229d2cc79fe17c Mon Sep 17 00:00:00 2001
From: "b.ulrich" <b.ulrich@bulrich.aditosoftware.local>
Date: Mon, 24 Feb 2020 11:37:23 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201047858][DSGVO:=20Zustimmung=20bei=20Eintrag=20der=20E-Mail?=
 =?UTF-8?q?=20=C3=BCber=20UnlinkedMails]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../recordcontainers/jdito/onInsert.js           | 16 ++++++++--------
 .../mailastext_param/valueProcess.js             |  2 +-
 .../recordcontainers/dummyjdito/onUpdate.js      |  4 ++++
 process/DataPrivacy_lib/process.js               |  7 ++++---
 process/IncomingEmailExecutor_lib/process.js     |  2 +-
 5 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js
index 80412b871ce..9e1560a292a 100644
--- a/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js
@@ -1,9 +1,9 @@
-import("system.util");
-import("Sql_lib");
-import("system.db");
-import("DataPrivacy_lib");
-import("system.vars");
+import("system.datetime");
 
-var rowdata = vars.get("$local.rowdata")
-var contactId = rowdata["CONTACT_ID.value"]
-DataPrivacyUtils.notifyNeedDataPrivacyUpdate(contactId);
\ No newline at end of file
+/* In this process here basically nothing happens because everything is done within the UnlinkedMailMappingWrapper.
+ * To make the UnlinkedMailMappingLink_entity NOT read only we've to specify some code (comments excluded). This seems (and IS) odd but it's currenty
+ * the only way to do the job
+ * If you wan't more information about the entity and why it exists like this: See the documentation of the entity.
+ * 
+ * Tl;dr; do not remove the following line: */
+datetime.date();
\ No newline at end of file
diff --git a/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js
index 1e60e708982..706b1b035a7 100644
--- a/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js
+++ b/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js
@@ -9,7 +9,7 @@ if (unlinkedMailId)
 {
     res = newSelect("AB_UNLINKEDMAIL.MAIL")
                             .from("AB_UNLINKEDMAIL")
-                            .and("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", unlinkedMailId)
+                            .where("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", unlinkedMailId)
                             .cell();
 }
 result.string(res);
\ No newline at end of file
diff --git a/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js
index 42654e03c0f..f6cc9442f35 100644
--- a/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js
+++ b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js
@@ -1,3 +1,4 @@
+import("DataPrivacy_lib");
 import("system.datetime");
 import("KeywordRegistry_basic");
 import("system.util");
@@ -65,6 +66,9 @@ var activityRes = incomingMailExec.createActivity(activityLinks);
 incomingMailExec.deleteUnlinkedMail(unlinkedMailId);
 
 if (communicationsToInsert.length > 0)
+{
     db.inserts(communicationsToInsert);
+    DataPrivacyUtils.notifyNeedDataPrivacyUpdate();
+}
 
 neon.refreshAll();//this is needed for the dashboard: other elements are refreshed and display for example unlinkedMails
\ No newline at end of file
diff --git a/process/DataPrivacy_lib/process.js b/process/DataPrivacy_lib/process.js
index f1bda31c814..f70dc73377e 100644
--- a/process/DataPrivacy_lib/process.js
+++ b/process/DataPrivacy_lib/process.js
@@ -436,7 +436,8 @@ DataPrivacyUtils.collectAll = function(pContactId, pFilterCond)
  * Notify the user to update the data privacy informations.
  * It is only displayed if it is a Person.
  * 
- * @param {String} pContactId the current contactId
+ * @param {String} [pContactId] contactId that is used to vertify whether the contact is a person-contact (-> showmessage) 
+ * or not (-> do not show message), if param is null (-> show message without this check)
  * @param {Boolean} pShowMessage if false: nothing happens
  * 
  * @return {void}
@@ -449,8 +450,8 @@ DataPrivacyUtils.notifyNeedDataPrivacyUpdate = function(pContactId, pShowMessage
     var isActive = JSON.parse(project.getPreferenceValue("custom.dsgvo.active", "true"));
     if (!isActive)
         return;
- 
-    if (ContactUtils.getContactTypeByContactId(pContactId) > 1) { // if person
+    
+    if (pContactId == undefined || ContactUtils.getContactTypeByContactId(pContactId) > 1) { // if person
         // TODO: jump to DataPrivacy-Tab of contact
         question.showMessage(translate.text("Your changes may have an impact on the data privacy information (GDPR).\n Please update these."), question.INFORMATION, translate.text("Update data privacy information"));
     }
diff --git a/process/IncomingEmailExecutor_lib/process.js b/process/IncomingEmailExecutor_lib/process.js
index 57ee608b846..ce4cbed2796 100644
--- a/process/IncomingEmailExecutor_lib/process.js
+++ b/process/IncomingEmailExecutor_lib/process.js
@@ -204,7 +204,7 @@ IncomingEmailExecutor.prototype.createActivity = function(pAdditionalLinks)
 
 IncomingEmailExecutor.prototype.deleteUnlinkedMail = function (pUnlinkedMailId)
 {
-    newWhere("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", pUnlinkedMailId, undefined, undefined, this._alias)
+    newWhereIfSet("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", pUnlinkedMailId, undefined, undefined, this._alias)
         .deleteData(true, "AB_UNLINKEDMAIL");
 }
 
-- 
GitLab