- Модуль: 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;
}