• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/dealrecurringcontroller.php
  • Класс: Bitrix\Crm\Timeline\DealRecurringController
  • Вызов: DealRecurringController::prepareHistoryDataModel
public function prepareHistoryDataModel(array $data, array $options = null)
{
	$typeID = isset($data['TYPE_ID']) ? (int)$data['TYPE_ID'] : TimelineType::UNDEFINED;
	$typeCategoryId = (int)($data['TYPE_CATEGORY_ID'] ?? LogMessageType::UNDEFINED);
	$settings = $data['SETTINGS'] ?? [];
	$base = $settings['BASE'] ?? [];

	if ($typeID === TimelineType::CREATION)
	{
		$codeTitle = isset($base['ENTITY_TYPE_ID']) && $base['ENTITY_TYPE_ID'] === \CCrmOwnerType::DealRecurring
			? 'CRM_DEAL_RECURRING_CREATION'
			: 'CRM_DEAL_CREATION';
		$data['TITLE'] = Loc::getMessage($codeTitle);

		$caption = Loc::getMessage("CRM_DEAL_BASE_CAPTION_BASED_ON_DEAL");
		$this->applySettingsBaseData($data, $base, $caption);

		unset($data['SETTINGS']);
	}
	elseif($typeID === TimelineType::CONVERSION)
	{
		$data['TITLE'] =  Loc::getMessage('CRM_RECURRING_CREATION_BASED_ON');
		$entities = isset($settings['ENTITIES']) && is_array($settings['ENTITIES'])
			? $settings['ENTITIES'] : array();

		$entityInfos = array();
		foreach($entities as $entityData)
		{
			$entityTypeID = isset($entityData['ENTITY_TYPE_ID']) ? (int)$entityData['ENTITY_TYPE_ID'] : 0;
			$entityID = isset($entityData['ENTITY_ID']) ? (int)$entityData['ENTITY_ID'] : 0;

			if(\CCrmOwnerType::TryGetEntityInfo(\CCrmOwnerType::Deal, $entityID, $entityInfo, false) && $entityTypeID)
			{
				$entityInfo['ENTITY_TYPE_ID'] = $entityTypeID;
				$entityInfo['ENTITY_ID'] = $entityID;
				$entityInfos[] = $entityInfo;
			}
		}
		$data['ENTITIES'] = $entityInfos;
		unset($data['SETTINGS']);
	}
	elseif($typeID === TimelineType::MODIFICATION)
	{
		$fieldName = isset($settings['FIELD']) ? $settings['FIELD'] : '';
		if($fieldName === 'NEXT_EXECUTION')
		{
			$data['START_NAME'] = isset($settings['START_NAME']) ? $settings['START_NAME'] : $settings['START'];
			$data['FINISH_NAME'] = isset($settings['FINISH_NAME']) ? $settings['FINISH_NAME'] : $settings['FINISH'];
			$titleCode = !empty($data['START_NAME']) ? 'CRM_DEAL_RECURRING_NEXT_EXECUTION_CHANGED' : 'CRM_DEAL_RECURRING_NEXT_EXECUTION';
			$data['TITLE'] =  Loc::getMessage($titleCode);
		}
		if ($fieldName === 'ACTIVE')
		{
			$messageCode = ($settings['FINISH'] !== 'Y') ? "CRM_DEAL_RECURRING_NOT_ACTIVE" : "CRM_DEAL_RECURRING_ACTIVE";
			$data['TITLE'] =  Loc::getMessage($messageCode);
		}
		$data['MODIFIED_FIELD'] = $fieldName;
		unset($data['SETTINGS']);
	}
	elseif ($typeID === TimelineType::LOG_MESSAGE)
	{
		$this->applySettingsBaseData($data, $base);
	}

	return EntityController::prepareHistoryDataModel($data, $options);
}