- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/merger/companymerger.php
- Класс: Bitrix\Crm\Merger\CompanyMerger
- Вызов: CompanyMerger::innerPrepareEntityFieldMergeData
protected function innerPrepareEntityFieldMergeData($fieldID, array $fieldParams, array $seeds, array $targ, array $options = null)
{
if($fieldID === 'CONTACT_ID')
{
$enabledIdsMap = null;
if(isset($options['enabledIds']) && is_array($options['enabledIds']))
{
$enabledIdsMap = array_fill_keys($options['enabledIds'], true);
}
$sourceEntityIDs = array();
$resultContactBindings = array();
foreach($seeds as $seed)
{
$seedID = (int)$seed['ID'];
if(is_null($enabledIdsMap) || isset($enabledIdsMap[$seedID]))
{
$seedContactBindings = Binding\ContactCompanyTable::getCompanyBindings($seedID);
if(!empty($seedContactBindings))
{
$sourceEntityIDs[] = $seedID;
self::mergeEntityBindings(
\CCrmOwnerType::Contact,
$seedContactBindings,
$resultContactBindings
);
}
}
}
$targID = (int)$targ['ID'];
if(is_null($enabledIdsMap) || isset($enabledIdsMap[$targID]))
{
$targContactBindings = Binding\ContactCompanyTable::getCompanyBindings($targID);
if(!empty($targContactBindings))
{
$sourceEntityIDs[] = $targID;
self::mergeEntityBindings(
\CCrmOwnerType::Contact,
$targContactBindings,
$resultContactBindings
);
}
}
return array(
'FIELD_ID' => 'CONTACT_ID',
'TYPE' => 'crm_contact',
'IS_MERGED' => true,
'IS_MULTIPLE' => true,
'SOURCE_ENTITY_IDS' => array_unique($sourceEntityIDs, SORT_NUMERIC),
'VALUE' => Binding\EntityBinding::prepareEntityIDs(\CCrmOwnerType::Contact, $resultContactBindings),
);
}
return parent::innerPrepareEntityFieldMergeData($fieldID, $fieldParams, $seeds, $targ, $options);
}