OnBasketItemDiscountApply - применение скидки
Событие возникает в момент расчета и применения скидки из свойства инфоблока и позволяет изменить величину скидки или отменить ее.
Пример применения события:
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.discountbyproperty',
'OnBasketItemDiscountApply',
'\Partner\DiscountByProperty::onBasketItemDiscountApply'
);
class DiscountByProperty
{
function onBasketItemDiscountApply(\Bitrix\Main\Event $event)
{
$order = $event->getParameter('order'); // объект заказа (еще не созданного)
$basketCode = $event->getParameter('basketCode'); // код позиции корзины
$basketRow = $event->getParameter('basketRow'); // массив позиции корзины
$element = $event->getParameter('element'); // массив элемента информационного блока, содержит ID, IBLOCK_ID
$rowActionDescription = $event->getParameter('rowActionDescription'); // описание параметров скидки
$discountValue = $event->getParameter('discountValue'); // непосредственно величина рассчитанной скидки
$return = array();
// используя массив $element, содержащий ID и IBLOCK_ID товара, можно получить значения дополнительных свойств и др.
// если $return будет содержать ключ 'discountValue', то значение скидки будет изменено
$return['discountValue'] = 0; // чтобы отменить скидку
$return['discountValue'] = -7; // чтобы установить величину скидки в валюте
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $return);
return $result;
}
}
OnBasketItemPriceApply - установка цены из свойства
Событие возникает в момент установки цены из свойства инфоблока и позволяет изменить цену или отменить установку цены.
Пример применения события:
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.discountbyproperty',
'OnBasketItemPriceApply',
'\Partner\DiscountByProperty::onBasketItemPriceApply'
);
class DiscountByProperty
{
function onBasketItemPriceApply(\Bitrix\Main\Event $event)
{
$order = $event->getParameter('order'); // объект заказа (еще не созданного)
$basketCode = $event->getParameter('basketCode'); // код позиции корзины
$basketRow = $event->getParameter('basketRow'); // массив позиции корзины
$element = $event->getParameter('element'); // массив элемента информационного блока, содержит ID, IBLOCK_ID
$rowActionDescription = $event->getParameter('rowActionDescription'); // описание параметров скидки
$basePriceValue = $event->getParameter('basePriceValue'); // величина цены до применения правила корзины
$priceValue = $event->getParameter('priceValue'); // непосредственно величина рассчитанной цены
$return = array();
// используя массив $element, содержащий ID и IBLOCK_ID товара, можно получить значения дополнительных свойств и др.
// если $return будет содержать ключ 'priceValue', то значение скидки будет изменено
$return['priceValue'] = $basePriceValue; // чтобы отменить установку цены
$return['priceValue'] = 100; // чтобы установить цену
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $return);
return $result;
}
}