- Проверено Modstore
- Бесплатные будущие обновления
- Работа на тестовом и публичном домене
- 12 месяцев тех. поддержки
* Система скидок позволяет работать с любым магазином на MODX Revolution. Действующая версия содержит обработчики только для магазина [miniShop2].
Скидки на продукт
Приложения >> Контроль скидок >> Вкладка «Скидки на Продукт».
Панель управления скидками на продукт.
Доступно:
- сортировка по группе пользователя
- сортировка по классу опций продукта
- поиск по описанию, классу, ключу, значению
Окно редактирования скидки на продукт.
- группа пользователя
- класс опции продукта
- ключ опции продукта
- значение опции продукта
- сравнение
- скидка продукта
- условие
- описание
Расчет скидки на продукт.
В зависимости от условий задания скидки, полученных опций продукта, для каждого продукта по группе пользователя
формируется массив скидок вида:
[msProductData] = array(
0 => 10,
1 => 35,
2 => 20
)
[msVendor] = array(
0 => 16
)
[msProductOption] = array(
0 => 50,
1 => 10
)
Где ключ массива — класс опции продукта, а значения — возможные скидки на продукт.
Для расчета скидки используется настройка product_option_expression вида:
max~$msProductOption + max~$msProductData + max~$msVendor
в данном случае результат общей скидки по группе пользователя на продукт представляет из себя сумму максимальных
скидок. Записывается в переменную groups и для расчета итоговой скидки используется настройка
product_group_expression вида:
max~$groups
Итоговая скидка на продукт равна максимальной скидке на продукт по группам пользователя.
Пример задания скидки на продукт.
Постановка на скидку оптовикам:
дать скидку на продукты бренда «adidas» 10%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msVendor
[x] ключ name
[x] значение adidas
[x] скидка 10%
[x] сравнение (string) — Равно
дать скидку на все продукты нового поступления скидку 5%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msProductData
[x] ключ new
[x] значение 1
[x] скидка 5%
[x] сравнение (integer) — Равно
дать скидку на все продукты стоимостью более «3 000 руб.» 10%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msProductData
[x] ключ price
[x] значение 3000
[x] скидка 10%
[x] сравнение (float) — Больше
дать скидку на все продукты c цветом «белый» 5%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msProductOption
[x] ключ value
[x] значение белый
[x] скидка 5%
[x] сравнение (string) — Равно
[x] условие {«key»:«color»}
дать скидку на продукты категории «ботинки», «штиблеты» 100 у.е.
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс modResource
[x] ключ parent
[x] значение [11,12] — где 11,12 id нужных нам категорий
[x] скидка 100
[x] сравнение (mixed) — Присутствует
Приложения >> Контроль скидок >> Вкладка «Скидки на Заказ».
Панель управления скидками на заказ.
Доступно:
- сортировка по группе пользователя
- сортировка по классу опций заказа
- поиск по описанию, классу, ключу, значению
Окно редактирования скидки на заказ.
- группа пользователя
- класс опции заказа
- ключ опции заказа
- значение опции заказа
- сравнение
- скидка заказа
- условие
- описание
Расчет скидки на заказ.
В зависимости от условий задания скидки, полученных опций заказа, для каждого заказа по группе пользователя
формируется массив скидок вида:
[msSessionCart] = array(
0 => 100,
1 => 350,
2 => 200
)
[msCustomerProfile] = array(
0 => 160
)
[msOrder] = array(
0 => 500,
1 => 100
)
Где ключ массива — класс опции заказа, а значения — возможные скидки на заказ.
Для расчета скидки используется настройка order_option_expression вида:
max~$msSessionCart + max~$msCustomerProfile + max~$msOrder
в данном случае рузультат общей скидки по группе пользователя на заказ представляет из себя сумму максимальных
скидок. Записывается в переменную groups и для расчета итоговой скидки используется настройка
order_group_expression вида:
max~$groups
Итоговая скидка на заказ равна максимальной скидке на заказ по группам пользователя.
Пример задания скидки на заказ.
Постановка на скидку оптовикам:
дать скидку на заказ при сумме в корзине больше «20 000 руб.» 10%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msSessionCart
[x] ключ total_cost
[x] значение 20000
[x] скидка 10%
[x] сравнение (float) — Больше
дать скидку на заказ при кол-ве в корзине товаров больше «20 шт.» 10%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msSessionCart
[x] ключ total_count
[x] значение 20
[x] скидка 10%
[x] сравнение (float) — Больше
дать скидку на заказ при наличии ранее покупок на сумму свыше «50 000 руб.» 20%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msCustomerProfile
[x] ключ spent
[x] значение 50000
[x] скидка 20%
[x] сравнение (float) — Больше
дать скидку на заказ при наличии заказов оплаченных ранее через «Яндекс Кассу» 5%
Создаем скидку с параметрами:
[x] группа Оптовики
[x] класс msOrder
[x] ключ delivery
[x] значение 2
[x] скидка 5%
[x] сравнение (integer) — Равно
[x] условие {«status»:2}
Приложения >> Контроль скидок >> Вкладка «Сравнение».
Панель управления сравнениями опций.
Доступно:
- поиск по описанию, названию
Окно редактирования сравнения опций.
- имя сравнения
- тип значений сравнения
- выражения сравнения
- переменные
- описание
Расчет сравнения опций.
Для сравнения применяется заданное выражение. Доступные переменные:
- c — значение полученной опции
- v — значение заданное для сравнения
Сравнение истинно при результате вычисления отличного от нуля — результат вычисления скидки помещается в массив
скидок или же сравнение ложно — скидка не вычисляется.
При сравнении учитывается заданный тип данных, доступны string, integer, float.
Так же вы можете составить свое собственное сравнение с использованием дополнительных переменных заданных через
параметр переменные (json строка)*.
Операторы сравнения.
Доступные операторы:
- + сложение
- - вычитание
- * умножение
- / деление
- = равно
- != не равно
- < меньше
- > больше
- in присутствует в массиве
- !in не присутствует в массиве
- min~ наименьшее значение
- max~ наибольшее значение
- sum~ сумма значений
- shift~ первое значение
- pop~ последнее значение
- rand~ рандомное значение
Системные настройки >> discontrol
Раздел «Основные» настройки.
product_classes классы продукта
Список классов продукта через запятую.
По умолчанию доступно modResource,msProductData,msVendor,msProductOption,msSessionCar
order_classes классы заказа
Список классов заказ через запятую.
По умолчанию доступно msCustomerProfile,msOrder,msSessionCart
allow_zero_price разрешить нулевую стоимость продукта
Разрешить нулевую стоимость продукта в результате скидки.
allow_zero_cost разрешить нулевую стоимость заказа
Разрешить нулевую стоимость заказа в результате скидки.
product_option_expression выражение расчета скидки по опциям продукта
Результат скидки будет помещен в массив groups.
По умолчанию max~$msProductOption + max~$msProductData + max~$msVendor — сумма максимальных скидок.
product_group_expression выражение расчета скидки по группе пользователя
Результат скидки является окончательным.
По умолчанию max~$groups — максимальное значение из возможных.
order_option_expression выражение расчета скидки по опциям заказа
Результат скидки будет помещен в массив groups.
По умолчанию max~$msSessionCart + max~$msCustomerProfile + max~$msOrder — сумма максимальных скидок.
order_group_expression выражение расчета скидки по группе пользователя
Результат скидки является окончательным.
По умолчанию max~$groups — максимальное значение из возможных.
Приложения >> Контроль скидок >> Вкладка «Скидки на Продукт» >> Вкладка «Проверка»
Приложения >> Контроль скидок >> Вкладка «Скидки на Продукт» >> Вкладка «Проверка»
Проверка скидок.
Для продуктов и заказав реализована панель проверки скидок.
Доступно:
- выбор пользователя
- выбор продукта
- выбор магазина
- переменные
* выражение расчета скидки по опции
* выражение расчета скидки по группе
* дополнительные переменные
Можно указать в виде json строки с указанием класса скидки, ключа и значения
Пример проверки скидки на продукт.Проверить величину скидки незарегистрированного пользователя на «продукт 1»
Задаем следующие параметры:
[x] пользователь Нет
[x] продукт «продукт 1»
В окне расчета появится лог расчета скидки на продукт.
[user:groups] [0]
[discounts] [{"msProductData":["5"]}]
[option:expression] max~$modResource + max~$msProductOption + max~$msProductData + max~$msVendor +
max~$msSessionCart
[group:discounts] [5]
[group:expression] max~$groups
[price:evaluate] 50
[discount:evaluate] 5
[newprice:evaluate] 45
Расшифровка лога расчета:
[user:groups] группы пользователя
[user:groups] [0]
получена группа 0
[discounts] скидки продукта по опциям
[discounts] [{"msProductData":["5"]}]
для данного продукта действует скидка 5 у.е. по классу msProductData
[option:expression] выражение для расчета скидки по опциям
[option:expression] max~$modResource + max~$msProductOption + max~$msProductData + max~$msVendor + max~$msSessionCart
дефолтное значение для расчета скидки, равно сумме всех максимальных значений по опциям продукта
[group:discounts] скидки продукта по группам
[group:discounts] [5]
получена скидка 5 у.е.
[group:expression] выражение для расчета скидки по группам
[group:expression] max~$groups
максимальное значение из возможных
[price:evaluate] стоимость продукта
price:evaluate] 50
получена стоимость продукта 50 у.е.
[discount:evaluate] скидка продукта
[discount:evaluate] 5
получена скидка продукта 5 у.е.
[newprice:evaluate] новая стоимость продукта
[newprice:evaluate] 45
получена новая стоимость продукта 45 у.е.
Проверить величину скидки незарегистрированного пользователя на «заказ» при сумме покупок 5500 у.е.
Задаем следующие параметры:
[x] пользователь Нет
[x] магазин «miniShop2»
[x] переменные
{"msSessionCart":{"total_cost":5500},"cost":5500}
В окне расчета появится лог расчета скидки на заказ.
[user:groups] [0]
[discounts] [{"msSessionCart":["60"]}]
[option:expression] max~$msCustomerProfile + max~$msOrder + max~$msSessionCart
[group:discounts] [60]
[group:expression] max~$groups
[cost:evaluate] 5500
[discount:evaluate] 60
[newcost:evaluate] 5440
Расшифровка лога расчета:
[user:groups] группы пользователя
[user:groups] [0]
получена группа 0
[discounts] скидки продукта по опциям
[discounts] [{"msSessionCart":["60"]}]
для данного заказа действует скидка 60 у.е. по классу msSessionCart
[option:expression] выражение для расчета скидки по опциям
[option:expression] max~$msCustomerProfile + max~$msOrder + max~$msSessionCart
дефолтное значение для расчета скидки, равно сумме всех максимальных значений по опциям заказа
[group:discounts] скидки продукта по группам
[group:discounts] [60]
получена скидка 60 у.е.
[group:expression] выражение для расчета скидки по группам
[group:expression] max~$groups
максимальное значение из возможных
[cost:evaluate] 5500 стоимость заказа
[cost:evaluate] 5500
получена стоимость заказа 5500 у.е.
[discount:evaluate] скидка заказа
[discount:evaluate] 60
получена скидка заказа 60 у.е.
[newcost:evaluate] новая стоимость заказа
[newcost:evaluate] 5440
получена новая стоимость заказа 5440 у.е.
Скидки — Сниппет dcDiscounts
Сниппет dcDiscounts для информирования покупателей о полученных и возможных скидках.
Параметры сниппета:
object — объект получения информации о скидке
доступно msProduct и msOrder
по умолчанию msOrder
class — класс получения информации о скидке
по умолчанию msSessionCart
key — ключ получения информации о скидке
по умолчанию total_cost
comparison — сравнение
вывод либо полученных скидок (true), либо возможных (false)
по умолчанию true
type — тип данных расчета
доступно string, integer, float, mixed
по умолчанию float
expression — выражение подсчета
в сниппете доступны следующие переменные:
* v - значение указанное в скидке * c - значение полученное по указанному ключу * p - значение стоимости (продукта/ заказа) * d - значение скидки (продукта/ заказа)
по умолчанию $c — $v
tplRow — чанк вывода информации о скидке
по умолчанию
@INLINE <div class="[[+comparison]]">[[+data.discount]] - [[+data.calc]]</div>
tplOuter — чанк обертки
по умолчанию
@INLINE <div>[[%discontrol_[[+object]]]] [[%discontrol_comparison_[[+comparison]]]]: <div class="discontrol-discounts [[+selector]]" data-propkey="[[+propkey]]">[[+output]]</div> </div>
tplEmpty — чанк вывода информации об отсутствии скидок
по умолчанию
@INLINE <div>No discounts</div>
frontendCss — Файл с css стилями для подключения на фронтенд
frontendJs — Файл с javascript для подключения на фронтенде
selector — Имя CSS класса, который будет использован как jQuery селектор для инициализации
limit — Лимит выборки результатов
showLog — Вывод информации о работе сниппета в лог MODX
Постановка на скидку:
- скидка на продукт 4% при общей сумме заказа более 4000 у.е
- скидка на продукт 7% при общей сумме заказа более 20000 у.е
[[!dcDiscounts?
&object=`msProduct`
&comparison=`1`
&expression=`$d`
]]
Вывод информации о возможных скидках на странице продукта[[!dcDiscounts?
&object=`msProduct`
&comparison=`0`
&expression=`$v - $c`
]]
1.2.5-beta (08.06.2019)
- Change "dcDiscounts" [snippet]
1.2.4-beta (05.06.2019)
- Fix "initializeUser" [discontrol]
1.2.3-beta (24.05.2019)
- Add "sortDirDiscount" [dcDiscounts]
1.2.2-beta (17.05.2019)
- Change "discontrol.grid.OrderDiscounts", "discontrol.grid.ProductDiscounts" js
1.2.1-beta (05.04.2018)
- Change "recalculateMiniShop2Cart" [discontrolTools]
1.2.0-beta (03.04.2018)
- Improvement "discontrolTools" handler
- Add "discontrolMath" handler
1.1.30-beta (17.03.2018)
- Change "dcDiscounts" snippet
1.1.29-beta (17.03.2018)
- Improvement "default.js"
1.1.28-beta (05.03.2018)
- Change "prepareVariables" [discontrolTools]
1.1.27-beta (22.01.2018)
- Add "dcDatamsProductMsCategoryMember" getData
1.1.25-beta - 1.1.26-beta (17.01.2018)
- Change "prepareVariables" [discontrolTools]
1.1.24-beta (14.09.2017)
- Change "initialize,runProcessor" [discontrol]
1.1.23-beta (25.07.2017)
- Add "Mod" [MathParser]
1.1.22-beta (23.02.2017)
- Improvement "getData" [dcData]
1.1.21-beta (14.02.2017)
- Add "dcDataMsProductGeoLocationRealRegion", "dcDataMsProductGeoLocationRealCity" getData
1.1.20-beta (09.02.2017)
- Improvement "msOptionPrice" [discontrolToolsInterface]
1.1.19-beta (20.12.2016)
- Fix "create, update" discount processor
- Improvement "comparison" grid [js]
1.1.18-beta (15.12.2016)
- Improvement "condition" [dcData]
1.1.17-beta (18.11.2016)
- Fix "getPrice" method
1.1.16-beta (08.11.2016)
- Add "number_format" setting
- Add "formatNumber" method
1.1.15-beta (08.11.2016)
- Add "invokeEvent" method
- Add "dcOnBeforeGetData", "dcOnAfterGetData" event
1.1.14-beta (07.11.2016)
- Add "arrayCondition" method
- Add dcdataminishop2mssessioncart" condition
- Add dcdataminishop2mssessionorder" condition
- Add dcdatamsproductmssessioncart" condition
1.1.13-beta (18.10.2016)
- Add "discount_order_with_cost" setting
1.1.12-beta (17.10.2016)
- Improvement "dcDataMsProductMsProductOption" class
1.1.11-beta (11.10.2016)
- Fix "initialize Discontrol"
1.1.10-beta (07.10.2016)
- Fix "combo"
- Improvement "modUser", "modUserProfile" class
1.1.9-beta (10.09.2016)
- Add "modUser" class
- Add "modUserProfile" class
- Improvement "Math" class
1.1.8-beta (09.09.2016)
- Improvement "Order" discount
1.1.7-beta (02.09.2016)
- Add "msOptionPrice" compatibility with version > 2.0
1.1.6-beta (26.07.2016)
- Change "tables" (value)
- Change "description"
1.1.5-beta (26.07.2016)
- Improvement "discount" window
1.1.4-beta (22.07.2016)
- Fix "format" discount
- Add "All" group
1.1.3-beta (21.07.2016)
- Fix "loadClass"
- Add "customClass"
- Add "example" custom class
1.1.2-beta (20.07.2016)
- Fix "dcProductDiscount" snippet
- Fix "remove" discount
- Add "copy" discount
1.1.1-beta (20.07.2016)
- Add "dcProductDiscount" snippet
1.1.0-beta (19.07.2016)
- Fix "tools" class
- Add miniShop2 compatibility with version > 2.4
1.0.12-beta (28.06.2016)
- Add "price increase"
1.0.11-beta (08.06.2016)
- Fix "check" discounts
- Fix "Math"
- Fix "dcDataMiniShop2MsCustomerProfile", "dcDataMiniShop2MsOrder" getData
1.0.10-beta (29.05.2016)
- Improvement "dcDataMiniShop2MsSessionOrder" getData
- Improvement "default.js"
1.0.9-beta (26.05.2016)
- Add "properties" lexicons
- Add "docs"
- Change "formatPrice"
- Change "dcDiscounts"
- Add "msSessionOrder" class
- Add "dcDataMiniShop2MsSessionOrder" getData
1.0.8-beta (25.05.2016)
- Refactoring code
- Fix "check" data
- Fix "formatPrice"
- Fix "getPrice","getCost"
- Add "docs"
1.0.7-beta (24.05.2016)
- Add "formatPrice"
- Add "recalculate miniShop2 cart"
1.0.6-beta (23.05.2016)
- Add "dcDiscounts"
1.0.6-beta (22.05.2016)
- Fix "check" data
1.0.5-beta (21.05.2016)
- Add "in", "!in" operator
- Add getData "modResource"
1.0.4-beta (20.05.2016)
- Reformat code
1.0.3-beta (19.05.2016)
- Add "check" panel for orders
1.0.1-beta-1.0.2-beta (19.05.2016)
- Add "check" panel for goods
1.0.0-beta
- Initial
Последние обсуждения в сообществе MODX.pro