Вы здесь

Как правильно рассчитать цену товара по сумме заказа?

0

Добрый вечер.
Drupal 7, Drupal Commerce, Rules, Commerce Rules Extra

У товаров есть две цены: Базовая и Оптовая.
Есть правило, которое при достижении суммы заказа в корзине в 5000 рублей меняет базовую стоимость на оптовую:

Проблема:
При добавлении в корзину товара на 5000+ рублей стоимость товаров и итоговая стоимость заказа пересчитываются только после следующего обновления страницы. Сначала всё идёт с Базовой ценой, а после обновления или добавления нового товара - пересчитывается на оптовую.

Так как сравнение у меня идёт по commerce-order-total, предполагаю, что тот момент, когда я ожидаю увидеть в корзине уже пересчитанные цены, корзина ещё не имеет значения "итого" (или оно ещё не вышло за границу 5000), чтобы применить правило. Только после добавления ещё одного товара или обновления страницы (когда итого уже посчиталось) всё становится на свои места.

Подскажите, пожалуйста, что можно сделать, чтобы избежать этой ошибки?

Чувствую, что тут нужно что-то делать с ruleset (никогда не имел опыта в этом) или вместо сравнения с итоговой суммой заказа сравнивать с предварительно просуммированной стоимостью всех помещённых в корзину товаров (хотя не факт что сработает, так как непонятно будет ли на момент расчёта товар уже в корзине, или только "на пути" в корзину).

Помогите, пожалуйста.
Очень плохо понимаю rules.

Версия Drupal: 
7.x
Связанные проекты: 
Drupal CommerceRules
Вопрос задан 25.06.2017 - 22:22
Аватар пользователя Quty
Quty
27

Попробуйте вызвать commerce_cart_order_refresh(...) после добавление товара в корзину.
Не проверял.

Комментарий оставлен 25.06.2017 - 22:49

commerce_cart_order_refresh($commerce_order);
Сработало! Спасибо большое!
Напишите комментарий ответом - помечу правильным.

Комментарий оставлен 25.06.2017 - 23:49

Ответы