Здравствуйте. Хочу сделать чтобы в зависимости от переменной сессии, корзина работала только с определённым типом цены. Добавляю событие OnGetOptimalPrice. Но как в нём получить цену товара со скидкой DISCOUNT_PRICE ? Тут нужно самому насчитать эту скидку или GetOptimalPrice должен сам её подхватить ? Помогите примером.
Делаю так:
[CODE]$eventManager = Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('catalog', 'OnGetOptimalPrice', function( //908
$productId,
$quantity = 1,
$arUserGroups = [],
$renewal = "N",
$arPrices = [],
$siteID = false,
$arDiscountCoupons = false){
$IBLOCK_ID = 10;
$request = \Bitrix\Main\Context::getCurrent()->getRequest();
if ($request->isAdminSection()){
} else {
$sid = SITE_ID;
$currency_code = 'RUB';
if($_SESSION['REGION_CODE'] != DEFAULT_CITYID){
$priceID = 20;
}else{
$priceID = 5;
}
}
$prices = \CCatalogProduct::GetByIDEx($productId);
$price = $prices['PRICES'][$priceID]['PRICE'];
$arResult = array(
'PRICE' => array(
'ID' => $productId,
'CATALOG_GROUP_ID' => $priceID,
'PRICE' => $price,
'CURRENCY' => $currency_code,
'ELEMENT_IBLOCK_ID' => $IBLOCK_ID,
//'VAT_RATE' => 0,
//'VAT_INCLUDED' => "N",
),
'RESULT_PRICE' => array(
'BASE_PRICE' => $price,
'DISCOUNT_PRICE' => $price,
'DISCOUNT' => 0,
'PERCENT' => 0,
'CURRENCY' => $currency_code,
),
'DISCOUNT_PRICE' => $price,
'DISCOUNT' => array(),
'DISCOUNT_LIST' => array()
);
return $arResult;
});
[/CODE]