• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/dealcontroller.php
  • Класс: Bitrix\Crm\Timeline\DealController
  • Вызов: DealController::register
public function register($ownerID, array $options = null)
{
	if(!is_array($options))
	{
		$options = array();
	}

	$enableCheck = isset($options['EXISTS_CHECK']) ? (bool)$options['EXISTS_CHECK'] : true;
	if($enableCheck && TimelineEntry::isAssociatedEntityExist(\CCrmOwnerType::Deal, $ownerID))
	{
		return;
	}

	$fields = self::getEntity($ownerID);
	if(!is_array($fields))
	{
		return;
	}

	//region Register Creation
	CreationEntry::create(
		array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::Deal,
			'ENTITY_ID' => $ownerID,
			'AUTHOR_ID' => self::resolveCreatorID($fields),
			'CREATED' => isset($fields['DATE_CREATE']) ? DateTime::tryParse($fields['DATE_CREATE']) : null,
			'BINDINGS' => array(
				array(
					'ENTITY_TYPE_ID' => \CCrmOwnerType::Deal,
					'ENTITY_ID' => $ownerID
				)
			)
		)
	);
	//endregion
	//region Register Stage History
	$authorID = self::resolveEditorID($fields);
	$historyItems = DealStageHistoryEntry::getAll($ownerID);
	if(count($historyItems) > 1)
	{
		$initialItem = array_shift($historyItems);
		$stageNames = \CCrmDeal::GetStageNames(
			isset($initialItem['CATEGORY_ID']) ? (int)$initialItem['CATEGORY_ID'] : 0
		);
		$prevStageID = isset($initialItem['STAGE_ID']) ? $initialItem['STAGE_ID'] : '';
		foreach($historyItems as $item)
		{
			$curStageID = isset($item['STAGE_ID']) ? $item['STAGE_ID'] : '';
			if($curStageID === '')
			{
				continue;
			}

			if($prevStageID !== '')
			{
				ModificationEntry::create(
					array(
						'ENTITY_TYPE_ID' => \CCrmOwnerType::Deal,
						'ENTITY_ID' => $ownerID,
						'AUTHOR_ID' => $authorID,
						'SETTINGS' => array(
							'FIELD' => 'STAGE_ID',
							'START' => $prevStageID,
							'FINISH' => $curStageID,
							'START_NAME' => isset($stageNames[$prevStageID]) ? $stageNames[$prevStageID] : $prevStageID,
							'FINISH_NAME' => isset($stageNames[$curStageID]) ? $stageNames[$curStageID] : $curStageID
						)
					)
				);
			}
			$prevStageID = $curStageID;
		}
	}
	//endregion
	//region Register Live Feed Messages
	LiveFeed::registerEntityMessages(\CCrmOwnerType::Deal, $ownerID);
	//endregion
}