Здравствуйте. Хочу сделать чтобы в зависимости от переменной сессии, корзина работала только с определённым типом цены. Добавляю событие OnGetOptimalPrice. Но как в нём получить цену товара со скидкой DISCOUNT_PRICE ? Тут нужно самому насчитать эту скидку или GetOptimalPrice должен сам её подхватить ? Помогите примером.
Делаю так:
Делаю так:
Код |
---|
$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; }); |