По умолчанию компоненты Битрикс в каталоге выводят только скидки на товар: http://take.ms/QtCPQ О накопительных скидках (даже если величина скидки больше) пользователь узнает только на этапе оформления заказа. Хотелось бы в каталоге выдавать актуальную наибольшую скидку.
Чтобы обойти данный нюанс можно воспользоваться обработчиком OnCountPriceWithDiscount
В перехватчике события получим накопительную скидку, сравним ее со скидкой на товар. Которая больше - ту и отобразим. Схематично код таков:
/**
* Позволяет заменить стандартный метод вычисления цены, получающейся после применения цепочки скидок.
* @param $price
* @param $currency
* @param $arDiscounts
* @return float Цена с учетом накопительных скидок
*/
function OnCountPriceWithDiscountHandler($price, $currency, $arDiscounts) {
/*
Метод CCatalogProduct::CountPriceWithDiscount высчитывает только скидки на товар.
Добавлем на сайте отображение накопительной скидки, если она превосходит скидки на товары.
*/
/* Получаем максимальную накопительную скидку через методы
\CCatalogDiscountSave::Enable();
$data = \CCatalogDiscountSave::GetDiscount(array('USER_ID' => $USER->GetID()));
*/
...
// Далее сравниваем ее с набором скидок на товар из $arDiscounts
...
if((float)$priceWithDiscount===(float)$price) {
return true;
} else {
return $priceWithDiscount;
}
}
Скидка на товар в 0%
В Интернет-магазине есть социальная группа товаров, на которую цена всегда минимальна и никакие скидки не должны к ней применяться (скидки, на товар, купоны, накопительные, правила корзины - в общем ничего).
Хочется сразу создать скидку на товары определенной категории. Установить скидку равную 0% и отменить дальнейшее применение цепочки скидок. Это даже быстрее чем, если у меня уже есть 10-20-30 правил скидок на различные критерии - вносить туда ограничение, что мол, товар не должен входить в группу соц товаров.
Хорошо, иду в панель: http://take.ms/QqG0m - и, опа - установить скидку равную нулю - нельзя. Почему "нет"? Например, мне нужно программно сравнивать скидки на товары и накопительные скидки, а накопительным скидкам нет возможности задать ограничения на какие-либо параметры товаров.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».