Bitrix. Настройка скидок в сочетании с разными типами цен
Описание
Есть сайт на битрикс. На сайте есть каталог товаров, каждый товар с торговым предложением. У клиента система скидок и разные типы цен: оптовая, розничная и акционная. Если количество товароа в корзине меньше оптового количества, указанного у этого товара, то используется розничный ценник, если больше либо равно -- оптовый, если указан акционный -- используется он.
В то же время используется система скидок, реализованная через правила работы с корзиной. Формат такой: если сумма заказа от такой-то суммы до такой-то суммы применить скидку столько то процентов, если товар из конкретного раздела.
Проблема
Но, как говорится, есть нюанс: система скидок должна отрабатывать только если используется оптовый ценник. Соответственно нужно либо заблокировать применение правил работы с корзиной, либо настроить правила работы с корзиной таким образом, чтобы обрабатывалось использование тех или иных цен. Но я так и не нашел способа это сделать.
В правилах работы с корзиной есть вариант условия на тип цен, но правило работы с корзиной перестает применяться, если указать это условие.
Переключение цен реализовано через событие OnGetOptimalPrice:
AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice");
function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices, $siteID = false, $arDiscountCoupons = false)
{
// Здесь происходит получение товара, его оптового количества и всех его цен
// Из них выбирается необходимая цена
return array(
'PRICE' => array(
"ID" => $productID, // id товара
'CATALOG_GROUP_ID' => $catalog_group_id, // id цены
'PRICE' => $price, // цена
'CURRENCY' => "RUB",
'VAT_INCLUDED' => "Y",
),
);
}
Скидки в правилах работы с корзиной настроены таким образом:

Вопрос
Как подружить между собой скидки и разные типы цен?