Задать вопрос
@Ilya1791

Как в Битрикс вызывается событие после изменения или добавления цены?

Реализовал функционал, при котором цена со скидкой записывает в отдельное свойство цену товара со скидкой (это нужно чтобы фильтр работал по ценам со скидкой, он для всех товаров одинаковая). Реализовал через обработчики init.php, нашел только OnPriceAdd и OnPriceUpdate. Но тут выяснилось, что эти события записывают в свойство перед обновлением цены, то есть отрабатывают по старой цене.

Попробовал событие типа OnAfterPriceUpdate, та же фигня - свойство перезаписывается по старой цене. Как правильно написать обрабочик, подскажите, пожалуйста?

Мой код:

AddEventHandler("catalog", "OnPriceAdd", Array("SetPrice", "SetPriceHandler"));
AddEventHandler("catalog", "OnPriceUpdate", Array("SetPrice", "SetPriceHandler"));
CModule::IncludeModule('iblock');
CModule::IncludeModule('catalog');
CModule::IncludeModule('currency');

class SetPrice
{
    function SetPriceHandler(&$arFields)
    {
        $rsPrices = CPrice::GetList(
            array(),
            array(
                "PRODUCT_ID" => $arFields['ID'],
            )
        );
        while($arPrice = $rsPrices->Fetch())
        {
            $PropPrice = $arPrice["PRICE"]*0.9;
        }
        CIBlockElement::SetPropertyValueCode($arFields['ID'], "PRICE", $PropPrice);
    }
}
  • Вопрос задан
  • 427 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы