mail merge only with address

This commit is contained in:
yuri
2018-06-18 16:13:36 +03:00
parent 7dd0fe07ac
commit 0fa8b3da0b
5 changed files with 41 additions and 3 deletions
@@ -23,7 +23,8 @@
"contactsTemplate": "Contacts Template",
"leadsTemplate": "Leads Template",
"accountsTemplate": "Accounts Template",
"usersTemplate": "Users Template"
"usersTemplate": "Users Template",
"mailMergeOnlyWithAddress": "Skip records w/o filled address"
},
"links": {
"targetLists": "Target Lists",
@@ -14,7 +14,7 @@
"name": "mailMerge",
"rows":[
[{"name":"contactsTemplate"}, {"name":"leadsTemplate"}],
[{"name":"accountsTemplate"}, {"name":"usersTemplate"}]
[{"name":"accountsTemplate"}, {"name":"mailMergeOnlyWithAddress"}]
]
}
]
@@ -153,6 +153,17 @@
}
]
}
},
"mailMergeOnlyWithAddress": {
"visible": {
"conditionGroup": [
{
"type": "equals",
"attribute": "type",
"value": "Mail"
}
]
}
}
},
"panels": {
@@ -162,6 +162,10 @@
"type": "link",
"view": "crm:views/campaign/fields/template",
"targetEntityType": "User"
},
"mailMergeOnlyWithAddress": {
"type": "bool",
"default": true
}
},
"links": {
@@ -43,6 +43,13 @@ class Campaign extends \Espo\Services\Record
$this->addDependency('container');
}
protected $entityTypeAddressFieldListMap = [
'Account' => ['billingAddress', 'shippingAddress'],
'Contact' => ['address'],
'Lead' => ['address'],
'User' => []
];
public function loadAdditionalFields(Entity $entity)
{
parent::loadAdditionalFields($entity);
@@ -348,6 +355,8 @@ class Campaign extends \Espo\Services\Record
}
}
$addressFieldList = $this->entityTypeAddressFieldListMap[$targetEntityType];
$targetListCollection = $campaign->get('targetLists');
foreach ($targetListCollection as $targetList) {
if (!$campaign->get($link . 'TemplateId')) continue;
@@ -361,8 +370,21 @@ class Campaign extends \Espo\Services\Record
if (!empty($metTargetHash[$hashId])) {
continue;
}
$targetEntityList[] = $e;
$metTargetHash[$hashId] = true;
if ($campaign->get('mailMergeOnlyWithAddress')) {
if (empty($addressFieldList)) continue;
$hasAddress = false;
foreach ($addressFieldList as $addressField) {
if ($e->get($addressField . 'Street') || $e->get($addressField . 'PostalCode')) {
$hasAddress = true;
break;
}
}
if (!$hasAddress) continue;
}
$targetEntityList[] = $e;
}
}