Commerce: как правильно изменить цены на товары в корзине [программно изменить цены]

Главные вкладки

Аватар пользователя Deleted_Deleted Deleted_Deleted 25 декабря 2012 в 21:04

Подскажите как правельно изменить цены на товары в корзине в зависимости от от ее общей суммы ?
Читал что это нужно сделать с помощью Rules. Но у меня на этом этапе возникают проблемы (не подходят условия из тех что есть и др.)
Можно ли программно изменить цены на товары в корзине?

Комментарии

Аватар пользователя Deleted_Deleted Deleted_Deleted 26 декабря 2012 в 1:00

За ответ спасибо, но изменяя цену line item (с сохранением ордера и самих line items) сумма корзины возвращается в изначальному состоянию. Видимо в модуле есть защита от прямого изменения цены.

Я говорю сейчас про хуки и программное изменение item-oв и корзины. Потому решил поступить как рекомендуют на сайте разработчика commerce.

Аватар пользователя Deleted_Deleted Deleted_Deleted 4 января 2013 в 18:56

Нашел решение.
После нескольких дней рытья в коде ядра commerce выяснилось, что цены сбрасывается в модуле commerce_cart в функции commerce_cart_order_refresh(), а вызывается она в commerce_cart_commerce_order_load() (реализация хука _commerce_order_load()).

В commerce_cart_order_refresh() после пересчета и исправления цен (исправляется base_price, если она не совпадает с ценой товара) происходит вызов всех реализаций hook_commerce_cart_order_refresh() вот тут то и можно производить изменения цены line_item.
Знаю что это не лучший вариант решения вопроса но я не разобрался как пользоваться ценами в commerce. Видел что есть тип цены discount но не понял как он срабатывает на программном уровне (какой должна быть цена чтоб добавился дисконт к общей цене).

Rules считаю уродством данного модуля, ведь он называется фреймворком для разработки решений для электронной коммерции. Ну конечно это мое личное мнение.

Может быть кто знает как использовать типы цен для формирования unit_price? поделитесь.