У товара есть 3 колонки цен: розничная, от 5000 р., от 10000 р. Если общая сумма заказа меньше 5К - используем первую цену, от 5К до 10К - вторую цену, свыше 10К - третью цену.
Попробовала реализовать через правила. Проверяю итоговую сумму в корзине и если она попадает в нужный диапазон - заменяю цену:
Вроде бы всё хорошо. Проблемы начинаются при пересчете корзины, если меняется количество товара. Пример: товар ТЭН стоит 1000 р. в розницу, 970 рублей, если сумма заказа больше 5К и 950 рублей, если сумма заказа больше 10К. Второй товар Подводка всегда стоит 100 р. (не имеет скидок) - добавлен для "чистоты эксперимента", чтоб гарантировано попасть в диапазон.
Покупаем 8 ТЭНов:
Общая сумма без учета скидки 8*1000+100=8100, попали - берем цену на ТЭН 970 р. Всё замечательно.
Меняем количество ТЭНов на 10 и нажимаем "Пересчитать содержимое корзины". Видим следующее:
Хотя общая сумма без учетов скидки 10*1000+100=10100, применяется всё та же цена 970 р., хотя должна бы уже быть 950 р. Видимо, так считается потому, что после применения первой скидки общая сумма корзины меньше 10К.
А вот если при собирании корзины сразу ввести 10 ТЭНов - то всё в порядке:
Как заставить правило опираться при пересчете цены на изначальную цену (base-price), а не промежуточную со скидкой?
Я первый раз использую Rules. Понимаю, что копать надо куда-то в сторону компонент, чтоб добраться в селекторе до составляющей base-price, но не понимаю, как именно это сделать.
Комментарии
1. Создайте условие в правиле . Базовую цену ищите среди токенов.
А подробнее можно? Что значит "Базовую цену ищите среди токенов"? Где именно искать? При создании именно условия - искала, не нашла. Или всё же компонента должна быть создана?
Попробуйте сперва задать условие "Если содержимое равно ваш тип товара". Или "Если тип товара равен Ваш тип товара" даже если Вы используете всего один тип товара. Я когда задавал такое условие, то после него появлялись токены присущие моему типу товара. Нигде это явно не описано, даже на сайте Соммерсе.
надеюсь это поможет найти токены базовой цены.
Эти условия заданы - можно видеть на первом скрине из приложенных. Но до базовой цены после этого я долезть так и не смогла.
Сейчас к себе зайду гляну....
А что , если попробовать создать акцию через "Настройки Магазина->акции->скидки"(admin/commerce/store/discounts)?
Создать акциию с $off или %off без дат начала и конца акции. Получится уже практически готовое правило. Которое можно отыскать также и в "Настройки магазина->правила ценообразования"(/admin/commerce/config/product-pricing) и добавить туда условие на цену?
Вы предлагаете использовать модуль Commerce Discount?
Можно попробовать, конечно. Но не приду ли я к тому же самому?
Есть у кого-нибудь ещё идеи, как добраться до базовой цены?
А вот commerce-line-item:commerce-unit-price: не она ли, цена базовая??
Насколько я понимаю, commerce-line-item и общее содержимое корзины - это не одно и то же. В любом случае, попробовала так - скидки вообще перестали работать.