Skip to content
Snippets Groups Projects
Commit 802df262 authored by Martin Groppe's avatar Martin Groppe
Browse files

Merge branch 'marketing_2000862_addRecipientsFilter' into '2021.2.1'

Marketing 2000862 add recipients filter

See merge request xrm/basic!1422
parents d8409ae8 ba344228
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,9 @@ var ids = Utils.parseJSON(vars.get("$param.Ids_param"));
var context = vars.getString("$param.ObjectType_param");
if (Utils.isString(filter))
filter = JSON.parse(filter);
{
filter = JSON.parse(filter);
}
var validRecipients = [];
if (bulkMailId)
......
......@@ -91,7 +91,7 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser)
useTemplateAttachments = Utils.toBoolean(useTemplateAttachments);
var template = BulkMailUtils.getBulkMailTemplate(pBulkMailId, templateId, true, false, useTemplateAttachments, mosaicoTemplateId);
var template = BulkMailUtils.getBulkMailTemplate(pBulkMailId, templateId, true, useTemplateAttachments, null, mosaicoTemplateId);
var recipientData;
var testRecipientData;
......@@ -280,7 +280,7 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser)
var updates = [];
updates = updates.concat(successIds.map(function (sucessId)
updates = updates.concat(successIds.map(function (successId)
{
return newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",successId)
.buildUpdateStatement({
......@@ -461,24 +461,27 @@ BulkMailUtils.addRecipients = function (pBulkMailId, pContactIds)
{
if (pContactIds.length > 0)
{
var contactData = newSelect(["CONTACTID", "(" + CommUtil.getStandardSubSqlMail(newWhere("COMMUNICATION.OBJECT_ROWID = CONTACTID").and("COMMUNICATION.OBJECT_TYPE", "Contact")) + ")"])
.from("CONTACT")
.where("CONTACT.CONTACTID", pContactIds, SqlBuilder.IN())
.table();
var sqlBuilder = new SqlBuilder();
var inserts = [];
var contactData;
var inserts = contactData.map(function([contactId, standardMail])
{
return sqlBuilder.buildInsertStatement({
"BULKMAIL_ID": pBulkMailId,
"CONTACT_ID": contactId,
"STATUS": $KeywordRegistry.bulkMailRecipientStatus$added(),
"IS_TEST_RECIPIENT" : 0,
"EMAIL_ADDRESS": standardMail
}, "BULKMAILRECIPIENT", "BULKMAILRECIPIENTID");
});
while (pContactIds.length > 0){
var ContactIdsChunk = pContactIds.splice(0, 1000);
contactData = newSelect(["CONTACTID", "(" + CommUtil.getStandardSubSqlMail(newWhere("COMMUNICATION.OBJECT_ROWID = CONTACTID").and("COMMUNICATION.OBJECT_TYPE", "Contact")) + ")"])
.from("CONTACT")
.where("CONTACT.CONTACTID", ContactIdsChunk, SqlBuilder.IN())
.table();
inserts = inserts.concat(contactData.map(function([contactId, standardMail])
{
return sqlBuilder.buildInsertStatement({
"BULKMAIL_ID": pBulkMailId,
"CONTACT_ID": contactId,
"STATUS": $KeywordRegistry.bulkMailRecipientStatus$added(),
"IS_TEST_RECIPIENT" : 0,
"EMAIL_ADDRESS": standardMail
}, "BULKMAILRECIPIENT", "BULKMAILRECIPIENTID");
}));
}
db.inserts(inserts);
}
}
......@@ -618,6 +621,8 @@ BulkMailUtils.filterNewRecipientsByCondition = function (pBulkMailId, pCondition
{
var condition = newSelect("CONTACTID")
.from("CONTACT")
.join("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
.join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
.whereIfSet(pCondition)
// only add contacts that aren't already recipients
.and(null, newSelect("BULKMAILRECIPIENTID")
......@@ -633,10 +638,9 @@ BulkMailUtils.filterNewRecipientsByCondition = function (pBulkMailId, pCondition
.buildCondition());
if (pContext == "Person")
{
condition.and("CONTACT.PERSON_ID is not null");
condition.join("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID");
}
if (pContext == "Organistaion")
if (pContext == "Organisation")
{
condition.and("CONTACT.PERSON_ID is null");
}
......@@ -651,7 +655,6 @@ BulkMailUtils.filterNewRecipientsByCondition = function (pBulkMailId, pCondition
condition.join("CAMPAIGNPARTICIPANT","CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID")
.join("CAMPAIGNSTEP","CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID");
}
return condition.arrayColumn();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment