Да, в 1C-Bitrix есть API запрос, который позволяет прекратить применение скидок на текущем уровне приоритетов.
Для реализации этой функциональности необходимо использовать методы класса CSaleDiscount
, который является частью модуля "Sale" в 1C-Bitrix.
Пример использования этого метода:
<?php use BitrixSaleDiscount; use BitrixSaleDiscountCouponsManager; // Отключаем применение скидок на текущем уровне приоритетов DiscountCouponsManager::setApplyMode(DiscountCouponsManager::APPLY_MODE_DISABLE); // Производим нужные операции, например, выводим сумму заказа $orderSum = 1000; echo "Сумма заказа: ".$orderSum; // Получаем активные скидки для текущей корзины $basket = BitrixSaleBasket::loadItemsForFUser(BitrixSaleFuser::getId(), BitrixMainContext::getCurrent()->getSite()); $discounts = Discount::loadByBasket($basket, BitrixMainContext::getCurrent()->getSite()); // Применяем скидки $applyResult = Discount::apply($basket); // Если скидки были применены успешно, то выводим сумму со скидкой if ($applyResult === Discount::APPLY_RESULT_SUCCESS) { echo "Сумма заказа со скидками: ".$basket->getPrice(); } else { echo "Не удалось применить скидки"; } // Включаем обратно применение скидок на текущем уровне приоритетов DiscountCouponsManager::setApplyMode(DiscountCouponsManager::APPLY_MODE_FULL_DISABLE);
Обратите внимание, что данный пример демонстрирует работу с активными скидками для текущей корзины. Метод Discount::apply()
позволяет применить скидки к корзине, а метод DiscountCouponsManager::setApplyMode()
позволяет управлять режимом применения скидок на разных уровнях приоритета.
В приведенном примере сначала отключается применение скидок на текущем уровне приоритетов с помощью метода DiscountCouponsManager::setApplyMode()
, затем производятся операции работой с корзиной (в данном случае выводится сумма заказа), после чего применяются скидки к корзине с помощью метода Discount::apply()
. Если скидки успешно применяются, выводится сумма заказа со скидками, в противном случае выводится сообщение об ошибке. Наконец, после того как все операции выполнены, включается обратно применение скидок на текущем уровне приоритетов.