• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
  • Класс: BitrixImOpenLinesCrm
  • Вызов: Crm::getSourceId
public function getSourceId(): Result
{
	$result = new Result;

	$session = $this->getFields()->getSession();

	if (!empty($session))
	{
		$statuses = CCrmStatus::GetStatusList("SOURCE");

		if (
			$session->getConfig('CRM_SOURCE') == Config::CRM_SOURCE_AUTO_CREATE ||
			!isset($statuses[$session->getConfig('CRM_SOURCE')])
		)
		{
			$crmSource = $session->getData('CONFIG_ID') . '|' .
				CrmCommon::getCommunicationType(
					$session->getData('USER_CODE'), true
				);
			$crmSource = mb_substr($crmSource, 0, 50);

			if (!isset($statuses[$crmSource]))
			{
				$entity = new CCrmStatus("SOURCE");
				$entity->Add(array(
					'NAME' => CrmCommon::getSourceName($session->getData('USER_CODE'), $session->getConfig('LINE_NAME')),
					'STATUS_ID' => $crmSource,
					'SORT' => 115,
					'SYSTEM' => 'N'
				));
			}
			$result->setResult($crmSource);
		}
		else
		{
			$result->setResult($session->getConfig('CRM_SOURCE'));
		}
	}
	else
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_SESSION'), self::ERROR_IMOL_NO_SESSION, __METHOD__));
	}

	return $result;
}