Всем привет
2 дня поисков и мытарств увенчались успехом.
Поскольку нормального описания как это сделать в интернете так и не нашёл выкладываю своё. Уверен кому-то пригодится.
Создаём правило.
Event
Расчёт стоимости товара
Условия
Сущность имеет поле:
Сущность: [commerce-line-item], Поле: commerce_product
Сущность имеет поле:
Сущность: [commerce-line-item: commerce_product], Поле: field_optprice:
Значение отсутствует с галочкой обратить
Параметр: Данные для проверки: [commerce-line-item:order:commerce-order-total
Price comparison Параметр: First Price: [commerce-line-item:order:commerce-order-total, Оператор: >=, Second Price: 7 500,00 руб.
Действия
Цикл проходит по всем элементам корзины и меняет стоимость за единицу
Цикл
Параметр: Список: [commerce-line-item:order:commerce-line-items
Элемент списка: Текущий элемент списка (list_item)
Заменить стоимость за единицу указанным значением
Параметр: Строка: [commerce-line-item], Сумма: [commerce-line-item:commerce-product:field-optprice:amount
Следующие 2 действия нужны для обновления общей стоимости в корзине
Вычислить значение
Параметр: Входящее значение 1: [commerce-line-item:quantity], Оператор: ( * ), Входящее значение 2: [commerce-line-item:commerce-unit-price:amount
Предоставляет переменные: Результат вычисления (result)
Установить значение
Параметр: Данные: [commerce-line-item:commerce-total:amount, Значение: [result]
Правда возникла одна жирная проблема, если наименований в корзине больше пары сотен, сайт начинает тормозить,
как оптимизировать - не придумал. Если кто-то подскажет решение или поможет за денюшку - буду рад.
Если что-то не понятно
вот экспорт
"LABEL" : "rule to change price",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [
"rules",
"commerce_price",
"commerce_line_item",
"commerce_product_reference"
],
"ON" : { "commerce_product_calculate_sell_price" : [] },
"IF" : [
{ "entity_has_field" : { "entity" : [ "commerce-line-item" ], "field" : "commerce_product" } },
{ "entity_has_field" : {
"entity" : [ "commerce-line-item:commerce-product" ],
"field" : "field_optprice"
}
},
{ "NOT data_is_empty" : { "data" : [ "commerce-line-item:order:commerce-order-total" ] } },
{ "commerce_price_compare_price" : {
"first_price" : [ "commerce-line-item:order:commerce-order-total" ],
"operator" : "\u003E=",
"second_price" : { "value" : { "amount" : 750000, "currency_code" : "RUB" } }
}
}
],
"DO" : [
{ "LOOP" : {
"USING" : { "list" : [ "commerce-line-item: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" : [ "commerce-line-item" ],
"amount" : [ "commerce-line-item:commerce-product:field-optprice:amount" ],
"component_name" : "base_price",
"round_mode" : "1"
}
}
]
}
},
{ "data_calc" : {
"USING" : {
"input_1" : [ "commerce-line-item:quantity" ],
"op" : "*",
"input_2" : [ "commerce-line-item:commerce-unit-price:amount" ]
},
"PROVIDE" : { "result" : { "result" : "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f" } }
}
},
{ "data_set" : {
"data" : [ "commerce-line-item:commerce-total:amount" ],
"value" : [ "result" ]
}
}
]
}
}