merge
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
************************************************************************/
|
||||
|
||||
namespace Espo\Entities;
|
||||
|
||||
@@ -33,7 +33,6 @@ class EmailAddress extends \Espo\Core\ORM\Entity
|
||||
throw new Error("Not valid email address '{$value}'");
|
||||
}
|
||||
$this->valuesContainer['name'] = $value;
|
||||
$this->set('lower', strtolower($value));
|
||||
}
|
||||
|
||||
$this->set('lower', strtolower($value));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Aktiv",
|
||||
"actual": "Tatsächlich",
|
||||
"converted": "Umgewandelt"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Active",
|
||||
"actual": "Actual",
|
||||
"converted": "Converted"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
}
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Actif"
|
||||
"active": "Actif",
|
||||
"actual": "En cours"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Actief",
|
||||
"converted": "Geconverteerd"
|
||||
"converted": "Geconverteerd",
|
||||
"actual": "Werkelijke"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
}
|
||||
},
|
||||
"presetFilters": {
|
||||
"actual": "Atual",
|
||||
"active": "Ativo"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
}
|
||||
},
|
||||
"presetFilters": {
|
||||
"active": "Активный"
|
||||
"actual": "Актуальные",
|
||||
"active": "Активные"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
"Complete": "Завершить"
|
||||
},
|
||||
"presetFilters": {
|
||||
"actual": "Actual",
|
||||
"completed": "Завершена",
|
||||
"actual": "Актуальные",
|
||||
"completed": "Завершенные",
|
||||
"todays": "На сегодня",
|
||||
"overdue": "Просроченные"
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"filterList": [
|
||||
{
|
||||
"name":"active"
|
||||
"name":"actual"
|
||||
},
|
||||
{
|
||||
"name":"converted",
|
||||
|
||||
@@ -31,6 +31,13 @@ class Lead extends \Espo\Core\SelectManagers\Base
|
||||
);
|
||||
}
|
||||
|
||||
protected function filterActual(&$result)
|
||||
{
|
||||
$result['whereClause'][] = array(
|
||||
'status!=' => ['Converted', 'Recycled', 'Dead']
|
||||
);
|
||||
}
|
||||
|
||||
protected function filterConverted(&$result)
|
||||
{
|
||||
$result['whereClause'][] = array(
|
||||
|
||||
@@ -81,19 +81,30 @@ class Meeting extends \Espo\Services\Record
|
||||
{
|
||||
$invitationManager = $this->getInvitationManager();
|
||||
|
||||
$emailHash = array();
|
||||
|
||||
$users = $entity->get('users');
|
||||
foreach ($users as $user) {
|
||||
$invitationManager->sendInvitation($entity, $user, 'users');
|
||||
if ($user->get('emailAddress') && !array_key_exists($user->get('emailAddress'), $emailHash)) {
|
||||
$invitationManager->sendInvitation($entity, $user, 'users');
|
||||
$emailHash[$user->get('emailAddress')] = true;
|
||||
}
|
||||
}
|
||||
|
||||
$contacts = $entity->get('contacts');
|
||||
foreach ($contacts as $contact) {
|
||||
$invitationManager->sendInvitation($entity, $contact, 'contacts');
|
||||
if ($contact->get('emailAddress') && !array_key_exists($contact->get('emailAddress'), $emailHash)) {
|
||||
$invitationManager->sendInvitation($entity, $contact, 'contacts');
|
||||
$emailHash[$user->get('emailAddress')] = true;
|
||||
}
|
||||
}
|
||||
|
||||
$leads = $entity->get('leads');
|
||||
foreach ($leads as $lead) {
|
||||
$invitationManager->sendInvitation($entity, $lead, 'leads');
|
||||
if ($lead->get('emailAddress') && !array_key_exists($lead->get('emailAddress'), $emailHash)) {
|
||||
$invitationManager->sendInvitation($entity, $lead, 'leads');
|
||||
$emailHash[$user->get('emailAddress')] = true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -65,7 +65,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
$pdo = $this->getEntityManager()->getPDO();
|
||||
$sql = "
|
||||
SELECT email_address.name, email_address.invalid, email_address.opt_out AS optOut, entity_email_address.primary
|
||||
SELECT email_address.name, email_address.lower, email_address.invalid, email_address.opt_out AS optOut, entity_email_address.primary
|
||||
FROM entity_email_address
|
||||
JOIN email_address ON email_address.id = entity_email_address.email_address_id AND email_address.deleted = 0
|
||||
WHERE
|
||||
@@ -80,6 +80,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
foreach ($rows as $row) {
|
||||
$obj = new \StdClass();
|
||||
$obj->emailAddress = $row['name'];
|
||||
$obj->lower = $row['lower'];
|
||||
$obj->primary = ($row['primary'] == '1') ? true : false;
|
||||
$obj->optOut = ($row['optOut'] == '1') ? true : false;
|
||||
$obj->invalid = ($row['invalid'] == '1') ? true : false;
|
||||
@@ -180,22 +181,25 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
foreach ($emailAddressData as $row) {
|
||||
$key = $row->emailAddress;
|
||||
if (!empty($key)) {
|
||||
$key = strtolower($key);
|
||||
$hash[$key] = array(
|
||||
'primary' => $row->primary ? true : false,
|
||||
'optOut' => $row->optOut ? true : false,
|
||||
'invalid' => $row->invalid ? true : false,
|
||||
'emailAddress' => $row->emailAddress
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$hashPrev = array();
|
||||
foreach ($previousEmailAddressData as $row) {
|
||||
$key = $row->emailAddress;
|
||||
$key = $row->lower;
|
||||
if (!empty($key)) {
|
||||
$hashPrev[$key] = array(
|
||||
'primary' => $row->primary ? true : false,
|
||||
'optOut' => $row->optOut ? true : false,
|
||||
'invalid' => $row->invalid ? true : false,
|
||||
'emailAddress' => $row->emailAddress
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -216,7 +220,10 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
if (array_key_exists($key, $hashPrev)) {
|
||||
$new = false;
|
||||
$changed = $hash[$key]['optOut'] != $hashPrev[$key]['optOut'] || $hash[$key]['invalid'] != $hashPrev[$key]['invalid'];
|
||||
$changed =
|
||||
$hash[$key]['optOut'] != $hashPrev[$key]['optOut'] ||
|
||||
$hash[$key]['invalid'] != $hashPrev[$key]['invalid'] ||
|
||||
$hash[$key]['emailAddress'] !== $hashPrev[$key]['emailAddress'];
|
||||
if ($hash[$key]['primary']) {
|
||||
if ($hash[$key]['primary'] == $hashPrev[$key]['primary']) {
|
||||
$primary = false;
|
||||
@@ -259,6 +266,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
$emailAddress->set(array(
|
||||
'optOut' => $hash[$address]['optOut'],
|
||||
'invalid' => $hash[$address]['invalid'],
|
||||
'name' => $hash[$address]['emailAddress']
|
||||
));
|
||||
$this->save($emailAddress);
|
||||
}
|
||||
@@ -270,16 +278,21 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
$emailAddress = $this->get();
|
||||
|
||||
$emailAddress->set(array(
|
||||
'name' => $address,
|
||||
'name' => $hash[$address]['emailAddress'],
|
||||
'optOut' => $hash[$address]['optOut'],
|
||||
'invalid' => $hash[$address]['invalid'],
|
||||
));
|
||||
$this->save($emailAddress);
|
||||
} else {
|
||||
if ($emailAddress->get('optOut') != $hash[$address]['optOut'] || $emailAddress->get('invalid') != $hash[$address]['invalid']) {
|
||||
if (
|
||||
$emailAddress->get('optOut') != $hash[$address]['optOut'] ||
|
||||
$emailAddress->get('invalid') != $hash[$address]['invalid'] ||
|
||||
$emailAddress->get('emailAddress') != $hash[$address]['emailAddress']
|
||||
) {
|
||||
$emailAddress->set(array(
|
||||
'optOut' => $hash[$address]['optOut'],
|
||||
'invalid' => $hash[$address]['invalid'],
|
||||
'name' => $hash[$address]['emailAddress']
|
||||
));
|
||||
$this->save($emailAddress);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ class EmailTemplate extends Record
|
||||
{
|
||||
$this->dependencies[] = 'fileManager';
|
||||
$this->dependencies[] = 'dateTime';
|
||||
$this->dependencies[] = 'language';
|
||||
}
|
||||
|
||||
protected function getFileManager()
|
||||
@@ -48,6 +49,11 @@ class EmailTemplate extends Record
|
||||
return $this->injections['dateTime'];
|
||||
}
|
||||
|
||||
protected function getLanguage()
|
||||
{
|
||||
return $this->getInjection('language');
|
||||
}
|
||||
|
||||
public function parseTemplate(Entity $emailTemplate, array $params = array(), $copyAttachments = false)
|
||||
{
|
||||
$entityHash = array();
|
||||
@@ -160,10 +166,16 @@ class EmailTemplate extends Record
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($entity->fields[$field]['type'] == 'date') {
|
||||
$value = $this->getDateTime()->convertSystemDateToGlobal($value);
|
||||
} else if ($entity->fields[$field]['type'] == 'datetime') {
|
||||
$value = $this->getDateTime()->convertSystemDateTimeToGlobal($value);
|
||||
$fieldType = $this->getMetadata()->get('entityDefs.' . $entity->getEntityType() .'.fields.' . $field . '.type');
|
||||
|
||||
if ($fieldType === 'enum') {
|
||||
$value = $this->getLanguage()->translateOption($value, $field, $entity->getEntityType());
|
||||
} else {
|
||||
if ($entity->fields[$field]['type'] == 'date') {
|
||||
$value = $this->getDateTime()->convertSystemDateToGlobal($value);
|
||||
} else if ($entity->fields[$field]['type'] == 'datetime') {
|
||||
$value = $this->getDateTime()->convertSystemDateTimeToGlobal($value);
|
||||
}
|
||||
}
|
||||
$text = str_replace('{' . $type . '.' . $field . '}', $value, $text);
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ class Import extends \Espo\Services\Record
|
||||
return true;
|
||||
}
|
||||
|
||||
public function import($scope, array $fields, $attachmentId, array $params = array())
|
||||
public function import($scope, array $importFieldList, $attachmentId, array $params = array())
|
||||
{
|
||||
$delimiter = ',';
|
||||
if (!empty($params['fieldDelimiter'])) {
|
||||
@@ -297,7 +297,7 @@ class Import extends \Espo\Services\Record
|
||||
if (count($arr) == 1 && empty($arr[0])) {
|
||||
continue;
|
||||
}
|
||||
$r = $this->importRow($scope, $fields, $arr, $params);
|
||||
$r = $this->importRow($scope, $importFieldList, $arr, $params);
|
||||
if (empty($r)) {
|
||||
continue;
|
||||
}
|
||||
@@ -334,7 +334,7 @@ class Import extends \Espo\Services\Record
|
||||
);
|
||||
}
|
||||
|
||||
public function importRow($scope, array $fields, array $row, array $params = array())
|
||||
public function importRow($scope, array $importFieldList, array $row, array $params = array())
|
||||
{
|
||||
$id = null;
|
||||
$action = 'create';
|
||||
@@ -342,15 +342,19 @@ class Import extends \Espo\Services\Record
|
||||
$action = $params['action'];
|
||||
}
|
||||
|
||||
if (empty($importFieldList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (in_array($action, ['createAndUpdate', 'update'])) {
|
||||
if (!empty($params['updateBy']) && is_array($params['updateBy'])) {
|
||||
$updateByFieldList = [];
|
||||
$whereClause = array();
|
||||
foreach ($params['updateBy'] as $i) {
|
||||
if (array_key_exists($i, $fields)) {
|
||||
$updateByFieldList[] = $fields[$i];
|
||||
$whereClause[$fields[$i]] = $row[$i];
|
||||
if (array_key_exists($i, $importFieldList)) {
|
||||
$updateByFieldList[] = $importFieldList[$i];
|
||||
$whereClause[$importFieldList[$i]] = $row[$i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -399,7 +403,7 @@ class Import extends \Espo\Services\Record
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($fields as $i => $field) {
|
||||
foreach ($importFieldList as $i => $field) {
|
||||
if (!empty($field)) {
|
||||
$value = $row[$i];
|
||||
if ($field == 'id') {
|
||||
@@ -457,7 +461,7 @@ class Import extends \Espo\Services\Record
|
||||
$isPrimary = false;
|
||||
if (empty($phoneNumberData)) {
|
||||
$phoneNumberData = [];
|
||||
if (!in_array('phoneNumber', $fields)) {
|
||||
if (!in_array('phoneNumber', $importFieldList)) {
|
||||
$isPrimary = true;
|
||||
}
|
||||
}
|
||||
@@ -475,7 +479,7 @@ class Import extends \Espo\Services\Record
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($fields as $i => $field) {
|
||||
foreach ($importFieldList as $i => $field) {
|
||||
if (array_key_exists($field, $fieldsDefs) && $fieldsDefs[$field]['type'] == Entity::FOREIGN) {
|
||||
if ($entity->has($field)) {
|
||||
$relation = $fieldsDefs[$field]['relation'];
|
||||
|
||||
@@ -56,7 +56,7 @@ Espo.define('Crm:Views.Dashlets.Leads', 'Views.Dashlets.Abstract.RecordList', fu
|
||||
bool: {
|
||||
onlyMy: true,
|
||||
},
|
||||
primary: 'active'
|
||||
primary: 'actual'
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user