Commerce Order + Rules - перерасчет цен

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

Аватар пользователя ArmRus ArmRus 27 августа 2012 в 12:14

Здравствуйте. У меня возникла проблема с освоением Rules.
Задача такая, если в корзине сумма заказа превышает 10к то пересчитать цены(использовать другое поле цены)
Проблема возникла на втором шаге(может я и первый не так сделал)
1.Select the condition to add - выбрал Cart -> order is a shopping cart
2.Выбираю commerce-line-item:commerce-total:amount (amount вписываю т.к. не выпадает) - и не могу продвинуться дальше, выдает ошибку The data type of the configured argument does not match the parameter's commerce_order requirement.
______
Где я ошибся?
заранее благодарю

Комментарии

Аватар пользователя aa2007 aa2007 27 августа 2012 в 15:44

Events: После добавления товара в корзину
Условия: Сравнение данных — commerce-order:commerce-order-total:amount, Оператор: больше, чем, Значение: 100000
Действия: Показать сообщение на сайте — В корзине товаров на сумму: [commerce-order:commerce_order_total]

Аватар пользователя imarat imarat 28 августа 2012 в 0:46

не понял, но делать надо так
1.событие - товар добавлен в корзину
2. условие сайт-курент карт ордер, ордер тотал > N. тут наверно еще понадобиться энтити хез филд - поле со второй ценой

3. добавляем цикл (loop) по сайт, курент карт ордер, лийне итемз, и установить значение из референс продакт

Аватар пользователя Deleted_Deleted Deleted_Deleted 27 декабря 2012 в 16:20

imarat wrote:
не понял, но делать надо так
1.событие - товар добавлен в корзину
2. условие сайт-курент карт ордер, ордер тотал > N. тут наверно еще понадобиться энтити хез филд - поле со второй ценой

3. добавляем цикл (loop) по сайт, курент карт ордер, лийне итемз, и установить значение из референс продакт

Вот третий пункт не совсем понятно. Луп как добавить ясно а вот что такое «установить значение из референс продакт»?
Я после создания цикла добавляю внутрь цикла action, в первом селекторе выбираю машинное имя лупа который создал раньше, и проставляю фиксированное значение которым нужно заменить цену line_item-а ()для експеремента. Изменения цены на items в ордере не происходить.

Вот моя конфигурация. Может я чтото не правельно делаю?

{ "rules_salse_2" : {
    "LABEL" : "salse_2",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "commerce_payment", "rules", "commerce_line_item", "commerce_cart" ],
    "ON" : [
      "commerce_cart_product_add",
      "commerce_cart_product_prepare",
      "commerce_cart_product_remove"
    ],
    "IF" : [
      { "commerce_payment_order_balance_comparison" : {
          "commerce_order" : [ "site:current-cart-order" ],
          "operator" : "\u003E=",
          "value" : "100000"
        }
      },
      { "entity_has_field" : { "entity" : [ "commerce-product" ], "field" : "field_wholesale_price_1" } }
    ],
    "DO" : [
      { "LOOP" : {
          "USING" : { "list" : [ "site:current-cart-order:commerce-line-items" ] },
          "ITEM" : { "list_item" : "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430" },
          "DO" : [
            { "commerce_line_item_unit_price_amount" : {
                "commerce_line_item" : [ "list-item" ],
                "amount" : "10",
                "component_name" : "base_price",
                "round_mode" : "1"
              }
            }
          ]
        }
      }
    ]
  }
}
Аватар пользователя ArmRus ArmRus 3 сентября 2012 в 14:01

"imarat" wrote:
не понял, но делать надо так
1.событие - товар добавлен в корзину
2. условие сайт-курент карт ордер, ордер тотал > N. тут наверно еще понадобиться энтити хез филд - поле со второй ценой

3. добавляем цикл (loop) по сайт, курент карт ордер, лийне итемз, и установить значение из референс продакт


спасибо. Попробую отпишусь.

Аватар пользователя ArmRus ArmRus 11 сентября 2012 в 13:26

Вот сделал для ролей по подобной структуре(все то же только первое условие

User has role(s)
Parameter: Пользователь: [site:current-user], Роли:Спец. цена, Match roles: любой

далее

Entity has field
Parameter: Entity: [commerce-product], Поле: field_spec

В Actions дбавил

Loop
-Parameter: Список: [site:current-cart-order:commerce-line-items]
-List item: Текущий элемент списка (list_item)
---------Set a data value
---------Parameter: Данные: [list-item:commerce-unit-price], Значение: [commerce-product:commerce-price]

В итоге никаких ошибок, никаких изменений в цене....я опять где-то ошибся?