Есть интернет-магазин на Drupal Commerce. С помощью модуля flag к каждой позиции заказа (line item) может быть добавлен флаг "Готов к отправке". Нужно сделать так, чтобы если этот флаг установлен для всех позиций заказа, статус заказа изменялся на "Готов к отправке". Пытаюсь сделать через rules, но не могу понять как задать условие "если для всех позиций установлены флаги "готов к отправке"". Подскажите, как это можно сделать.
Комментарии
пробовал flagged-commerce-line-item:order:commerce-line-items:0 - проверяет только первую позицию. Можно ли вместо номера позиции сказать "все"?
надо использовать loop
Но ведь его можно использовать только в действии? А мне нужно задать условие
flagged-commerce-line-item:order:commerce-line-items:1 - проверяет вторую?
верно. в loop пробегайте по line-items, используя отдельный компонент (у которого помимо входного параметра lime-items будет произвольная переменная), где проверяете состояние флага. если флаг не стоит, присваиваете переменной "1". далее в основном правиле добавляете еще один компонент, который проверяет ту самую переменную. если 0, то меняем статус. может даже можно как-то упростить.. но пока вот только это в голову пришло.
Раньше не работал с компонентами Rules. Не могли бы вы более подробно расписать что куда добавлять? Либо подсказать толковый ман по компонентам на русском языке.
Составление компонента почти ничем не отличается от обчного правила. Посмотрите скринкасты по тому же коммерцу с использованием правил. их довольно много. попробуйте составить парочку сами самых простых.
А вообще под вашу задачу достаточно было бы написать простенький модуль. Если модули еще не писали, то это была бы прекрасная возможность научиться это делать.
модули писал и хотел решить эту задачу модулем, но раз установлен rules, который это умеет, логичнее было бы использовать его