Нужное поле не появляется в селекторе данных Правила (Rules)

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

Аватар пользователя s_bikey s_bikey 28 июля 2014 в 18:20

Пробую создавать свои правила (rules), но когда дело доходит до создания некоторых условий (например, проверить чтобы цена была больше 500 руб или проверить заполнено ли определенное, необязательное поле) то здесь наступает ступор.
В условии нужно выбрать из селектора данных нужное поле для сравнения или проверки, но оно там отсутствует. На различных сайтах нашел одно и то же решение - создать условие "Сущность имеет поле" и выбрать нужное поле, но оно почему-то не срабатывает. Создаю условие "Сущность имеет поле" -> выбираю нужное мне поле -> сохраняю. Создаю новое условие (например, Сравнение данных) -> раскрываю список селекторы данных и... нет нужного поля.
Что не так? Может у кого завалялся какой-нибудь русскоязычные мануалы или ссылочка на описание подробной проблемы.
Сразу предупреждаю, что честно искал несколько вечеров - по форумам и тематическим сайтам. Помогите советом, пожалуйста. Smile

Комментарии

Аватар пользователя drupby drupby 28 июля 2014 в 19:09

"s_bikey" wrote:
В условии нужно выбрать из селектора данных нужное поле для сравнения или проверки, но оно там отсутствует.

ну во-первых никто не в курсе какой event у вашего рулеса, а во-вторых надо было бы добавить условие вначале по типу материала

Аватар пользователя s_bikey s_bikey 28 июля 2014 в 20:16

event - Расчёт стоимости товара. В списке селекторов - 'site:', 'commerce-line-item:' и 'commerce-line-item-unchanged:'.
Скорее всего я не так применяю events. Т.к. не могу найти что и для чего, приходится исходить из названия и пытаться понять как что работает...

P.S. по моим меркам, задача стоит элементарная, но вот её решение дается трудно.
Для справки - задача следующая: Нужно сделать скидку пользователям роли "VIP" в 3%, но не делать скидку на товар, у которых есть поле "старая цена".

Аватар пользователя drupby drupby 28 июля 2014 в 22:09

а я бы как то так сделал

function MYMODULE_commerce_product_calculate_sell_price_line_item_alter($line_item) {
  global $user;
  $product_id = $line_item->commerce_product['und'][0]['product_id'];
  $product = commerce_product_load($product_id);
  if (!empty($product->field_old_price) && in_array('vip', $user->roles)) {
    $price = &$line_item->commerce_unit_price['und'][0]['amount'];
    $price = $price * .97 ;
  }
}

смотря на этот код, можно понять, что в рулес нужно сделать