Добавить в CCatalogProduct::GetOptimalPrice поля товара.

Рейтинг: 0.5716  
На голосовании
Предложил Нагайцев Виктор 22.10.2015 16:42:50

Добавить в CCatalogProduct::GetOptimalPrice поля товара.

В CCatalogProduct::GetOptimalPrice должны также приходить поля товара. Так как бывает что  цена торгового предложения генерируется исходя из его полей. Столкнулся с задачей: нужно добавлять торговые предложения с одним и тем же ID, но разными свойствами (от которых зависит цена которую пересчитываю в  AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice";);) и так как туда приходит только ID товара не возможно отличить одно ТП от другого и как результат у них одна цена на всех. А если бы приходили ещё и поля, то проблемы не было бы никакой.
Рейтинг: 0  
Ответил Жуков Евгений 22.10.2015 19:58:35
Не должны. По ID предложения Вы можете получить всю необходимую информацию в своем обработчике. Внедрение Вашего предложения сильно замедлит работу метода.

Рейтинг: 0  
Нагайцев Виктор 26.10.2015 11:22:47
По ID предложения Вы можете получить всю необходимую информацию в своем обработчике
В том и дело что не могу. Что случается если мы добавляем товар с тем же айдишником, но другим значением свойства? Правильно, он падает в корзину как отдельный товар. А теперь представим, что от этого свойства(из-за которого он у нас и упал как отдельный товар) зависит цена. Для этого я и переопределяю GetOptimalPrice . Функция вызывается для каждого товара отдельно. И как же я сам смогу получить информацию для какого конкретно товара сейчас выполняется функция? С значением характеристики 100 или 200? ID то у них одинаковый, а характеристики не приходят! Выходит никак и они для меня идентичны и я не смогу в обработчике понять кому выставить какую цену. Тут напрашивается выход - использование торговых предложений, но у этой системы есть свои ограничения:
1) Торговые предложения уже могут использоваться для каких-то других зависимостей  и есть необходимость "торгового предложения внутри торгового предложения".
2)В моём случае свойство которое влияет на цену, это значение введённое в input, имеет границы от 100 до 10 000. 9 900 ТП для каждого товара немножко перебор, как мне кажется.
Внедрение Вашего предложения сильно замедлит работу метода.
Это аргумент. Так как указанные мной ситуации достаточно частные, но всё же не единичные даже в моей практике и имеют место быть.
Рейтинг: 0  
Жуков Евгений 26.10.2015 12:57:50
В такой ситуации необходимо наследовать класс провайдера и менять логику в нем - в провайдер приходит ID позиции корзины, по которым Вы получите характеристики.
Рейтинг: 0  
Нагайцев Виктор 26.10.2015 13:46:39
Понятно, что для любой проблемы можно найти решение. В моём случае, я отказался от этого обработчика в пользу CUSTOM_PRICE. Но это уже модификации и суть идеи в том, чтобы всё было доступно без допилов :)
Рейтинг: 0  
Жуков Евгений 26.10.2015 14:35:46
Пока не планируется.