Как Вы наверное знаете,
в VirtueMart существует достаточно гибкая
система скидок. Вы можете устанавливать
скидки на товары в процентном соотношении
и выводить покупателю надпись вида «Вы
экономите 10%» или же в абсолютном значении
«Вы экономите 500 руб.»
Эти скидки могут быть
как постоянными, так и ограниченными
временными рамками.
Также Вы можете
устанавливать скидки основываясь на
принадлежности покупателя к той или
иной группе. Например, Вы создаете группу
«постоянные покупатели» и присваиваете
ей скидку в размере 15%. Соответственно,
когда пользователь авторизуется на
сайте, он уже будет видеть «свои» цены
на товар, что достаточно удобно.
Но иногда возникает
следующая ситуация:
Пользователь принадлежит
к группе «постоянные покупатели» и уже
получает товар со скидкой в 15%, а владелец
магазина, желая привлечь побольше новых
покупателей в свой магазин, делает
акционную цену (-15%) на некоторые товары.
В итоге, у пользователей принадлежащих
к группе «постоянные покупатели» цена
акционных товаров будет снижена на 30%
что, как Вы понимаете, не совсем
соответствует намерению владельца
магазина (так-как суть акции заключалась
в привлечении новых покупателей, а не
распродаже товара по бросовым ценам.)
К сожалению, управление
скидками в VirtueMart не предоставляет
возможности регулирования данной
ситуации стандартными средствами
магазина. Поэтому, разбираться с ситуацией
применения двойной скидки в VirtueMart, нам
придется самостоятельно.
Все нижеизложенное,
справедливо для VirtueMart 1.14, хотя возможно
и применимо для более поздних версий
магазина.
1) Первым делом, нам
необходимо узнать shopper_group_id группы
«постоянные покупатели»
Для этого заходим в
административную часть сайта. Переходим
к компоненту VirtueMart.
Открываем вкладку
«Покупатели», затем выбираем «Группы
покупателей». В открывшемся окне выбираем
нашу группу. Обратите внимание на строку
браузера.
Как Вы видите у меня
shopper_group_id = 8
2) Открываем файл
/administrator/components/com_virtuemart/classes/ps_product.php
ищем метод
getPriceByShopperGroup находим строку
$price_info["product_price"]= $db->f("product_price") * ((100 - $auth["shopper_group_discount"])/100);
И меняем на:
$discount_info = $this->get_discount( $product_id );if ($discount_info [amount] > 0 and $auth[shopper_group_id] == 8){$price_info["product_price"]= $db->f("product_price");}else{$price_info["product_price"]= $db->f("product_price") * ((100 - $auth["shopper_group_discount"])/100);}
Таким образом группа
«постоянные покупатели» будет видеть
«свои» цены на все товары, но стоимость
акционных товаров для них будет такая
же как и для других покупателей.
Добрый день! А как это применить, если таких групп несколько?
ОтветитьУдалитьДобрый. Просто измените условие
ОтветитьУдалитьif(...)
согласно Вашим требованиям.
Спасибо огромное! Помогло! Только удалил
ОтветитьУдалитьand $auth[shopper_group_id] == 8
чтобы распространялось на все группы покупателей.