• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/conversion/leadconversionmapper.php
  • Класс: Bitrix\Crm\Conversion\LeadConversionMapper
  • Вызов: LeadConversionMapper::createMap
static function createMap($entityTypeID)
{
	if(!is_int($entityTypeID))
	{
		$entityTypeID = (int)$entityTypeID;
	}

	if(!\CCrmOwnerType::IsDefined($entityTypeID))
	{
		throw new Main\ArgumentOutOfRangeException('dstEntityTypeID',
			\CCrmOwnerType::FirstOwnerType,
			\CCrmOwnerType::LastOwnerType
		);
	}

	if($entityTypeID !== \CCrmOwnerType::Contact
		&& $entityTypeID !== \CCrmOwnerType::Company
		&& $entityTypeID !== \CCrmOwnerType::Deal)
	{
		$dstEntityTypeName = \CCrmOwnerType::ResolveName($entityTypeID);
		throw new Main\NotSupportedException("Entity type: '{$dstEntityTypeName}' is not supported in current context");
	}

	$map = new EntityConversionMap(\CCrmOwnerType::Lead, $entityTypeID);
	if($entityTypeID === \CCrmOwnerType::Contact)
	{
		//region Contact Map Static Field Bindings
		$map->createItem('HONORIFIC');
		$map->createItem('NAME');
		$map->createItem('SECOND_NAME');
		$map->createItem('LAST_NAME');
		$map->createItem('BIRTHDATE');
		$map->createItem('POST');
		$map->createItem('COMMENTS');
		$map->createItem('OPENED');
		$map->createItem('SOURCE_ID');
		$map->createItem('SOURCE_DESCRIPTION');
		$map->createItem('ADDRESS');
		$map->createItem('ADDRESS_2');
		$map->createItem('ADDRESS_CITY');
		$map->createItem('ADDRESS_POSTAL_CODE');
		$map->createItem('ADDRESS_REGION');
		$map->createItem('ADDRESS_PROVINCE');
		$map->createItem('ADDRESS_COUNTRY');
		$map->createItem('ADDRESS_COUNTRY_CODE');
		$map->createItem('PHONE');
		$map->createItem('EMAIL');
		$map->createItem('WEB');
		$map->createItem('IM');
		$map->createItem('LINK');
		$map->createItem('ASSIGNED_BY_ID');
		$map->createItem('ORIGINATOR_ID');
		$map->createItem('ORIGIN_ID');
		$map->createItem('FACE_ID');
		//endregion
		//region Contact Map User Field Bindings
		$intersections = UserFieldSynchronizer::getIntersection(\CCrmOwnerType::Lead, \CCrmOwnerType::Contact);
		foreach($intersections as $intersection)
		{
			$map->createItem($intersection['SRC_FIELD_NAME'], $intersection['DST_FIELD_NAME']);
		}
		//endregion
	}
	elseif($entityTypeID === \CCrmOwnerType::Company)
	{
		//region Company Map Static Field Bindings
		$map->createItem('COMPANY_TITLE', 'TITLE', array('ALT_SRC_FIELD_IDS' => array('TITLE')));
		$map->createItem('COMMENTS');
		$map->createItem('OPENED');
		$map->createItem('ADDRESS');
		$map->createItem('ADDRESS_2');
		$map->createItem('ADDRESS_CITY');
		$map->createItem('ADDRESS_POSTAL_CODE');
		$map->createItem('ADDRESS_REGION');
		$map->createItem('ADDRESS_PROVINCE');
		$map->createItem('ADDRESS_COUNTRY');
		$map->createItem('ADDRESS_COUNTRY_CODE');
		$map->createItem('PHONE');
		$map->createItem('EMAIL');
		$map->createItem('WEB');
		$map->createItem('IM');
		$map->createItem('LINK');
		$map->createItem('ASSIGNED_BY_ID');
		$map->createItem('ORIGINATOR_ID');
		$map->createItem('ORIGIN_ID');
		//endregion
		//region Company Map User Field Bindings
		$intersections = UserFieldSynchronizer::getIntersection(\CCrmOwnerType::Lead, \CCrmOwnerType::Company);
		foreach($intersections as $intersection)
		{
			$map->createItem($intersection['SRC_FIELD_NAME'], $intersection['DST_FIELD_NAME']
			);
		}
		//endregion
	}
	elseif($entityTypeID === \CCrmOwnerType::Deal)
	{
		//region Deal Map Static Field Bindings
		$map->createItem('TITLE');
		$map->createItem('OPPORTUNITY');
		$map->createItem('CURRENCY_ID');
		$map->createItem('COMMENTS');
		$map->createItem('OPENED');
		$map->createItem('SOURCE_ID');
		$map->createItem('SOURCE_DESCRIPTION');
		$map->createItem('ADDRESS');
		$map->createItem('ADDRESS_2');
		$map->createItem('ADDRESS_CITY');
		$map->createItem('ADDRESS_POSTAL_CODE');
		$map->createItem('ADDRESS_REGION');
		$map->createItem('ADDRESS_PROVINCE');
		$map->createItem('ADDRESS_COUNTRY');
		$map->createItem('ADDRESS_COUNTRY_CODE');
		$map->createItem('PRODUCT_ROWS');
		$map->createItem('ASSIGNED_BY_ID');
		$map->createItem('ORIGINATOR_ID');
		$map->createItem('ORIGIN_ID');
		$map->createItem('WEBFORM_ID');
		//endregion
		//region Deal Map User Field Bindings
		$intersections = UserFieldSynchronizer::getIntersection(\CCrmOwnerType::Lead, \CCrmOwnerType::Deal);
		foreach($intersections as $intersection)
		{
			$map->createItem($intersection['SRC_FIELD_NAME'], $intersection['DST_FIELD_NAME']);
		}
		//endregion
	}

	//region UTM Fields
	foreach(UtmTable::getCodeList() as $fieldID)
	{
		$map->createItem($fieldID);
	}
	//endregion

	return $map;
}