- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
- Класс: BitrixImOpenLinesCrm
- Вызов: Crm::updateEntity
public function updateEntity($type, $id): bool
{
$result = false;
$updateFields = [];
$updateFm = [];
$fields = $this->getFields();
$entity = CrmCommon::get($type, $id, true);
if (!empty($entity))
{
$phones = $fields->getPhones();
$emails = $fields->getEmails();
$code = $this->getCode();
$codeImol = $this->getCodeImol();
$userId = $this->getUserId();
$personName = $fields->getPersonName();
$personLastName = $fields->getPersonLastName();
$personSecondName = $fields->getPersonSecondName();
if (
!empty($fields->getPersonEmail())
&& !ToolsEmail::isInArray($emails, $fields->getPersonEmail())
)
{
$emails[] = $fields->getPersonEmail();
}
if (
!empty($fields->getPersonPhone())
&& !ToolsPhone::isInArray($phones, $fields->getPersonPhone())
)
{
$phones[] = $fields->getPersonPhone();
}
$personWebsite = $fields->getPersonWebsite();
if (
$type !== self::ENTITY_DEAL
&& !empty($code)
&& !empty($codeImol)
)
{
$communicationType = CrmCommon::getCommunicationType($code);
if (
empty($entity['FM']['IM'][$communicationType])
|| !in_array($codeImol, $entity['FM']['IM'][$communicationType])
)
{
$updateFm['IM'][$communicationType][] = $codeImol;
}
}
if (
!empty($userId)
&& $type !== self::ENTITY_DEAL
)
{
if (
empty($entity['FM']['LINK']['USER'])
|| !in_array($userId, $entity['FM']['LINK']['USER'], true)
)
{
$updateFm['LINK']['USER'][] = $userId;
}
}
if (
!empty($phones)
&& $type !== self::ENTITY_DEAL
)
{
foreach ($phones as $phone)
{
if (empty($entity['FM']['PHONE']['WORK']) || !ToolsPhone::isInArray($entity['FM']['PHONE']['WORK'], $phone))
{
$updateFm['PHONE']['WORK'][] = $phone;
}
}
}
if (
!empty($emails)
&& $type !== self::ENTITY_DEAL
)
{
foreach ($emails as $email)
{
if (empty($entity['FM']['EMAIL']['WORK']) || !ToolsEmail::isInArray($entity['FM']['EMAIL']['WORK'], $email))
{
$updateFm['EMAIL']['WORK'][] = $email;
}
}
}
if (!empty($personName))
{
if (
$type !== self::ENTITY_DEAL
&& $type !== self::ENTITY_COMPANY
)
{
if (
(
empty($entity['NAME'])
|| $entity['NAME'] === LiveChat::getDefaultGuestName()
)
&& LiveChat::getDefaultGuestName() !== $personName
)
{
$updateFields['NAME'] = $personName;
}
}
}
if (!empty($personLastName))
{
if (
$type !== self::ENTITY_DEAL
&& $type !== self::ENTITY_COMPANY
)
{
if (
(
empty($entity['LAST_NAME'])
|| $entity['LAST_NAME'] === LiveChat::getDefaultGuestName()
)
&& LiveChat::getDefaultGuestName() !== $personLastName
)
{
$updateFields['LAST_NAME'] = $personLastName;
}
}
}
if (!empty($personSecondName))
{
if (
$type !== self::ENTITY_DEAL
&& $type !== self::ENTITY_COMPANY
)
{
if (
(
empty($entity['SECOND_NAME'])
|| $entity['SECOND_NAME'] === LiveChat::getDefaultGuestName()
)
&& LiveChat::getDefaultGuestName() !== $personSecondName
)
{
$updateFields['SECOND_NAME'] = $personSecondName;
}
}
}
if (!empty($personWebsite))
{
if (mb_strlen($personWebsite) > 250 || $type === self::ENTITY_DEAL)
{
if ($type !== self::ENTITY_COMPANY)
{
if (empty($entity['SOURCE_DESCRIPTION']))
{
$updateFields['SOURCE_DESCRIPTION'] = $personWebsite;
}
}
}
else
{
if (
empty($entity['FM']['WEB']['HOME'])
|| !in_array($personWebsite, $entity['FM']['WEB']['HOME'])
)
{
$updateFm['WEB']['HOME'][] = $personWebsite;
}
}
}
if (!empty($updateFm))
{
$updateFields['FM'] = CrmCommon::formatMultifieldFields($updateFm);
}
if (
$type === self::ENTITY_LEAD
&& LeadSettings::getCurrent()->isAutoGenRcEnabled()
)
{
$facility = $this->getEntityManageFacility();
if (!empty($facility->getSelector()->getCompanyId()))
{
$updateFields['COMPANY_ID'] = $facility->getSelector()->getCompanyId();
}
if (!empty($facility->getSelector()->getContactId()))
{
$updateFields['CONTACT_ID'] = $facility->getSelector()->getContactId();
}
}
if (!empty($updateFields))
{
$result = CrmCommon::update($type, $id, $updateFields);
}
}
return $result;
}