diff --git a/entity/Activity_entity/recordcontainers/db/onDBInsert.js b/entity/Activity_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..3bd6b8b3b9c844e2632f11a231b283d2a46b461a --- /dev/null +++ b/entity/Activity_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,10 @@ +import("ActivityTask_lib"); +import("system.vars"); +import("system.db"); + +var documents = vars.exists("$param.PresetDocuments_param") && vars.getString("$param.PresetDocuments_param"); +if (documents) +{ + documents = JSON.parse(documents); + ActivityUtils.insertDocuments(vars.get("$field.ACTIVITYID"), documents); +} \ No newline at end of file diff --git a/entity/Letter_entity/recordcontainers/jdito/onInsert.js b/entity/Letter_entity/recordcontainers/jdito/onInsert.js index 35bc3b14d02877310488934385dc9a5e7472ade0..c2f5bcbd5112cb76c57d5be90df26a6f3d947931 100644 --- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Letter_entity/recordcontainers/jdito/onInsert.js @@ -5,10 +5,11 @@ import("DocumentTemplate_lib"); var template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENT_TEMPLATE")); var contactId = vars.get("$param.ContactId_param"); -neon.download(template.getReplacedContentByContactId(contactId), template.filename); +var content = template.getReplacedContentByContactId(contactId); +neon.download(content, template.filename); var links = []; if (contactId) links.push(["Person", contactId]); //TODO: dynamic -ActivityUtils.createNewActivity(null, links); +ActivityUtils.createNewActivity(null, links, null, null, [[template.filename, content, false]]); diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 06a70c61af78cc6fc4140ffba0454a475869c4e2..fd6bc504905131ecefc5a5d4b0367ba1d425a5dd 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -34,10 +34,6 @@ <key>Anonymization</key> <value>Anonymisierung</value> </entry> - <entry> - <key>Members</key> - <value>Mitglieder</value> - </entry> <entry> <key>The following data has been anonymised: %0</key> <value>Die folgenden Daten wurden anonymisiert: %0</value> @@ -149,10 +145,6 @@ <key>Disclosure Report</key> <value>Auskunftsbericht</value> </entry> - <entry> - <key>Forecasts</key> - <value>Forecasts</value> - </entry> <entry> <key>Abscences</key> <value>Abszenzenen</value> @@ -568,10 +560,6 @@ <key>${COUNT_PREPOSITION_MULTIPLE}</key> <value>mal</value> </entry> - <entry> - <key>Data privacy entries</key> - <value>Datenschutzeinträge</value> - </entry> <entry> <key>Email must be unique!</key> <value>Die E-Mail-Adresse muss eindeutig sein!</value> @@ -680,10 +668,6 @@ <key>The person is already associated with another employee!</key> <value>Die Person ist bereits mit einem anderen Mitarbeiter verknüpft!</value> </entry> - <entry> - <key>Appointments</key> - <value>Termine</value> - </entry> <entry> <key>Time expenses</key> <value>Aufwand</value> @@ -1526,10 +1510,6 @@ <key>Remark</key> <value>Anmerkung</value> </entry> - <entry> - <key>Cost entries</key> - <value>Kosteneinträge</value> - </entry> <entry> <key>Competition</key> <value>Mitbewerber</value> @@ -2050,10 +2030,6 @@ <key>{$TASK_PRIORITY_LOW}</key> <value>niedrig</value> </entry> - <entry> - <key>Duplicatescans</key> - <value>Dublettenermittlungen</value> - </entry> <entry> <key>Nur Eigene anzeigen</key> </entry> @@ -2273,10 +2249,6 @@ <key>Product_functionality</key> <value>Produkt_Funktionalität</value> </entry> - <entry> - <key>Timetracking entries</key> - <value>Zeiteinträge</value> - </entry> <entry> <key>New appointment</key> <value>Neuer Termin</value> @@ -5025,7 +4997,6 @@ </entry> <entry> <key>Salutations</key> - <value>Anreden</value> </entry> <entry> <key>Paymentterm</key> @@ -5133,6 +5104,9 @@ <entry> <key>Bug Ticket</key> </entry> + <entry> + <key>Support ticket</key> + </entry> <entry> <key>New Bugticket</key> <value>Neues Bugticket</value> @@ -5469,10 +5443,6 @@ <key>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</key> <value>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</value> </entry> - <entry> - <key>Support Tickets</key> - <value>Supporttickets</value> - </entry> <entry> <key>Handcraft</key> <value>Handwerk</value> @@ -5521,10 +5491,6 @@ <key>Quality problem customer</key> <value>Qualitätsproblem Kunde</value> </entry> - <entry> - <key>Relation types</key> - <value>Beziehungstypen</value> - </entry> <entry> <key>Wine</key> <value>Wein</value> @@ -6005,7 +5971,7 @@ </entry> <entry> <key>Support Ticket</key> - <value>Supportticket</value> + <value>Support Ticket</value> </entry> <entry> <key>Rented car</key> @@ -6348,7 +6314,31 @@ <key>Occurrence</key> </entry> <entry> - <key>Support ticket</key> + <key>Forecasts</key> + </entry> + <entry> + <key>Relation types</key> + </entry> + <entry> + <key>Data privacy entries</key> + </entry> + <entry> + <key>Timetracking entries</key> + </entry> + <entry> + <key>Duplicatescans</key> + </entry> + <entry> + <key>Appointments</key> + </entry> + <entry> + <key>Support Tickets</key> + </entry> + <entry> + <key>Members</key> + </entry> + <entry> + <key>Cost entries</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js index 5bed96cdc9c355cb7b732e8ddc4ce2ff80a808ae..9f49e54e7b7539bfc8eef5c87b6a0725937caa06 100644 --- a/process/Bulkmail_lib/process.js +++ b/process/Bulkmail_lib/process.js @@ -8,6 +8,7 @@ import("KeywordRegistry_basic"); import("Sql_lib"); import("system.db"); import("DocumentTemplate_lib"); +import("Communication_lib"); import("Email_lib"); import("system.process"); import("system.notification"); @@ -46,21 +47,23 @@ BulkMailUtils.sendBulkMailOnServer = function (pBulkMailId, pUser) */ BulkMailUtils.sendBulkMail = function (pBulkMailId) { - //TODO: Mailbridge, Werbesperre beachten - var [templateId, subject, emailSender] = db.array(db.ROW, SqlCondition.begin() .andPrepare("BULKMAIL.BULKMAILID", pBulkMailId) .buildSql("select DOCUMENTTEMPLATE_ID, SUBJECT, SENDER from BULKMAIL", "1=2") ); var template = BulkMailUtils.getBulkMailTemplate(pBulkMailId, templateId); - var recipientData = db.table(SqlCondition.begin() - .andPrepare("BULKMAILRECIPIENT.BULKMAIL_ID", pBulkMailId) - .andPrepare("BULKMAILRECIPIENT.STATUS", $KeywordRegistry.bulkMailRecipientStatus$sent(), "# != ?") - .andSqlCondition(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail(), true)) - .buildSql("select BULKMAILRECIPIENTID, BULKMAILRECIPIENT.CONTACT_ID, '' from BULKMAILRECIPIENT \n\ - join CONTACT on BULKMAILRECIPIENT.CONTACT_ID = CONTACT.CONTACTID", "1=2") - ); + var sql = SqlBuilder.begin() + .select("BULKMAILRECIPIENTID, BULKMAILRECIPIENT.CONTACT_ID, (" + CommUtil.getStandardSubSqlMail() + ")") + .from("BULKMAILRECIPIENT") + .join("CONTACT", "BULKMAILRECIPIENT.CONTACT_ID = CONTACT.CONTACTID") + .where(SqlCondition.begin() + .andPrepare("BULKMAILRECIPIENT.BULKMAIL_ID", pBulkMailId) + .andPrepare("BULKMAILRECIPIENT.STATUS", $KeywordRegistry.bulkMailRecipientStatus$sent(), "# != ?") + .andSqlCondition(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail(), true))) + .build(); + + var recipientData = db.table(sql); var contactIds = recipientData.map(function (e) {return e[1];}); var successIds = []; var failedIds = []; @@ -77,7 +80,7 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId) let email = mails[contactId]; if (email !== undefined && recipientData[i][2]) { - email.toRecipients = [recipientData[i][2]]; //TODO: email address missing + email.toRecipients = [recipientData[i][2]]; email.sender = emailSender; email.subject = subjects[contactId]; diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js index 85ee436af9830e224fc709b0e1fb974725ede06f..eeb0b8a3124b77105f62e7808fd46f93653d716a 100644 --- a/process/Email_lib/process.js +++ b/process/Email_lib/process.js @@ -250,6 +250,7 @@ Email.prototype.send = function () } catch (ex) { + logging.log(ex); return false; } } \ No newline at end of file