0test / CommerceDiscounts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CommerceDiscounts

Система скидок для Commerce на базе модуля управления таблицами webixTable (https://github.com/webber12/webixtable)

Компонент состоит из аддона для модуля webixTable (модуль "Скидки"), плагина для Commerce (CommerceDiscounts) и вспомогательного сниппета для вывода информации о скидке товара в корзине CommerceDiscounts.

Общая информация о скидках

  • система скидок формируется в модуле
  • доступны 3 вида скидок: скидка для списка товаров, скидка для категорий товаров и общая скидка для корзины

для всех видов скидок доступно назначение следующих параметров:

  • название скидки
  • дата начала и окончания срока применения скидки. Скидка может быть бессрочной, причем не задавать можно как начальную или конечную дату, так и обе сразу
  • группа веб-пользователей, для которых применяется скидка (по-умолчанию - для всех)
  • размер скидки: может задаваться в процентах (приоритет) либо в твердой сумме. Если заданы обе скидки, то применяется процентная. Скидка в твердой сумме не может быть больше итоговой суммы, к которой она применяется
  • параметр "активен" - можно временно отключать либо включать скидку в период действия согласно указанным датам

Приоритетность скидок

Для каждого товара применяется максимальная скидка из всех, чьи условия данный товар соблюдает (список, родительская категория)

Скидка для списка товаров

  • позволяет задать скидку для определенного списка товаров. Данный список формируется в модуле. Отбор в список идет по id шаблона товара (задается в настройках модуля, может быть задано несколько через запятую)
  • для формирования списка товаров необходимо: в левой панели ввести часть названия товара, после фильтрации появится список доступных товаров. Нужные перетянуть в правую панель. Сохранить.
  • удаление товара из списка - перетянуть удаляемый товар из правой части списка в левую, сохранить
  • скидки применяются к текущему товару в момент добавления и на предыдущие товары не распространяются
  • для всех скидок данного вида можно сформировать дополнительные условия:

Дополнительные условия для скидок "список товаров" и "категории товаров"

  • применять скидку "начиная с" определенного количества данного товара (во всех модификациях) в корзине - например, "купи 4 и на все последующие получи скидку 20%"
  • применять скидку "для каждого n-го" товара данного id в корзине (например вариант "каждый третий - за полцены")
  • применять скидку "начиная с" определенной суммы данного товара в корзине - "купи на спичек на 100 рублей и получи скидку на дополнительные спички 10 рублей"
  • применять скидку "при достижении (beta)" определенного количества или суммы товара в корзине. В отличие от условия "начиная с", при котором скидка применяется только к вновь добавляемым товарам, скидка "при достижении" распространяется на все подходящие в корзине товары. Пример - при покупке 3 и более пачек - цена за пачку -5%

Скидка для категорий товара (родителя)

  • позволяет задавать скидку для групп товаров, сформированных по определенному признаку
  • родительскую категорию для формирования дерева категорий необходимо задать в настройках модуля (можно задать несколько через запятую, например категория "каталог" и категория "бренды")
  • порядок расчета родителей: сначала для товара пытаемся найти родителей по иерархии сверху,
  • если таковых среди доступных не оказалось - ведется поиск по значению родителей, заданных в tv (список tv, в которых могут хранится id родителей задается в настройках плагина - например category, brand)
  • как и для списка товаров, для скидок с учетом категорий можно задать 3 варианта условий: "начиная с n штук", "начиная с n рублей", "для каждой n-й штуки"
  • скидки применяются к текущему товару в момент добавления и на предыдущие товары не распространяются

скидки для товаров и для родительских категорий равноправные

Это означает, что действует общий принцип - к каждому товару применяется максимальная из всех возможных скидок

Cкидка для корзины

  • применяется после применения всех скидок к товарам к общей сумме корзины
  • для подсчета скидок возможны два варианта условий: "начиная с n штук в корзине любых товаров" либо "начиная с общей суммы корзины в n рублей"
  • в случае, если скидка считается от суммы, то для идентификации условий подходящих скидок используется итоговая сумма корзины
  • для скидок в корзине доступна дополнительная настройка "Исключать акционные товары" - при активации данной настройки из суммы корзины для расчета итоговой скидки отнимается сумма по всем товарам, к которым уже применена скидка

Сниппет CommerceDiscounts

  • используется для показа дополнительной информации в строке корзины о примененной к товару скидке
  • пример вызова [!CommerceDiscounts? &row=[+row+] &tpl=@CODE:[+amount+] [+unit+]!]
  • параметр tpl задается по правилам DLTemplate- доступны варианты: чанк, @CODOE:, @B_FILE и т.п.
  • доступные плейсхолдеры - summ (сумма скидки), formatSumm(отформатированная величина скидки), amount (примененная величина скидки), unit (ед.изм.скидки), name (название скидки), id (id скидки), originalPrice (исходная цена до применения скидки)

Примечание

  • для корректной работы пересчета в корзине необходимо заменить атрибут поля ввода количества data-commerce-action="recount" на data-commerce-action-discount="recount", атрибут элемента для удаления из корзины data-commerce-action="remove" на data-commerce-action-discount="remove"
  • после пересчета корзины дополнительно вызываются 2 js-события: commerce-discounts-recount-discount-ok (после пересчета количества) и commerce-discounts-remove-discount-ok (после удаления строки) для дополнительного функционала (уведомлений и т.п.)
  • требуется версия MySQL >=5.6

About


Languages

Language:PHP 56.1%Language:Smarty 40.7%Language:JavaScript 2.5%Language:TSQL 0.8%