• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::obtainOrderFields
protected function obtainOrderFields($options)
{
	$result = [
		'ID' => (int)($options['orderId'] ?? 0),
		'SITE_ID' => SITE_ID,
		'CONNECTOR' => $options['connector'] ?? '',
		'SHIPMENT' => [],
		'PAYMENT' => [],
	];

	if (!empty($options['sessionId']))
	{
		$result['USER_ID'] = ImOpenLinesManager::getInstance()->setSessionId($options['sessionId'])->getUserId();
	}

	$clientInfo = $this->getClientInfo($options);
	if (isset($clientInfo['OWNER_ID']) && isset($clientInfo['OWNER_TYPE_ID']))
	{
		if (
			!isset($options['context'])
			|| $options['context'] !== SalesCenterComponentContextDictionary::CHAT
			|| !CrmManager::getInstance()->isOwnerEntityInFinalStage($clientInfo['OWNER_ID'], $clientInfo['OWNER_TYPE_ID'])
		)
		{
			$result['OWNER_ID'] = $clientInfo['OWNER_ID'];
			$result['OWNER_TYPE_ID'] = $clientInfo['OWNER_TYPE_ID'];
		}

		unset($clientInfo['OWNER_ID']);
		unset($clientInfo['OWNER_TYPE_ID']);
	}

	if (!empty($options['assignedById']))
	{
		$result['RESPONSIBLE_ID'] = $options['assignedById'];
	}
	elseif (isset($clientInfo['OWNER_ID'], $clientInfo['OWNER_TYPE_ID']))
	{
		$factory = CrmServiceContainer::getInstance()->getFactory($result['OWNER_TYPE_ID']);
		if ($factory)
		{
			$item = $factory->getItem($result['OWNER_ID']);
			if ($item)
			{
				$result['RESPONSIBLE_ID'] = $item->getAssignedById();
			}
		}
	}

	$result['CLIENT'] = $clientInfo;

	if ($result['ID'] === 0 && isset($options['context']))
	{
		$platform = null;

		if ($options['context'] === SalesCenterComponentContextDictionary::DEAL)
		{
			$platform = CrmOrderTradingPlatformDynamicEntity::getInstanceByCode(
				CrmOrderTradingPlatformDynamicEntity::getCodeByEntityTypeId($options['ownerTypeId'])
			);
		}
		elseif ($options['context'] === SalesCenterComponentContextDictionary::SMS)
		{
			$platform = CrmOrderTradingPlatformActivity::getInstanceByCode(
				CrmOrderTradingPlatformActivity::TRADING_PLATFORM_CODE
			);
		}

		if ($platform)
		{
			if (!$platform->isInstalled())
			{
				$platform->install();
			}

			if ($platform->isInstalled())
			{
				$result['TRADING_PLATFORM'] = $platform->getId();
			}
		}
	}

	return $result;
}