выводимых в каталоге?
я предполагаю да. Потому что в компонент каталога передаю цену, которая необходима (по городу), а там в параметрах \Bitrix\Catalog\Product\Basket::addProduct не указан тип цены. Плохое будет решение перебирать корзину и устанавливать тип цены каждой позиции? На событии естественно перед сохранением корзины
не сработает. обработчик на OnGetOptimalPrice ставьте.
На это событие стоит обработчик. Залогировал, тип цены проставляется правильный. возвращаю в функции return [ 'DISCOUNT_PRICE' => $price, 'RESULT_PRICE' => [ 'ID' => $arProductPrices[$arPriceType[SET_PRICE_ID]]['ID'], 'PRICE_TYPE_ID' => SET_PRICE_ID,//ID типа цены 'BASE_PRICE' => $priceBase,//исходная цена 'DISCOUNT_PRICE' => $price,//цена со скидкой 'CURRENCY' => 'RUB',//валюта результата ], ]; где SET_PRICE_ID - идентификатор типы цены (в логах приходит) priceBase - базовая цена товара price - цена по типу цены https://yadi.sk/i/WBaEvINOO1gePA - правило корзины
в записи корзины какой тип проставлен в итоге?
1, а нужен 3. Но getOptimalPrice на вывод же работает цен,а не на пересчет корзины. Может в корзине надо тип цены по позициям поменять?
Там изначально проблемы со скидками в корзине были и их применении. если разные города, то вероятно это не группы юзера, а динамическая подстановка типа цены от поддомена. Или я туплю, или это совсем не туда. Решить это можно только одним способом, - это дописывание своих данных в свойство товара и свои обработчики в правила корзины (используя те самые данные). Или я координально не прав и указание условного типа цены в корзине (ИД) никогда его (этот ID типа цены) не изменит (например при пересчета заказа в админке, или если человек вернется в корзину через неделю)?
С точностью до наоборот. Для показа не участвует, для корзины и заказа - работает
переделал. Убрал из getOptimalPrice и сделал тот же пересчет перед изменение корзины (цены сейчас актуальные в корзине, типы цен тоже). getOptimalPrice тоже убрал вообще. Но в корзине по прежнему скидки нет. Она же должна приходить, если в позициях корзины стоит тип цены, который соответствует правилу корзины?
а скрин есть с настройками скидки?
https://yadi.sk/i/c44d1rcO06XAWw Там есть поле "товар в корзине" и поле "товар" Если проставить товар, то в каталоге выводится скидка, но когда в корзину ложится, скидка не применяется.
это все потому, что в корзине нельзя условие для типа цены сделать (именно та что в корзине)
Смысл от этой скидки тогда не вижу, если она не применяется после оформления заказа.
и я сразу написал первым ответом, что это так просто не решается. Вас повели скорее в другом направлении но это не 100% логики проекта я не видел. догадка из задачи. т.к. решать ее (по степени похожести) приходится часто
тип цены указан в корзине в позициях правильный.
почему нельзя? штатно разве не так работает? у меня тут на 1 проекте как раз такая скидка и в корзину летела
Я и хотел на скрине глянуть как это делается :)
свойство товара(позиции) в корзине нет (именно те свойство что добавляются), по ценам и полям записи в корзине вроде тоже нет возможности. не проверял на последней версии (может уже есть)... Но и скрина не увидел
суть в том, что тип цен товара в каталоге != типу цены товара в корзине
В ТП тогда с доступом. Вот 100% вероятность, что тип цены - нет тот.
Обсуждают сегодня