From 6d4ed163470dda33abae6a6ca235a2b8e1f14ba9 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Tue, 10 Sep 2019 10:28:31 +0200
Subject: [PATCH] Serial letter fixes

---
 entity/DocumentTemplate_entity/onValidation.js         |  3 ++-
 .../SerialLetterAddRecipients_entity.aod               |  1 +
 .../serialletter_id/displayValueProcess.js             |  9 +++++++++
 entity/SerialLetter_entity/SerialLetter_entity.aod     | 10 ++++++++++
 .../documenttemplatetype_param/valueProcess.js         |  4 ++++
 .../valueProcess.js                                    |  4 ++++
 entity/SerialLetter_entity/onValidation.js             |  5 +++--
 process/DocumentTemplate_lib/process.js                |  8 ++++++--
 8 files changed, 39 insertions(+), 5 deletions(-)
 create mode 100644 entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js
 create mode 100644 entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js
 create mode 100644 entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js

diff --git a/entity/DocumentTemplate_entity/onValidation.js b/entity/DocumentTemplate_entity/onValidation.js
index e166530199..f850a1f939 100644
--- a/entity/DocumentTemplate_entity/onValidation.js
+++ b/entity/DocumentTemplate_entity/onValidation.js
@@ -1,3 +1,4 @@
+import("system.neon");
 import("system.translate");
 import("system.result");
 import("system.logging");
@@ -6,7 +7,7 @@ import("Bulkmail_lib");
 import("DocumentTemplate_lib");
 import("KeywordRegistry_basic");
 
-if (vars.exists("$context.currentTemplateType"))
+if (vars.exists("$context.currentTemplateType") && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
 {
     var kind = vars.get("$field.KIND");
     var classification = vars.get("$field.CLASSIFICATION");
diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
index 66768fb7f3..a7667d4668 100644
--- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
+++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
@@ -12,6 +12,7 @@
       <title>Serial letter</title>
       <consumer>SerialLetters</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>UID</name>
diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js
new file mode 100644
index 0000000000..5e4cef21d2
--- /dev/null
+++ b/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("Sql_lib");
+import("system.db");
+import("system.result");
+
+if (vars.get("$this.value"))
+    result.string(db.cell(SqlCondition.begin().andPrepare("SERIALLETTER.SERIALLETTERID", vars.get("$this.value")).buildSql("select TITLE from SERIALLETTER")));
+else
+    result.string("");
\ No newline at end of file
diff --git a/entity/SerialLetter_entity/SerialLetter_entity.aod b/entity/SerialLetter_entity/SerialLetter_entity.aod
index bbde4a77c8..5d7d1cba1e 100644
--- a/entity/SerialLetter_entity/SerialLetter_entity.aod
+++ b/entity/SerialLetter_entity/SerialLetter_entity.aod
@@ -62,6 +62,16 @@
         <entityName>DocumentTemplate_entity</entityName>
         <fieldName>DocumentTemplateProvider</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>DocumentTemplateType_param</name>
+          <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>DocumentTemplateTypeClassification_param</name>
+          <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityField>
       <name>TITLE</name>
diff --git a/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js b/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js
new file mode 100644
index 0000000000..94ae123081
--- /dev/null
+++ b/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("KeywordRegistry_basic");
+import("system.result");
+
+result.string($KeywordRegistry.documentTemplateType$letter());
\ No newline at end of file
diff --git a/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js b/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js
new file mode 100644
index 0000000000..d817901f1b
--- /dev/null
+++ b/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("KeywordRegistry_basic");
+import("system.result");
+
+result.string($KeywordRegistry.documentTemplateTypeCategory$serial());
\ No newline at end of file
diff --git a/entity/SerialLetter_entity/onValidation.js b/entity/SerialLetter_entity/onValidation.js
index cba89e9b13..ffb5740ed0 100644
--- a/entity/SerialLetter_entity/onValidation.js
+++ b/entity/SerialLetter_entity/onValidation.js
@@ -1,7 +1,8 @@
+import("system.neon");
 import("system.result");
 import("system.vars");
 import("DocumentTemplate_lib");
 
 [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field.DOCUMENTTEMPLATE_ID"), new FileUpload(vars.get("$field.bindata")));
-if (type != DocumentTemplate.types.ODT)
-    result.string(DocumentTemplate.serialLetterODTOnlyMessage())
\ No newline at end of file
+if (type != DocumentTemplate.types.ODT && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+    result.string(DocumentTemplate.serialLetterODTOnlyMessage());
\ No newline at end of file
diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js
index 13ac7fa681..06cad8e03c 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -308,7 +308,7 @@ DocumentTemplate.prototype.getReplacedContent = function (pReplacements, pEncode
                 return emlContent;
             }
         case DocumentTemplate.types.HTML:
-            // replaces ä, ö, ü, ... with html escape signs
+            // replaces ä, ö, ü, ... with html escape signs
             for (let i in pReplacements)
                 pReplacements[i] = text.text2html(pReplacements[i], false);
         case DocumentTemplate.types.TXT:
@@ -397,6 +397,10 @@ DocumentTemplate.prototype.getSerialLetterByContactIds = function (pContactIds,
 {
     if (this.type == DocumentTemplate.types.ODT)
     {
+        let replacements = TemplateHelper._getReplacementsByContactIds(this, pContactIds);
+        let replaceArray = [];
+        for (let i = 0, l = pContactIds.length; i < l; i++)
+            replaceArray.push(replacements[pContactIds[i]]);
         return TemplateHelper._getReplacedODT(this, replaceArray, pTableData);
     }
     
@@ -849,4 +853,4 @@ DocumentTemplateUtils.getContentType = function (pTemplateId, pFileUpload)
     }
     
     return type;
-}
+}
\ No newline at end of file
-- 
GitLab