AddEventHandler("catalog", "OnDiscountAdd", "eventChangeDiscount" );
AddEventHandler("catalog", "OnBeforeDiscountUpdate", "eventChangeDiscount");
AddEventHandler("catalog", "OnBeforeDiscountDelete", "eventChangeDiscount" );
function eventChangeDiscount ($id, $arFields)
{
global $arProdsIdsAfterDiscountDelete;
$file_log_email = $_SERVER["DOCUMENT_ROOT"]."/log/update_discount_".date('d-m-Y')."_log.txt";
if(!file_exists($file_log_email)){
file_put_contents($file_log_email, '');
}
var_dump($arFields);
file_put_contents($file_log_email, json_encode($arFields, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
Cmodule::IncludeModule('catalog');
if(CModule::IncludeModule("catalog"))
{
if(empty($arFields["PRODUCT_IDS"]) && !empty($id)) // при удалении скидки
{
// запомним IDшники товаров из акции
$resDiscount = CCatalogDiscount::GetList(array(), array("ID"=>$id));
while($obDiscount = $resDiscount->Fetch())
{
$arProdsIdsAfterDiscountDelete[] = $obDiscount["PRODUCT_ID"]; // костыльно конечно
}
}
if(!empty($arFields["PRODUCT_IDS"]))
{
foreach($arFields["PRODUCT_IDS"] as $prod_id)
{
// нужно для сортировки цены со скидкой
// Прошу обратить внимание - обязательно указание сайта!!! в моем случае "s1"
// $arPrice = CCatalogProduct::GetOptimalPrice($prod_id, 1, array(2), "N", array() , "s1");
// CIBlockElement::SetPropertyValueCode($prod_id, "MIN_PRICE_DISCOUNT", $arPrice["DISCOUNT_PRICE"]);
// можем поменять на SetPropertyValues, если знаем ID Инфоблока
}
}
}
}
На счет записи, сейчас попробую...
Я уже думал об этом.