Куда идем?

Интересно, что такая, казалось бы, простая задача, как добавление скидки отдельному товару, решается в Virtuemart 2 совершенно нетривиально. Из этого кейса вы узнаете, как легко и быстро добавить скидку отдельному товару.

Существует 2 варианта добавления скидки.

Вариант 1. Переопределение окончательной цены

  1. Идем в настройки товара, которому хотим добавить скидку.
  2. В поле «Override» устанавливаем окончательную цену(цену со скидкой) и отмечаем опцию «Переписать окончательно».

Virtuemart 2. Как добавить скидку отдельному товару.

После выполнения этих действий на сайте видим новую цену и размер скидки в абсолютные единицах валюты.

Virtuemart 2. Как добавить скидку отдельному товару.

Этот вариант можно использовать, но он не очень удобен, когда требуется установить скидку в процентах от первоначальной цены. Придется сначала рассчитать конечную цену, а только после этого обновить ее в настройках товара.

Существует и второй вариант, гораздо более удобный, но совершенно неочевидный.

Вариант 2. Добавление скидки через «Налоги и правила рассчета»

На сайте есть статья, в которой подробно описывается раздел Virtuemart 2 «Налоги и правила расчета». В ней можно найти информацию о данном разделе и узнать о ценообразовании в Virtuemart. Но статья не затрагивает тему, как назначить скидку отдельному товару.

    1. Идем менеджер категорий Virtumart и создаем новую категорию с названием «Скидка 10%». Категорию сохраняем, но оставляем неопубликованной!
    2. Идем в «Налоги и правила расчета» и создаем новое правило с названием «Скидка 10%».
    3. В опции «Вид расчета» выбираем «Цена после уплаты налогов».
    4. В опции «Операция» выбираем «-%».
    5. В опции «Значение» вводим «10».
    6. В опции «Категории» выбираем категорию «Скидка 10%», созданную в п.1.
    7. Сохраняем.

Virtuemart 2. Как добавить скидку отдельному товару.

    1. Идем в настройки  товара, которому хотим добавить скидку.
    2. В опции «Окончательная цена» выбираем созданное правило «Скидка 10%».

 Virtuemart 2. Как добавить скидку отдельному товару.

  1. Сохраняем и проверяем на сайте.

Virtuemart 2. Как добавить скидку отдельному товару.

Что мы сделали? Мы создали скрытую категорию, которая отвечает за определенную скидку. После этого правило можно применить к отдельному товару, не добавляя его в дополнительную категорию. До этого сложно самостоятельно догадаться.

Аналогичным образом можно создать несколько правил для разных скидок или наценок и легко и быстро добавлять их отдельным товарам.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
1
в обоих ваших примерах ошибки в отображении цен прямо на ваших же скриншотах

в первом случае цена у вас в долларах 4,99 цену по скидке видимо хотели поставить 1 доллар, а на странице товара отображается - 1 рубль, со скидкой 150 рублей ))) что явная типичная ошибка интернет магазинов.
как поставить скидочную цену в уе? чтобы она отображалась нормально в пересчете на рубли (если магазин мультивалютный, часть товаров в руб, часть в у.е. основная валюта выбрана - российский рубль)

во втором случае не отобразилась у вас цена без скидки - цена со скидкой отображается равной цене без скидки.
0
Сергей, на первом скриншоте все верно. Если посмотрите внимательнее, под ценой в долларах уже установлена автоматически пересчитанная цена в рублях. Окончательную стоимость я установил в 1 руб. Соответственно, скидка составила разницу между начальной ценой в рублях и окончательной ценой.
Во втором случае тоже все нормально, только лишь перепутаны все названия для разных цен. Это проблема Virtuemart. Ее решение не представляется сложным. Достаточно просто изменить или скрыть названия цен и в общих настройках отметить галочкой базовую цену, чтобы она вывелась.
Чтобы задать скидку в долларах, при ее создании выбирайте соответствующую валюту, хотя для скидки в % валюта не имеет значания.
0
Спасибо, извращение с налогами помогло) но с джумлой всегда так=)
0
Гениально! Досконально! Превосходно! :lol:
0
Совсем весь мозг себе пере**ахал. Скидка применяется ко всем товарам и это даже в VM3 такая телега. Неужели нельзя было сделать что-то уже с этим в новой версии VM)))

Спасибо, бро! Вот как знал, что в 6 утра найду решение, точно найду и нашёл. Ты сделал мой день. Спасибо! :) Кармую))
0
Привет. Делаю как указано в варианте 2. Ставлю товару скидку 15%. Виртуемарт считает сумму правильно, но отображает в карточке товара "скидка: 17.62%" Откуда он их берет?
0
Андрей, по умолчанию VM не отображает скидку в процентах. Вы используете какой-то сторонний шаблон?
0
Пытался сделать так, как здесь описано, и как в статейке по ссылке. Все получается, но! У моего товара в карточке настраиваемыми полями выведены различные цвета (атрибуты корзины). Так вот, если сделать скидку 10% за 10 штук, то 10 зеленых кружек - скидка 10%, а вот если человек выберет 5 красных и 5 зеленых - скидки уже не получается. В корзине они считаются как разные товары, хотя заказаны из одной карточки. Можно как-то это побороть?
0
Максим, интересный вопрос... Никогда не думал в этом ключе. То, что в корзине это разные товары - логично, т.к. если доп. поле является атрибутом корзины, то оно уникализирует товар по свойству. Видимо это логика VM. Нельзя сказать, что она неправильная. Исправление скорее всего потребует хака. Также можно посмотреть в сторону предоставления скидки не в зависимости от количества купленного товара одного вида, а в зависимости от общей суммы в корзине.