• Модуль: 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;
}