- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/exchange/integration/router.php
- Класс: BitrixSaleExchangeIntegrationRouter
- Вызов: Router::redirect
public function redirect()
{
$placementType = $this->getPlacement();
if(PlacementType::isDefined(
PlacementType::resolveId($placementType)))
{
$placement = PlacementFactory::create(PlacementType::resolveId($placementType), $this->fields->getValues());
$link = AdminFactory::create($placement->getModeType());
if($placement->getModeType() == AdminModeType::APP_LAYOUT_TYPE)
{
$type = $placement->getType();
if($type == PlacementType::DEFAULT_TOOLBAR)
{
$entityTypeId = $this->resolveTypeId($placement->getEntityTypeId());
//TODO: fabric
if($entityTypeId == EntityType::ORDER)
{
$orderId = $this->getBySourceEntity(
EntityType::ORDER, '',
$placement->getEntityTypeId(), $placement->getEntityId());
if($orderId>0)
{
$orderId = Order::load($orderId) ? $orderId
:0;
}
$dealId = $orderId>0 ? $this->getByDestinationEntity(
EntityType::ORDER, $orderId,
CRMEntityType::DEAL, '')
:0;
if($orderId>0 && $dealId>0)
{
$link
->setPageByType(AdminRegistry::SALE_ORDER_VIEW)
->setField('entityId', $dealId)
->setField('entityTypeId', CRMEntityType::DEAL)
->setField('ID', $orderId)
->setFilterParams(false)
->fill()
->redirect();
}
else
{
$title = Loc::getMessage("SALE_ROUTER_INTERNAL_ERROR_TITLE");
if($orderId == 0)
{
$message = Loc::getMessage("SALE_ROUTER_ORDER_NOT_FOUND", ['#PLACEMENT_ENTITY_ID#'=>$placement->getEntityId()]);
$link
->setPage('/bitrix/services/sale/b24integration/500/rest-app-warning.php')
->setField('message', urlencode($message))
->setField('title', $title)
->redirect();
}
$message = Loc::getMessage("SALE_ROUTER_INTERNAL_ERROR");
$link
->setPage('/bitrix/services/sale/b24integration/500/rest-app-warning.php')
->setField('message', urlencode($message))
->setField('title', $title)
->redirect();
die;
}
}
}
elseif($type == PlacementType::DEAL_DETAIL_TOOLBAR)
{
if($placement->getTypeHandler() == HandlerType::ORDER_NEW)
{
$link
->setPageByType(AdminRegistry::SALE_ORDER_CREATE)
->setField('entityId', $placement->getEntityId())
->setField('entityTypeId', $placement->getEntityTypeId())
->setFilterParams(false)
->setField('SITE', SITE_ID)
->setField('HANDLER', HandlerType::ORDER_NEW)
->fill()
->redirect();
}
elseif ($placement->getTypeHandler() == HandlerType::ORDER_REGISTRY)
{
$link
->setPageByType(AdminRegistry::SALE_ORDER)
->setField('entityId', $placement->getEntityId())
->setField('entityTypeId', $placement->getEntityTypeId())
->setFilterParams('&set_filter=Y&filter_is_sync_b24=N')
->fill()
->redirect();
}
}
}
}
$link = AdminFactory::create(AdminModeType::APP_LAYOUT_TYPE);
$title = Loc::getMessage("SALE_ROUTER_INTERNAL_ERROR_TITLE");
$message = Loc::getMessage("SALE_ROUTER_PAGE_NOT_FOUND");
$link
->setPage('/bitrix/services/sale/b24integration/500/rest-app-warning.php')
->setField('message', urlencode($message))
->setField('title', $title)
->redirect();
}