Внимание: В статье приведены фрагменты кода, описывающие принцип реализации. Для внедрения рекомендуется обратиться к разработчикам.
В зависимости от задач функция может быть более сложной. В данном материале описан принцип реализации.
Вопрос предоставления разной величины скидки с учетом стоимости всех товаров в корзине по одному купону не так тривиален.
Например, необходимо решить следующую задачу:
Эта задача легко бы решалась, если не одно НО: они должны применяться только при активации купона, причем один купон на всех.
Для решения данной задачи необходимо создать 3 правила работы с корзиной с самими скидками (т.к. в нашем примере их 3) и еще одно правило под купон (назовем его служебным), последнее правило с нулевой скидкой.
В условиях 3-х правил указываем необходимые интервалы применения, а также дополнительное PHP-условие, которое будут доступно после установки модуля. В значении условия укажем функцию, например с названием __check_coupon(), к данной функции мы еще вернемся. Произвольное PHP условие правил работы с корзиной
Выглядит все это следующим образом:
Также создаем 4-е (служебное) правило, скидку для неё указываем 0% и создаем нужный нам купон, например, SL-WI8UK-QU3ENAW
Остается прописать функцию __check_coupon() в файле init.php. В данной функции будем проверять применен или нет наш купон и возвращать истину (true) или ложь (false).
function __check_coupon() { $btrue = false; $coupon = "SL-WI8UK-QU3ENAW"; //TODO код купона //Проверяем примененные купону для текучего пользователя $arCoupons = Bitrix\Sale\DiscountCouponsManager::get(true, array(), true, true); if (is_array($arCoupons) && array_key_exists($coupon, $arCoupons)) $btrue = true; return $btrue; }