У меня стоит задача применять к товару три вида цен: для обычных пользователей - базовая цена, для пользователей группы Оптовики - цена оптовая, и для пользователей группы Оптовики - цена Опт от 3-х - если товара в корзине больше трех штук. Первые два вида цен не вызывают никаких проблем - привязала их к группа и все. А вот третья цена - никак не могу найти решение. Проблема еще в том, что к товарам в корзине применяется много скидок и нужно сохранить работу функционала по применению этих скидок, поэтому предложение техподдержки использовать событие OnSaleBasketItemBeforeSaved и 'CUSTOM_PRICE' = 'Y' мне не подходит, потому что там возвращается фиксировання цена и правила корзины перестают работать. Пробовала использовать событие OnGetOptimalPrice - но у меня оно почему-то не срабатывает (делала, как описано тут) . Еще есть способ использовать свой провайдер цен, но здесь я не совсем понимаю, что и куда нужно писать - не хватает опыта. Помогите мне, пожалуйста, кто знает как правильнее решить эту проблему, может есть другой способ? Или подскажите, как правильно использовать свой провайдер цен? Пробовала сделать как описано здесь, но у меня ничего не получилось...
Решила проблему через переопределение функции GetOptimalPriceList, в которой изменила правила выбора цены для товара. в файле bitrix/modules/catalog/lib/product/catalogprovider.php изменила вызов этой функции, но при обновлении эти изменения затрутся, подскажите, пожалуйста, как правильнее сделать вызов этой функции?
Так, как Вы показали на картинке, вроде похоже на то, что мне нужно, только у меня три типа цен, из них два - видны только определенным группам покупателей.
Допустим, я удалю третий тип цены, оставлю два, во втором типе внесу значение цены "от 3 шт", тогда в базовой цене можно оставить поле "от 3" пустым или дублировать значение с поля "до 3"?
Попробовала использовать этот способ, но у меня возникает проблема такого плана:
базовая цена не всегда больше оптовой
Получается, что Оптовик может купить товар по базовой цене, если она меньше оптовой, но он не должен иметь такой возможности в битриксе всегда выбирается меньшая цена по-умолчанию среди всех типов цен
а нужно, чтобы пользователи группы Оптовики могли купить товар только по Оптовой цене (и если больше трех - по цене Опт от 3х)
все остальные пользователи должны иметь возможность покупать товар только по базовой цене не зависимо от количества товара
через переопределение функции GetOptimalPriceList все работает так, как надо
только остается вопрос, как можно вызвать эту функцию в файле bitrix/modules/catalog/lib/product/catalogprovider.php, чтобы при обновлении это не затиралось..
читала, что можно как-то использовать свой провайдер цен, но не совсем понимаю, что куда и где нужно прописывать для этого...
Да, повозилась с настройками прав - получилось настроить так, чтобы по базовой цене покупали только те, кто в группе Розница, а по цене Опт - те, кто в группе Оптовики.
Тогда встает вопрос такого плана: если у меня два типа цен, и цена первого типа для разного количества одинаковая, а цена второго типа зависит от количества, то мне нужно указывать только вторую цену для диапазона количества, или первую тоже нужно везде проставлять одинаковую?