- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_crm_helper.php
- Класс: CVoxImplantCrmHelper
- Вызов: CVoxImplantCrmHelper::getLeadFields
static function getLeadFields($params)
{
static::$lastError = '';
if (!CModule::IncludeModule('crm'))
{
static::$lastError = 'CRM is not installed';
return false;
}
if ($params['PHONE_NUMBER'] == '')
{
static::$lastError = 'PHONE_NUMBER is empty';
return false;
}
if (intval($params['USER_ID']) <= 0)
{
static::$lastError = 'USER_ID is empty';
return false;
}
$normalizedNumber = CVoxImplantPhone::Normalize($params['PHONE_NUMBER']);
$result = VIPhoneTable::getList([
'select' => ['USER_ID', 'PHONE_MNEMONIC'],
'filter' => [
[
'LOGIC' => 'OR',
['=PHONE_NUMBER' => $params['PHONE_NUMBER']],
['=PHONE_NUMBER' => $normalizedNumber],
],
'=USER.ACTIVE' => 'Y',
'=USER.IS_REAL_USER' => 'Y'
]
]);
if ($row = $result->fetch())
{
static::$lastError = 'Lead creation is disabled for local users';
return false;
}
switch ($params['INCOMING'])
{
case CVoxImplantMain::CALL_INCOMING:
case CVoxImplantMain::CALL_INCOMING_REDIRECT:
$title = GetMessage('VI_CRM_CALL_INCOMING');
break;
case CVoxImplantMain::CALL_CALLBACK:
$title = GetMessage('VI_CRM_CALL_CALLBACK');
break;
default:
$title = GetMessage('VI_CRM_CALL_OUTGOING');
break;
}
$arFields = [
'TITLE' => Parser::getInstance()->parse($params['PHONE_NUMBER'] ?? '')->format() . ' - ' . $title,
'PHONE_WORK' => $params['PHONE_NUMBER'],
];
$statuses = CCrmStatus::GetStatusList("SOURCE");
if (isset($statuses[$params['CRM_SOURCE']]))
{
$arFields['SOURCE_ID'] = $params['CRM_SOURCE'];
}
else if (isset($statuses['CALL']))
{
$arFields['SOURCE_ID'] = 'CALL';
}
else if (isset($statuses['OTHER']))
{
$arFields['SOURCE_ID'] = 'OTHER';
}
$portalNumbers = CVoxImplantConfig::GetLinesEx([
'showRestApps' => true,
'showInboundOnly' => true
]);
$portalNumber = isset($portalNumbers[$params['SEARCH_ID']])? $portalNumbers[$params['SEARCH_ID']]['SHORT_NAME']: '';
$externalLine = (int)$params['EXTERNAL_LINE_ID'] ? VIModelExternalLineTable::getById($params['EXTERNAL_LINE_ID'])->fetchObject() : null;
if($externalLine)
{
$arFields['SOURCE_DESCRIPTION'] = GetMessage('VI_CRM_CALL_TO_PORTAL_NUMBER', array('#PORTAL_NUMBER#' => $externalLine->getNormalizedNumber()));
}
else if ($portalNumber)
{
$arFields['SOURCE_DESCRIPTION'] = GetMessage('VI_CRM_CALL_TO_PORTAL_NUMBER', array('#PORTAL_NUMBER#' => $portalNumber));
}
$arFields['FM'] = CCrmFieldMulti::PrepareFields($arFields);
return $arFields;
}