• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/merger/leadmerger.php
  • Класс: Bitrix\Crm\Merger\LeadMerger
  • Вызов: LeadMerger::getFieldConflictResolver
static function getFieldConflictResolver(string $fieldId, string $type): ConflictResolver\Base
{
	$userDefinedResolver = static::getUserDefinedConflictResolver(
		\CCrmOwnerType::Lead,
		$fieldId,
		$type
	);
	if ($userDefinedResolver)
	{
		return $userDefinedResolver;
	}

	switch($fieldId)
	{
		case 'NAME':
			$resolver = new Crm\Merger\ConflictResolver\NameField($fieldId);
			$resolver->setRelatedFieldsCheckRequired(true);
			return $resolver;

		case 'SECOND_NAME':
		case 'LAST_NAME':
			return new Crm\Merger\ConflictResolver\NameField($fieldId);

		case 'TITLE':
			//Field Title is ignored
			return new Crm\Merger\ConflictResolver\IgnoredField($fieldId);

		case 'ADDRESS_LOC_ADDR_ID':
			//Field Location in address is ignored
			return new Crm\Merger\ConflictResolver\IgnoredField($fieldId);

		case 'CONTACT_ID':
			//Crutch for ContactID Field. It is obsolete and can be ignored. See DealMerger::innerMergeBoundEntities.
			return new Crm\Merger\ConflictResolver\IgnoredField($fieldId);

		case 'OPPORTUNITY':
			//Crutch for Opportunity Field. It can be ignored if ProductRows are not empty. We will recalculate Opportunity after merging of ProductRows. See DealMerger::innerMergeBoundEntities.
			$resolver = new Crm\Merger\ConflictResolver\OpportunityField($fieldId);
			$resolver->setEntityTypeId(\CCrmOwnerType::Lead);
			return $resolver;

		case 'TAX_VALUE':
			//Crutch for TaxValue Field. It can be ignored. We will recalculate TaxValue after merging of ProductRows. See DealMerger::innerMergeBoundEntities.
			return new Crm\Merger\ConflictResolver\IgnoredField($fieldId);

		case 'COMMENTS':
			return new Crm\Merger\ConflictResolver\HtmlField($fieldId);

		case 'SOURCE_ID':
			return new Crm\Merger\ConflictResolver\SourceField($fieldId);

		case 'SOURCE_DESCRIPTION':
			return new Crm\Merger\ConflictResolver\TextField($fieldId);

		case 'OPENED':
			return new Crm\Merger\ConflictResolver\IgnoredField($fieldId);
	}

	return parent::getFieldConflictResolver($fieldId, $type);
}