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",
        ),
    );
}

Скидки в правилах работы с корзиной настроены таким образом:

Вопрос

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


Ответы (0 шт):