Здравствуйте. Сделал поддержку 2 событий, к ночи изменения будут в маркете:
Событие при применении скидки в модуле:
Код |
---|
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 или других, здесь можно получить значения нужных свойств и сделать проверку на дату активности
// если $return будет содержать ключ 'discountValue', то значение скидки будет изменено
$return['discountValue'] = 0; // чтобы отменить скидку
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $return);
return $result;
}
}
|
Событие при установке цены модулем (только если вместо "применить скидку" будет включено "установить цену"):
Код |
---|
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 или других, здесь можно получить значения нужных свойств и сделать проверку на дату активности
// если $return будет содержать ключ 'priceValue', то значение скидки будет изменено
$return['priceValue'] = $basePriceValue; // чтобы отменить установку цены
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $return);
return $result;
}
}
|