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