Изменить доступное количество товара при добавлении в корзину Bitrix PHP

Есть переменная в куки пользователя (принимает значения 1 и 2), в зависимости от значения должно срабатывать ограничение на добавление в корзину. К примеру, если значение 1, то запрещает добавлять более 4-х товаров, если значение 2, то больше 2-х.

Пытаюсь реализовать с помощью события

AddEventHandler("sale", "OnBeforeBasketAdd", "MyOnBeforeBasketAdd")

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

Товар "Название товара" уже добавлен в корзине в количестве 2. Можно добавить не более 4
Где 4 это доступное количество.

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

class CustomCatalogProvider extends Bitrix\Catalog\Product\OriginalCatalogProvider
{

   protected static function getCatalogProducts(array $list, array $select)
   {
      $resultList = parent::getCatalogProducts($list, $select);

      $iterator = \Bitrix\Catalog\StoreProductTable::getList([
         'filter' => [
            '=PRODUCT_ID' => array_keys($resultList),
            'STORE_ID' => getStoreId(),
         ],
      ]);

      while($row = $iterator->fetch())
      {
          $resultList[$row['PRODUCT_ID']]['QUANTITY'] = 0;
      }

      return $resultList;
   }

}

Нужна Ваша помощь, возможно есть другие способы


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