Работа с ценами в VirtueMart 3 (часть 2)
Продолжаем настройку цен в virtuemart 3. В первой части мы рассмотрели основные настройки валюты и добавление цены к товару. В этой статье речь пойдет о добавлении налогов и правил расчета, настройке цен для разных групп пользователей и выводе скидки товара в процентах.
Налоги и правила расчета
В virtuemart можно очень гибко настраивать различные правила для цен (налоги, скидки). Каждое правило можно применить как к конкретному товару, так и к ко всем товарам категории или производителя. Кроме этого правило может работать только для определенной группы покупателей, страны, региона, что в сумме дает невероятную гибкость.
Для примера рассмотрим следующую задачу: Добавить +25% к стоимости всех товаров из оптового прайс-листа.
Для решения задачи в Virtuemart > Товары > Налоги и правила расчета создадим новое правило Наценка.
Для нашей задачи можно также выбрать Модификатор цены для выделения прибыли.
В карточке товара достаточно задать базовую (в нашем примере оптовую цену) в поле Цена и сохранить изменения.
По умолчанию к цене применится 2 правила:
Окончательная цена рассчитается автоматически и именно она будет показа на страницах магазина.
В выпадающем списке справа от цены можно выбрать какое-то одно правило или отключить все (Использовать без правил).
Настройка цен для разных групп пользователей
Иногда необходимо показывать разные цены для разных групп покупателей (например, у оптовых покупателей цена, как правило, отличается от розничной).
На нескольких примерах рассмотрим как в virtuemart настраиваются цены для разных групп.
По умолчанию в virtuemart настроено 2 группы покупателей: Группа гостевых покупателей (относятся все незарегистрированные пользователи) и Группа покупателей по умолчанию(автоматически присваивается всем зарегистрированным пользователям).
Для примера в Virtuemart > Заказы и покупатели > Группы покупателей создадим дополнительную группу покупателей Оптовики. Для покупателей этой группы ниже настроим показ специальной цены.
Показ цен только зарегистрированным покупателям
Для каждой группы можно настроить показ цен, выбрав чекбокс Включить отображение специальной цены группы покупателей. Если нужно показать цену только зарегистрированным пользователя, то в настройках Группа гостевых покупателей активируем показ специальных цен и деактивируем чекбокс Показать цены.
Здесь же можно более гибко настраивать какие именно цены показать данной группе.
Отдельные правила расчета для разных групп покупателей
Задача: автоматически делать скидку 5% на все товары для зарегистрированных пользователей.
В Virtuemart > Товары > Налоги и правила расчета создадим новое правило и укажем, что оно должно применяться только для Группы покупателей по умолчанию.
После этого при заходе на сайт зарегистрированного пользователя все цены будут уменьшены на 5%.
Этот же прием можно использовать для показа специальных цен оптовым покупателям (например, уменьшать для Оптовиков все цены на 15%).
Гибкая настройка цен для разных групп
Задача: Вручную указать цену на товар для группы пользователей Оптовики.
В настройках товара под блоком с ценой нажимаем кнопку Добавить новую цену.
После этого появится новый блок. Укажем новую цену и справа выберем группу покупателей, для которых эта цена будет показана.
Редактирование шаблона вывода цен и скидка в процентах
Для вывода цен в virtuemart 3 используется файл /components/com_virtuemart/sublayouts/prices.php.
Он подключается везде где нужно показать цену товара: в категории, карточке, модуле товаров.
Это очень удобно, ведь изменив один шаблон можно изменить вывод цен на всем сайте.
Вывод и работа с ценами в virtuemart очень продумана, не хватает только возможности показать скидку на товар в процентах.
Virtuemart 2 позволяет управлять ценами, налогами и скидками так, как никакой другой открытый компонент интернет-магазина для Joomla. Разработчики учли опыт прошлых лет, а также все те проблемы, которые возникали у пользователей и постарались создать абсолютно универсальную систему. Частично им это удалось. Почему частично? Дело в том, что универсальность всегда повышает сложность, как разработки, так и управления. Разобраться во всех тонкостях цен и правил расчета Virtuemart 2 получается далеко не сразу. В этой статье я постараюсь подробно раскрыть эту тему Virtuemart 2.
Цены в Virtuemart 2.
Первое, с чем следует разобраться, это ценообразование в Virtuemart 2. Казалось бы: что здесь сложного? Должно быть простое поле «Цена». Заполняем его, и сайт показывает цену товара. Но это только на первый взгляд. На самом деле есть много тонкостей, которые не приходят в голову при первом приближении:
Все эти аспекты приводят к тому, что использовать простое числовое поле для цен нельзя. Именно поэтому в Virtuemart 2 есть несколько типов цен. Они усложняют работу с магазином, но дают ему огромную гибкость. Поговорим о них подробнее.
Все налоги и скидки на товары находятся между основной и окончательной ценами. При добавлении товара это выглядит так:
В простых случаях заполнять эту форму полностью не нужно. Достаточно ввести одну из цен и сохранить товар. Остальные цены будут рассчитаны автоматически.
Какой подход применять к заполнению этой формы каждый может решить сам. Если вы не планируете вести в интернет-магазине учет всех налогов, а просто хотите получить на сайте то, что введете, и при этом все рассчитывается в единой валюте, то можно заполнять поле «Цена» или «Окончательная цена». Этого будет достаточно.
В этой же форме можно указывать налоги, скидки и прочее, но делать это следует только в том случае, если вы хотите установить правило именно на данный единичный товар. Если необходимо применить налог или скидку к категории товаров, группы покупателей или весь магазин, то сделать это можно в менеджере «Налоги правила расчета».
Налоги и правила расчета в Virtuemart 2.
Менеджер «Налоги и правила расчета» находится в Virtuemart – Товары – Налоги и правила расчета. Он позволяет очень гибко управлять ценообразованием. В Virtuemart 2 разработчики объединили налоги, скидки и другие манипуляции с ценами в общий термин «Правила расчета». Логика такая: добавь правило, а в нем укажи, что нужно сделать с ценами на сайте.
Форма добавления правила расчета выглядит следующим образом:
В ней размещены поля:
Форма просто шикарная. Огромным плюсом является то, что можно выбирать несколько категорий, групп покупателей, стран, регионов, производителей для каждого из правил. Это приводит к широкой универсальности. Можно манипулировать ценами, как угодно.
Налоги и правила расчета в Virtuemart 2. Правила расчета.
Теперь поговорим про Правила расчета. Изначально их доступно восемь. Все доступные правила расчета показаны на рисунке:
Правила расчета следующие:
Изменение цены для PMargin – просто изменяет цены на заданную величину (процент). Правило удобно, когда нужно изменить стоимость товаров определенной категорий, производителя или для группы покупателей. На сайте отображается так:
Наценка – показана цена и величина наценки (налогов). В корзине наценка видна, как налог. Удобно использовать, если вы хотите показать какой-то группе покупателей величину наценки. На сайте отображается так:
НДС – в принципе, то же самое, что и наценка. Возможно, есть какие-то экономические тонкости, о которых мне не известно. На сайте отображается так:
Цена перед уплатой налогов – скидка(!) на стоимость без учета налогов. Заметьте, именно скидка! Данное правило расчета относится к скидкам. Есть некоторые недопонимания со знаками +/-. По-моему, сделано наоборот. Т.е. если задать положительное число, то скидка будет отрицательной и цена увеличится.
Цена после уплаты налогов – скидка(!) на стоимость с учетом налогов. Все то же самое, что и в предыдущем виде. На сайте отображается так:
Налог до счета – изменяет итоговую стоимость товаров в корзине без учета оплаты и доставки (что-то вроде дополнительного сбора). Записывается в графу налогов. На сайте отображается так:
Цена перед уплатой налогов за счет/ Цена после уплаты налогов за счет – скидка(!). Эти правила я так и не смог постичь полностью. Видны они только в корзине при оформлении заказа и являют собой тоже, что и предыдущее правило, но только в графе скидок. Эти правила будут различаться между собой только тогда, когда также активировано какое-либо правило расчета налогов.
Из всех представленных правил расчета мне кажутся самыми полезными изменение цены для PMargin и НДС. Хотя, в зависимости от специфики бизнеса, могут оказаться нужными и остальные правила. Также есть возможность настроить магазин таким образом, чтобы старая цена была зачеркнута, а новая написана ниже на основании правил расчета.
Чтобы показать покупателям примененные правила, нужно сделать две вещи:
Налоги и правила расчета в Virtuemart 2. Скидки в зависимости от количества.
Стандартные правила расчета хороши, но в них не хватает парочки очень нужных. Часто встречается задача, когда требуется сделать ту или иную скидку на товар в зависимости от количества единиц, которое покупают. Что-то вроде покупки оптом. Здесь интересно.
Изначально, когда появились только предварительные версии Virtuemart2, разработчики включили правило расчета в зависимости от количества в общий набор правил, но с выпуском релиза данное правило было исключено и сейчас выпускается в виде отдельного коммерческого плагина от разработчиков. Стоимость данного плагина 35 евро. После установки он добавляет новое правило расчета в список. Плюс в том, что помимо расчета скидки в зависимости от количества он умеет и кое-что еще.
Для тех, кто не хочет тратить кровные еврики, но очень нуждается в скидках в зависимости от количества, есть другой вариант. Форма добавления товара позволяет делать такие скидки для каждого товара отдельно. Что нужно сделать:
Должно получиться примерно то, что показано на рисунке:
Эта функция работает через AJAX. При изменении количества заказываемого товара цена изменяется в соответствии с данными правилами автоматически без перезагрузки страницы.
Подводя итог, хочу сказать, что в Virtuemart 2 разработчики учли проблемы, которые имели место быть в предыдущей версии компонента и придумали очень удобную, а главное, гибкую систему по управлению ценообразованием. Да, она вызывает некоторую избыточность и сложность в освоении, но дает то, чем может похвастаться далеко не каждый интернет-магазин.
VirtueMart налоги и правила расчета
Сегодня поговорим о Virtuemart!
Налоги и правила расчета
Настройка налогов и правил расчета для типичного магазина в странах Европейского Союза.
Правила в этом случае применимы при следующих обстоятельствах:
Цены на продукты будут введены по себестоимости.
Рентабельность будет добавлена к каждому продукту в виде фиксированного множителя разметки.
Расходы на закупки для каждого продукта будут добавлены после добавления прибыли, но перед добавлением налога.
НДС (налог на добавленную стоимость) будет добавлена к каждому продукту.
Добавление маржи прибыли
В меню VirtueMart кликните на меню налоги и правила расчета> Создать.
При этом откроется (пока пустая) форма.
Введите название, какое правило расчета маржи операционной прибыли 44%, а если вы хотите использовать его сразу, проверьте публикации.
Примечание: Для достижения желаемого уровня прибыли 50%, множитель 2,0 (200%). Для 33,33% прибыли использовать коэффициент 1,5 (150%).
От типа арифметической операции раскрывающегося списка выберите ценовой модификатор для прибыльности и в арифметической операции раскрывающегося списка выберите +%.
В поле «Значение» введите 80.00.
Этот множитель введен как процентное значение, которое даст нам около 44% прибыли.
В этом случае, мы хотим использовать это правило для всех продуктов.
Поэтому мы не выбираем варианты из следующих раскрывающихся списков (если ни один вариант не выбран, то выбираются все, используемое в правилах).
Вы можете выбрать любой из доступных вариантов, если вы хотите применить одно или несколько ограничений для этого правила, например, ограничивая его к определенной категории или группы покупателей.
Кроме того, мы устанавливаем для покупателя Видимый «Нет» (Ваши клиенты не должны видеть вашу прибыль) и видимого для производителя значение «Да».
Наконец, нажмите кнопку Сохранить и закрыть.
Добавление правила стоимости закупок
В этом примере мы настраиваем закупочную стоимость продукта.
Сумма может состоять из почтовых расходов за продукт от производителя / поставщика Продавцу и плюс плата за использования кредитных карт:
Нажмите «Сохранить и закрыть».
Добавление две разных ставки НДС
Откройте еще «Налоги и правила расчета».
В этом случае мы заполняем поля следующим образом:
Нажмите «Сохранить и закрыть».
Налоги и список правил расчета
Давайте взглянем на список Налоги и правила расчета.
Он отображает правила, которые мы добавили примерно так:
Теперь, когда вы добавляете товар в представлении продукта Изменить, можно назначить любой из этих налогов и правила расчета для вашего продукта.
Думаю данная статья оказалась для многих полезной.
Virtuemart налоги и правила расчета
Описание использования плагина
Конкретно передо мной стояла задача реализовать в virtuemart накопительную (или прогрессирующую) скидку в зависимости от суммы заказа, положенного в корзину пользователем. Но в этой статье мы отойдем от конкретных задач и реализаций. Рассмотрим лишь основные принципы и направления, чтобы каждый уже мог соображать за себя и домысливать до конечного результата.
Плагин относящийся к группе “vmcalculation” выносит свои управляющие элементы и работает с данными сохраненными через интерфейс раздела “товары” => “налоги и правила расчета”.
В этой панели можно создавать различные правила, по которым будет происходить пересчет стоимости товаров. Эти правила могут быть применены как к стоимости каждого товара по отдельности, так и к общей итоговой стоимости всего заказа в корзине.
Базовый интерфейс позволяет определить для текущего правила: вид расчета (например, “цена перед уплатой налогов”, “цена после уплаты налогов”, “наценка” и др. ), тип операции (сложение или вычитание абсолютных величин или относительных), само значение пересчета (в зависимости от выбранной операции либо значение в валюте магазина, либо процентная ставка) и валюту (из списка тех, что определены в системе магазина). Выполнение правил пересчета стоимости можно таргетировать по категориям товаров, по группам пользователей, по странам и регионам (если таковые настроены) и по производителям товаров в магазине. Можно также определить срок действия данного правила модификации стоимости.
Таким образом система, в целом, уже предлагает не малые и достаточно гибкие возможности по управлению ценами, поэтому прежде чем создавать какой-либо плагин, нужно убедиться что текущей функциональности действительно не хватает для решения стоящих перед вами задач.
В моем случае предполагалось, что можно создать неограниченное количество “уровней” скидки в зависимости от общей суммы заказа.
Еще раз отмечу, что в данной статье, мы не будем касаться конкретных реализаций, а лишь рассмотрим все доступные методы плагинов “vmcalculation”, которые вызываются из различных частей магазина. Для условного обозначения, назовем гипотетический плагин “MyPlugin”, тогда согласно правилу наименований в системе магазина, функциональный класс расширения будет иметь название “plgVmCalculationMyPlugin” (регистр не имеет значения).
Класс plgVmCalculationMyPlugin
Является расширением (подклассом) класса vmCalculationPlugin.
Ниже буду использовать обозначение “ название_класса::название_метода (параметры) ”, который будет обозначать лишь принадлежность метода к классу, а не вызов статического метода.
Инициализирует встроенные свойства класса. На практике, для корректной работы плагина, вполне достаточно указать имена полей настроек в админке, их начальные значения и типы данных.
Обратите внимание, что обязательно необходимо выполнить вызов родительского конструктора, иначе инициализация нового объекта пройдет некорректно.
Позволяет добавить название новой вычислительной операции в выпадающий список “операция” в панели редактирования правил расчета.
plgVmCalculationMyPlugin::plgVmInGatherEffectRulesBill ($calculationHelper, &$testedRules)
Какую изначальную идею разработчики хотели вложить в этот метод, мне сказать трудно. Судя по названию метод должен собирать правила пересчета, наверное. Но лично я использовал метод для того, чтобы передать в корзину дополнительную информацию для отображения (цена без скидки, сумма скидки, сообщение о текущем уровне скидки и т.д. ). Эти данные потом отлавливаются через ajax, и их можно вставить в модуль корзины virtuemart.
plgVmCalculationMyPlugin::plgVmInGatherEffectRulesProduct ($calculationHelper, &$testedRules)
В файле “administrator/components/com_virtuemart/helpers/calculationh.php” в строке 1479 формируется событие, вызывающее метод с именем “plgVmInterpreteMathOp”, при этом ожидается возврат пересчитанной стоимости. Таким образом этот метод удобнее всего использовать для непосредственных вычислений и преобразования стоимости.
plgVmCalculationMyPlugin::plgVmOnDisplayEdit ($calc, &$html)
Если по смыслу вашей задачи, вам явно не хватает тех полей, что уже есть в админке, то с помощью этого метода вы сможете добавить дополнительные. При этом вам необходимо сформировать данные в формате html.
Метод сохраняет введенные в админке данные в базу данных.
Думаю, что этот метод вы сможете использовать без каких-либо изменений, он скорее всего для любого плагина “vmcalculation” подойдет, если конечно вы при этом не захотите выполнить какие-либо дополнительные действия (например, записи в логи или какие-то дополнительные проверки).
Данный метод тоже, скорее всего, сможете использовать без изменений в определении.
Названия некоторых методов явно указывают на то, что они должны относиться к плагинам другого типа (например, “vmpayment”). Это действительно так, однако код в магазине virtuemart устроен так, что иногда в одном блоке кода одновременно импортируются плагины различных типов, а уже затем через JDispatcher::trigger вызываются их методы. JDispatcher::trigger при этом проходит по всем доступным плагинам. Поэтому, фактически, при одновременном импортировании происходит “перемешивание” плагинов, из-за этого и получается что из плагина типа “vmcalculation” можно вызвать метод формально относящийся к плагину типа “vmpayment”. Этим можно воспользоваться.
Возможно, что это не полный список и есть другие мтоды которые мне найти пока по каким-то причинам не удалось. Тем не менее надеюсь, что приведенная в этой статье информация окажет вам хорошую услугу и будет полезна при разработке вашего собственного плагина.