Уважаемые знатоки помогите пожалуйста решить задачку, а точнее ее часть.
Нужно кастомное поле в Commerce Product "Количество покупок" увеличивать на 1 при событии в Rules "Завершения процесса оформления".
Я на полпути решения: создал Компонент в Rules который ищет сущность которая имеет поле "Количество покупок". К полю додается + 1, данные сохраняются в переменную, а потом полю присваиваться значения переменной.
Если создаю Rule по событию "После добавления товара в корзину", мне удается запустить Компонент, который делает арифметическое действие.
Но мне нужно связать commerce-order и Product. Читал аналогические 2 посты на форуме ( раз наверное 100). Ребята подробно описывают проблему 1 в один как моя. Написана логика решения в общих чертах. Но без реального примера, я уже несколько дней не могу решить эту задачку.
Догадываюсь, что нужно сделать еще одну компоненту, которая связывает сущности commerce-line-items, commerce-order и Product. Но не знаю как это сделать.
Помогите пожалуйста, дельными советами, скриншотами?
Комментарии
Не верю, что никто не решал данную проблему?
У вас в commerce-order будут сущности commerce-line-item, фактически при добавлении товара в корзину (заказ) - туда создаются и добавляются сущности Commerce Line Items, и у них есть ссылка на сущность Commerce Product.
Что-то вроде commerce-order:commerce-line-item:commerce-product должно быть.
Загружайте сущности по ID:
- лайн-айтем от заказа (лайн-айтем содержит ID заказа)
- товар от лайн айтема (лайн-айтем содержит SKU товара)
Дальше, манипулируйте полями. Для этого, либо добавьте проверку на наличие поля у сущности, либо проверку на бандл сущности (после этого станут доступны все поля сущности).
Есть модуль для добавления условий непосредственно в экшны, удобнее чем городить компоненты, если их, конечно, не нужно переиспользовать. Как минимум, проверки на бандл, облегчает.
Не забывайте сохранить сущность после всех изменений.
Можете ознакомится с фц-лом правил по статейкам отсюда.
Добрый вечер! Спасибо за подсказки. Таким способом хотел реализовать платное голосование за конкурсанта (ноду) - пользователь нажимает внизу ноды (представлении товара) кнопку купить, которая имеет метку "Проголосовать" и при завершении заказа, должно количество голосов в поле "Проголосовало" быть +1.
Пока отказался от этого алгоритма в пользу Commerce License (можно фактически покупать роль пользователя или доступ к для скачивания файла), но там правда нужно больше шагов сделать: купить товар-лицензию, которая автоматически может присваивать роль пользователю, потом нужно вернуться фактически на ноду и уже нажать "Головать" как пользователь с правами доступа к голосованию (например, право голосовать с помощью Vote up/down).
Со временем буду совершенствовать - уменьшать количество шагов. Поэтому большое спасибо за подсказки!