[QUOTE]
Евгений Жуков написал:
номер обращения укажите, пожалуйста. Исчезнуть оно не могло.[/QUOTE]
[URL=https://dev.1c-bitrix.ru/support/ticket.php?ID=1728511]1728511[/URL]
[QUOTE]
Евгений Жуков написал:
Вообще, какую задачу вы решаете? Если вы отдаете существующие скидки, может, проще их настроить?[/QUOTE]
Должен получиться некий гибрид скидки на товар и накопительной системы. У клиента в зависимости от определенного свойства товара разные пороги скидок. То есть, например, на кошельки:
[LIST]
[*]для клиентов с суммой заказов (+ текущая корзина) от 15000 скидка 20%
[*]от 20000 30% и так далее.
[/LIST]Для "женских сумок" другие пороги.
Кроме того, самому клиенту может быть присвоен порог скидки вручную для каждой категории (вне зависимости от суммы заказов). Сумму заказов (с учетом текущей корзины) и скидку, которую необходимо применить (из существующих), я определяю. Но применить её не получается.
Причем изменение цены (в том числе при наполнении текущей корзины) должно сразу отображаться в карточке товара.
В обработчике onGetDiscountResult это работало примерно так:[CODE]//до этого в OnGetDiscount мы получили цену товара и его категорию, от которой зависит тип скидки
public function OnGetDiscountResult(&$arResult){
if(self::$productPrice === null) return;
if(is_array(self::$productPrice)
&& isset(self::$productPrice['PRICE'])
&& self::$productPrice['PRICE'] > 0){
$price = new \MyNamespace\Classes\Handlers\Price();
self::$discountId = $price->getDiscount(self::$productCategory);
foreach($arResult as $key_discount => $discount){
if ($discount['ID']==self::$discountId) {
$needDiscount[0] = $discount;
$arResult = $needDiscount;
break;
}
}
}
self::$productPrice = null;
}
[/CODE]
Этот код работал до переключения на "только правила корзины". Теперь, даже когда я отключаю эту галочку, создаваемые по старой схеме "Скидки на товар" вообще не применяются к товарам в каталоге.