• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/conversion/leadconversionwizard.php
  • Класс: Bitrix\Crm\Conversion\LeadConversionWizard
  • Вызов: LeadConversionWizard::execute
public function execute(array $contextData = null)
{
	if ($this->isNewApi())
	{
		return parent::execute($contextData);
	}

	/** @var LeadConverter $converter */
	$converter = $this->converter;

	if(is_array($contextData) && !empty($contextData))
	{
		$converter->setContextData(array_merge($converter->getContextData(), $contextData));
	}

	$result = false;
	try
	{
		$converter->initialize();
		do
		{
			$converter->executePhase();
		}
		while($converter->moveToNextPhase());

		$resultData = $converter->getResultData();
		if($this->isRedirectToShowEnabled())
		{
			if(isset($resultData[\CCrmOwnerType::DealName]))
			{
				if ($this->isMobileContext)
				{
					$this->redirectUrl = "/mobile/crm/deal/?page=view&deal_id=".$resultData[\CCrmOwnerType::DealName];
				}
				else
				{
					$this->redirectUrl = \CCrmOwnerType::GetEntityShowPath(
						\CCrmOwnerType::Deal,
						$resultData[\CCrmOwnerType::DealName],
						false,
						array('ENABLE_SLIDER' => $this->enableSlider)
					);
				}
			}
			elseif(isset($resultData[\CCrmOwnerType::ContactName]))
			{
				if ($this->isMobileContext)
				{
					$this->redirectUrl = "/mobile/crm/contact/?page=view&contact_id=".$resultData[\CCrmOwnerType::ContactName];
				}
				else
				{
					$this->redirectUrl = \CCrmOwnerType::GetEntityShowPath(
						\CCrmOwnerType::Contact,
						$resultData[\CCrmOwnerType::ContactName],
						false,
						array('ENABLE_SLIDER' => $this->enableSlider)
					);
				}
			}
			elseif(isset($resultData[\CCrmOwnerType::CompanyName]))
			{
				if ($this->isMobileContext)
				{
					$this->redirectUrl = "/mobile/crm/company/?page=view&company_id=".$resultData[\CCrmOwnerType::CompanyName];
				}
				else
				{
					$this->redirectUrl = \CCrmOwnerType::GetEntityShowPath(
						\CCrmOwnerType::Company,
						$resultData[\CCrmOwnerType::CompanyName],
						false,
						array('ENABLE_SLIDER' => $this->enableSlider)
					);
				}
			}

			$this->eventParams = array(
				'name' => 'onCrmEntityConvert',
				'args' => array(
					'entityTypeId' => \CCrmOwnerType::Lead,
					'entityTypeName' => \CCrmOwnerType::LeadName,
					'entityId' => $this->getEntityID()
				)
			);
		}
		$result = true;
	}
	catch(EntityConversionException $e)
	{
		$this->exception = $e;
		if($e->getTargetType() === EntityConversionException::TARG_DST)
		{
			if ($this->isMobileContext)
			{
				switch($e->getDestinationEntityTypeID())
				{
					case (\CCrmOwnerType::Deal):
					{
						$this->redirectUrl = "/mobile/crm/deal/?page=edit&lead_id=".$converter->getEntityID();
						break;
					}
					case (\CCrmOwnerType::Contact):
					{
						$this->redirectUrl = "/mobile/crm/contact/?page=edit&lead_id=".$converter->getEntityID();
						break;
					}
					case (\CCrmOwnerType::Company):
					{
						$this->redirectUrl = "/mobile/crm/company/?page=edit&lead_id=".$converter->getEntityID();
						break;
					}
				}
			}
			else
			{
				//Required for Deal category
				$config = $converter->getConfig();
				$options = array(
					'ENTITY_SETTINGS' => $config->getEntityInitData($e->getDestinationEntityTypeID()),
					'ENABLE_SLIDER' => $this->enableSlider
				);

				$this->redirectUrl = \CCrmUrlUtil::AddUrlParams(
					\CCrmOwnerType::GetEntityEditPath(
						$e->getDestinationEntityTypeID(),
						0,
						false,
						$options
					),
					array('lead_id' => $converter->getEntityID(), 'entityTypeId' => $e->getDestinationEntityTypeID())
				);
			}
		}
	}
	catch(\Exception $e)
	{
		$this->errorText = $e->getMessage();
	}

	$this->save();
	return $result;
}