- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatemanager.php
- Класс: Bitrix\Crm\Integrity\DuplicateManager
- Вызов: DuplicateManager::getSupportedDedupeTypes
static function getSupportedDedupeTypes($entityTypeID)
{
$entityTypeID = (int)$entityTypeID;
if($entityTypeID !== CCrmOwnerType::Lead
&& $entityTypeID !== CCrmOwnerType::Contact
&& $entityTypeID !== CCrmOwnerType::Company)
{
return array();
}
$result = array();
if($entityTypeID === CCrmOwnerType::Lead || $entityTypeID === CCrmOwnerType::Contact)
{
$result = array_merge($result, DuplicatePersonCriterion::getSupportedDedupeTypes());
}
if($entityTypeID === CCrmOwnerType::Lead || $entityTypeID === CCrmOwnerType::Company)
{
$result = array_merge($result, DuplicateOrganizationCriterion::getSupportedDedupeTypes());
}
$result = array_merge($result, DuplicateCommunicationCriterion::getSupportedDedupeTypes());
if ($entityTypeID === CCrmOwnerType::Contact || $entityTypeID === CCrmOwnerType::Company)
{
$result = array_merge(
$result,
DuplicateRequisiteCriterion::getSupportedDedupeTypes(),
DuplicateBankDetailCriterion::getSupportedDedupeTypes()
);
}
// Volatile types
$volatileTypesByEntityId = [];
$idsByEntityTypes = Volatile\TypeInfo::getInstance()->getIdsByEntityTypes([$entityTypeID]);
if (is_array($idsByEntityTypes[$entityTypeID]))
{
foreach ($idsByEntityTypes[$entityTypeID] as $volatileTypeId)
{
$data = Volatile\Type\State::getInstance()->get($volatileTypeId)->getData();
if (
in_array(
$data['stateId'],
[
Volatile\Type\State::STATE_ASSIGNED,
Volatile\Type\State::STATE_INDEX,
Volatile\Type\State::STATE_READY,
],
true
)
)
{
$volatileTypesByEntityId[] = $volatileTypeId;
}
}
}
return array_merge($result, $volatileTypesByEntityId);
}