Как в Битрикс отменить все скидки, если товары в корзине из разных разделов?

В 1C-Bitrix есть несколько способов отменить все скидки, если товары в корзине находятся в разных разделах. Вот два из них:

  1. С использованием свойства товара "Скидка"
  • Откройте административную панель Bitrix и перейдите в каталог товаров.
  • Найдите нужный товар и откройте его для редактирования.
  • В разделе "Дополнительные свойства" найдите свойство "Скидка" и удалите значение этого свойства.
  • Сохраните изменения.
  • Повторите этот процесс для каждого товара в корзине, который находится в разных разделах.
  1. С использованием компонента "sale.order.ajax"
  • Откройте файл шаблона корзины (обычно это файл "sale.basket.basket" или "sale.order.ajax").
  • В коде компонента найдите место, где выводится информация о товарах в корзине.
  • Добавьте код, который будет проверять раздел товара и отменять скидку, если он находится в разных разделах.
  • Пример кода на PHP, который проверяет раздел товара и отменяет скидку:
foreach ($arResult["ITEMS"]["AnDelCanBuy"] as $key => $arItem) {
   $sectionPath = CIBlockSection::GetNavChain(false, $arItem["PRODUCT_IBLOCK_SECTION_ID"]);
   $sections = array();
   while ($section = $sectionPath->Fetch()) {
      $sections[] = $section["ID"];
   }
   // Проверяем, есть ли разделы товара
   if (count(array_unique($sections)) > 1) {
      $arResult["ITEMS"]["AnDelCanBuy"][$key]["DISCOUNT_PRICE"] = 0; // Отменяем скидку
   }
}

После добавления этого кода сохраните файл и проверьте работу корзины. Теперь все скидки будут отменены для товаров, находящихся в разных разделах.

Оба этих подхода позволяют отменить скидки для товаров в корзине, находящихся в разных разделах. Выберите тот, который наиболее удобен для вас и соответствует вашим требованиям.