Реализовал функционал, при котором цена со скидкой записывает в отдельное свойство цену товара со скидкой (это нужно чтобы фильтр работал по ценам со скидкой, он для всех товаров одинаковая). Реализовал через обработчики 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);
}
}