[Discontrol] - Контроль скидок магазина

Система скидок для магазинов* на MODX Revolution


* Система скидок позволяет работать с любым магазином на 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`
	]]
p.s. Всем спасибо за внимание.

Геозависимые скидки на продукт магазина
Скидка по времени суток
Володя
25 мая 2016, 12:11
modx.pro
1
4 463
+6
Поблагодарить автора Отправить деньги

Комментарии: 68

Алексей
26 мая 2016, 06:15
+2
Не могу обнаружить ссылки на данное дополнение, где можно посмотреть?
Володя
28 мая 2016, 11:37
0
Обновление 1.0.9-beta (26.05.2016)
— улучшен сниппет подсчета скидок
— добавлен класс «msSessionOrder»

теперь можно делать скидки на заказ в зависимости от свойств заказа. Например можно сделать скидку на определенный вид доставки, способ оплаты и тд… хоть скидку в зависимости от комментария к заказу.

все это делается просто в админке без танцев с бубном.
ViktorK
17 июня 2016, 12:43
0
Он совместим с msOptionsPrice2?
    Володя
    17 июня 2016, 13:32
    0
    на данный момент не совместим.
Володя
07 октября 2016, 12:57
1
+1
Собственно задача такая: сделать скидки по условию. Например, если человек зарегистрирован на сайте 1 день, то ему скидка 1%, 2 дня — 2% и т.д. То есть, чтобы можно было как-то условие обрабоатать, и в соответствии с ним пересчитать цену. Куда и где копать?

указываем в настройке пакета discontrol_product_classes класс modUser

указываем в настройке пакета discontrol_product_option_expression класс $modUser
max~$modResource + max~$msProductOption + max~$msProductData + max~$msVendor + max~$msSessionCart + max~$msSessionCartEx +
max~$modUser

создаем сравнение

выражение для сравнения
(($time - $c)  / 60 / 60 / 24) > $v

создаем скидку

указываем кол-во дней и скидку

все!
Konstantin
09 октября 2016, 22:01
0
А как в корзине вывести сумму со скидкой, или вообще инфу что скидка есть и какая она.
    Konstantin
    09 октября 2016, 22:26
    0
    Разобрался.
Konstantin
16 октября 2016, 19:15
0
Другой вопрос созрел.

Есть скидки на заказ в корзине, например больше 9 штук скидка 20%
Теперь нужно указать скидки на отдельные товары
И получается наложение скидок, т.е. на товар с id 21 имеется скидка 20% и если набрать их 10 штук то накладывается скидка на заказ, чего не должно быть.

как так делается?
    Konstantin
    16 октября 2016, 19:32
    0
    Может нужно в условии скидки что то указать? например id ресурсов которые не должны считаться при скидке заказа

      Володя
      16 октября 2016, 19:54
      0
      скидка на товар никак не влияет на скидку на заказ они живут каждая своей жизнью.
Богдан
18 октября 2016, 17:39
0
Владимир, есть ли английская локализация? И если к примеру установлена скидка при определенном количестве товаров в корзине, как она отображается? Есть ли старая цена рядом с новой ценой в списке товаров в корзине или размер скидки отображается только в отдельном блоке с помощью dcDiscounts? Спасибо!
    Володя
    18 октября 2016, 17:42
    0
    есть ли английская локализация?
    нет, если есть в ней необходимость могу сделать с помощью гуглтранслейт…

    Есть ли старая цена рядом с новой ценой в списке товаров в корзине или размер скидки отображается только в отдельном блоке с помощью dcDiscounts?
    только в отдельном блоке с помощью dcDiscounts
Андрей
02 ноября 2016, 09:19
0
Мне нужно в зависимости от акции (например, скидка на все товары определенного раздела) выводить разные бирки (текстовые, либо изображения) у товаров. Не нашел как это сделать стандартными средствами. Решил просто получать id акций из базы и сравнивать подходит ли товар под эту акцию, а потом уже как-то выводить бирки.

Проблема в том что никак не пойму как определить по товару к какой акции он относится. Нашел такой метод getProductAllDiscounts, но он возвращает лишь разницу в цене.

Можно ли как-то узнать акцию по товару?
    Володя
    02 ноября 2016, 09:26
    0
    На данный момент такой возможности нет. Скидок никак не привязаны к какому то конкретному продукту.
    Подумаю что можно сделать.
Павел
19 декабря 2016, 15:43
0
Добрый день, скажите возможен такой функционал:
При покупки 3 любых товаров(даже одних и техже, к примеру один товар — 3шт) из конкретной рубрики, их цена становиться меньше… для каждого товара указать новую цену, к примеру было по 380 каждый, а стало 300
    Володя
    20 декабря 2016, 07:31
    0
    Доброе утро.
    Из коробки такого нет.
    Можно написать свой класс в который заложить нужную логику.
    При покупки 3 любых товаров
    Вы подразумеваете под покупкой добавление продукта в корзину? или же покупку — создание заказа и последующую оплату.
adminixi
22 января 2017, 21:54
0
Подскажите, как создать сравнение для скидки от суммы1 до суммы2

Т.е. скидка действует только на диапазон от 10 000 до 20 000.

Это возможно?
    Володя
    22 января 2017, 21:58
    0
    на данный момент нельзя. Я подумаю как сделать.
      adminixi
      22 января 2017, 22:08
      0
      Спасибо.

      Еще вопрос один…

      Скидка на заказ при сумме в корзине больше «20 000 руб.» 10%
      [x] класс msSessionCart
      [x] ключ total_cost
      [x] значение 20000
      [x] скидка 10%
      [x] сравнение (float) — Больше

      Но total_cost — это вместе с доставкой, а как сделать, чтобы скидка был и на сумму без доставки? На cost.

      Пробовала так
      [x] класс msOrder
      [x] ключ сost
      [x] значение 20000
      [x] скидка 10%
      [x] сравнение (float) — Больше

      Но скидка вообще не присваивается.
        Володя
        22 января 2017, 22:14
        0
        Но total_cost — это вместе с доставкой, а как сделать, чтобы скидка был на сумму без доставки? На cost.
        класс msSessionCart работает c корзиной магазина и там есть github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/model/minishop2/mscarthandler.class.php#L329-L332
        эти поля. Можно расширить класс корзины и добавить туда необходимое поле стоимости корзины без доставки. Только так.
        Володя
        22 января 2017, 22:15
        0
        Пробовала так
        [x] класс msOrder
        [x] ключ сost
        [x] значение 20000
        [x] скидка 10%
        [x] сравнение (float) — Больше

        Но скидка вообще не присваивается.
        класс msOrder работает с уже существующими заказами. но не с текущим, так как он располагается только в сессии.
          adminixi
          22 января 2017, 22:38
          0
          Спасибо.

          Хочу вывести в заказе, какая скидка присвоена на заказ.

          Но у меня их две от 10 000 и от 20 000

          Заказываю на 25 000 и вижу надпись
          Скидка на заказ получена:
          3% — при заказе больше 10 000.00
          5% — при заказе больше 20 000.00
          [[!dcDiscounts?
          	&object=`msOrder`
          	&comparison=`1`
          	&expression=`$v`
          	&tplRow=`@INLINE
          			<div class="[[+comparison]]">[[+data.discount]] - при заказе больше [[+data.calc]]</div>`
          	]]
          Как только нужную?
            Володя
            23 января 2017, 09:20
            0
            напишите в ТП с указанием доступов к админке сайта. Посмотрю какие скидки вы там задаете и что хотите вывести.
            Спасибо!
              adminixi
              24 января 2017, 09:09
              0
              Еще какая-то беда с ними.

              Скидка первая должна быть только если на 10 000 купил. А она в корзине на любую сумму заказа присваивается.
              adminixi
              24 января 2017, 09:09
              0
              в ТП
              это куда?
                Алексей Федоров
                24 января 2017, 09:11
                0
                ТехПоддержка
                  adminixi
                  24 января 2017, 09:12
                  0
                  ок.
                  Только заказчик не будет покупать компонент, если в нем что-то не работает.

                  Попробую убедить.
                    Алексей Федоров
                    24 января 2017, 10:05
                    0
                    Но как то же ты работаешь с компонентом? Если пакет взят на тестовом сайте modhost, то проблем со скидыванием доступа вообще быть не должно, верно?
Владимир Тельнов
05 марта 2017, 12:03
0
Возможен ли вывод результата работы сниппетов dcDiscounts и dcProductDiscount в результатах поиска mFiltr2?
Вызываю сниппет dcProductDiscount в чанке tpl.mSearch2.row — результат не отображается.

При вызове чанка dcDiscounts без указания значений &class отображается пустой шаболон: «Скидка на продукт получена: No discounts „
[[!dcDiscounts?
&object=`msProduct`
&comparison=`1`
&expression=`$d`
]]

Если указать значения, то это приводит к 500 ошибки
[[!dcDiscounts?
	&object=`msProduct`
	&comparison=`1`
	&expression=`$d`
	&class=`modResource,msVendor`	
]]
    Володя
    05 марта 2017, 20:57
    0
    напишите в ТП с указанием доступа к админ панели — посмотрю в чем дело.
    Спасибо!
Максим Степанов
18 апреля 2017, 06:33
0
Доброго времени суток. Подскажите можно ли давать скидку конкретному пользователю на группу товаров?
Oleg Pimanov
01 сентября 2017, 10:44
0
Добрый день!

Установил компонент.

Настроил скидку на все товары в 25%. Скидка срабатывает, но почему-то не у всех товаров показывает старую цену при добавлении в корзину.

Пытался понять, по какому признаку так происходит, но не удалось. Причем это происходит у товаров с ценной больше 7 000 рублей
    Володя
    01 сентября 2017, 10:49
    0
    Добрый день.
    По вопросам работы платных дополнений следует писать в ТП
    В сообщении указываете доступ к админке сайта и ссылку на проблемное место.
    Спасибо!
Oleg Pimanov
01 сентября 2017, 10:57
0
Отправил, спасибо
Oleg Pimanov
06 сентября 2017, 12:21
0
Добрый день! Такой вопрос, у меня есть скидка на все товары — 25%, но мне надо исключить из этой скидки скажем товары определенного бренда, я создаю еще одну скидку с параметрам, но он не срабатывает
Приложение — Discontrol
    Володя
    06 сентября 2017, 12:34
    0
    Добрый день.
    Если вам нужно задать какие то отдельные условия используйте поле условие, например
    скидка для всех кроме бренда adidas
    {"Vendor.name:!=":"adidas"}
      Ruslan Butakov
      16 января 2018, 16:14
      0
      Добрый день, как правильно использовать несколько условий?
      Дано:
      [x] класс msSessionCart
      [x] ключ total_cost
      [x] значение 3000
      [x] скидка 3%
      [x] сравнение (float) — Больше

      Для того чтобы эта скидка применялась в промежутке от 3000 до 5000, ставлю условие
      {"total_cost:<":"5000"}
      А как например не применять эту скидку если в корзине товара на 3500, но у пользователя стоит в профиле комментарий notsale?

      Пробовал по логике так, не получается оба варианта
      {"total_cost:<":"5000"},{"modUserProfile.comment:!=":"notsale"}
      и
      {"total_cost:<":"5000", "modUserProfile.comment:!=":"notsale"}
        Володя
        16 января 2018, 16:48
        0
        класс msSessionCart не работает с профилем пользователя потому он точно не видит ваше условие
        modUserProfile.comment
        ps. по вопросам работы платных дополнений пишите в ТП, спасибо!
Ruslan Butakov
16 января 2018, 19:39
0
Можно ли как то использовать 2 разных класса скидок совместно?

1. от суммы заказа
Больше 3 000 руб. — 3 %
Больше 5 000 руб. — 5 %
Больше 10 000 руб. — 7 %
Больше 25 000 руб. — 10 %
Больше 50 000 руб. — 13 %
Больше 100 000 руб. — 15 %
2. Дать скидку на заказ при наличии ранее покупок на сумму свыше «10 000 руб.» 7%

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

Если я постоянный клиент и имею сумму ранее оформленных заказов свыше 10 000, и в текущей сессии я набрал >25000, то по логике мне должна примениться скидка из пункте 1 и ее размер должен составить 10%

p/s/ Правильно ли вообще использовать такой вывод:

[[!dcDiscounts?
		&object=`msOrder`
		&comparison=`1`
		&class=`msSessionCart,msCustomerProfile`
		&expression=`$p-$d`
]]
Лазарев Роман
30 октября 2018, 07:38
0
Володя, приветствую!

Подскажи, смогу я дать скидку определенному товару 10% первым 10-и покупателям!?

Спасибо!
Борис
25 ноября 2018, 13:36
0
Плохо, что нельзя прямым способом выдать все товары ТОЛЬКО со скидкой.
В таблице [префикс]_discontrol_product_discounts столбец value имеет массив плюс столбец active = 1.
Как это все вытащить в msProducts например?
Борис
22 декабря 2018, 19:46
0
Не работает dcDiscounts на странице продукта
[[!dcDiscounts? &object=`msProduct`	&expression=`$v`]]
Цена: 3885 5550
Скидка на продукт получена:
No discounts
    Andrey Burym
    13 февраля 2019, 13:09
    0
    День добрый,
    удалось решить? тоже столкнулся…
      Борис
      13 февраля 2019, 13:59
      0
      Нет. Автор пропал.
        Виталий Дощенко
        13 февраля 2019, 14:17
        0
        Вы обращались в Тех. поддержку?
        Направьте, пожалуйста, ссылку на тикет — посмотрю.
          Борис
          13 февраля 2019, 14:21
          0
          После года с момента покупки тикет на компонент не доступен.
          Даже если появляются новые фишки и ошибки у модуля нельзя сообщить об ошибке автору.
            Виталий Дощенко
            13 февраля 2019, 14:24
            0
            Борис, тогда понятно.
            Да, возможность сигнализировать об идеях, предложениях и ошибках у нас в очереди доработок в Modstore.

            P. S. Внимание автора обратим на ваш комментарий.
      Виталий Дощенко
      13 февраля 2019, 14:23
      0
      Андрей, вы тоже больше года назад покупали? Нет возможности создать тикет в Тех. поддержке?
        Andrey Burym
        13 февраля 2019, 15:20
        0
        вчера купили, создал (7573)
    Andrey Burym
    14 февраля 2019, 11:34
    0
    Решение от разработчика:
    {'!dcProductDiscount'|snippet:[
       'tplRow' => '@INLINE Скидка - {$data.discount|round}%',
       'tplEmpty' => '@INLINE <!--Скидки нет-->',
       'expression' => '100 - ($v*100/$p)',
    ]}
      Борис
      14 февраля 2019, 19:41
      0
      Белая страница сайта в итоге.
      ошибка в {$data.discount|round}%
        Andrey Burym
        14 февраля 2019, 20:37
        0
        у меня норм,
        предположу, что вам следует проверить «системные настройки», core, по фильтру «fenom»,
        разрешить «Fenom в чанках» и тому подобное. Др. идей нет.
          Борис
          14 февраля 2019, 20:44
          0
          pdotools_fenom_*** все включены
Oleg Pimanov
24 февраля 2019, 15:34
0
Такой вопрос, если хочется скидку только для товара, в pagetitle которого есть «Черный», это какие условия надо прописать?

Я прописал так, но не сработало

prntscr.com/mpe2dw
Евгений
01 мая 2019, 18:51
0
Все доброго времени суток, может кто-то или сам автор подскажет как сделать следующую акцию:
если в корзине больше трех товаров — то стоимость доставки становится равной нулю. Т е бесплатная доставка если в корзине больше трех товаров
Андрей
25 июня 2019, 13:33
0
Можно ли как-то указать срок действия скидки? С одной даты до другой например.
Restorator
28 августа 2019, 14:35
0
— улучшен сниппет подсчета скидок
— добавлен класс «msSessionOrder»

теперь можно делать скидки на заказ в зависимости от свойств заказа. Например можно сделать скидку на определенный вид доставки, способ оплаты и тд… хоть скидку в зависимости от комментария к заказу.

все это делается просто в админке без танцев с бубном.
что то не получается сделать скидку от типа доставки
делаю так

[x] класс msSessionOrder
[x] ключ deliveryType
[x] значение 1
[x] скидка 15%
[x] сравнение (float) — Равно

значение 1 это способ доставки с id=1

или что то не так делаю
    Игорь
    29 августа 2019, 12:12
    -1
    Так же пытаюсь реализовать скидку на тип доставки, причем еще и с минимальной стоимостью заказа.
    Пока безуспешно.
    Разработчик модуля, пишет пустые отписки из разряда, все работает, как правильно настроить думайте сами, я же не знаю что вы конкретно хотите, возможностей много.
      Володя
      29 августа 2019, 12:30
      0
      я вам в ТП по существу ответил.
      пишет пустые отписки из разряда, все работает, как правильно настроить думайте сами
      клевета.
        Restorator
        29 августа 2019, 12:48
        0
        и все же
        что я делаю не так?
          Игорь
          30 августа 2019, 14:12
          0
          Да вроде все делаете так.
          Только ключ должен быть delivery, а значение это id.
          Единственное у меня не получилось еще привязать скидку к минимальной сумме заказа, но Владимир, обещал посмотреть в воскресенье что с этим можно сделать.
            Володя
            01 сентября 2019, 10:31
            0
            прокидываете данные о корзине на событие dcOnAfterGetData
            пример плагина
            if ($modx->event->name === 'dcOnAfterGetData') {
            
                if ($class === 'dcDataMiniShop2MsSessionOrder') {
                    /** @var miniShop2 $ms2 */
                    if ($ms2 = $modx->getService('miniShop2') AND $ms2->initialize($modx->context->key)) {
                        $data = array_merge($ms2->cart->status(), $data);
                        $modx->event->returnedValues['data'] = $data;
                    }
                }
            
            }
            теперь в классе скидки заказа есть данные о корзине и можно прописать условие по сумме покупок
            {"total_cost:>":2000}
              Игорь
              02 сентября 2019, 11:45
              0
              Владимир, очень благодарен вам за решение, спасибо, все работает.
Вова
11 сентября 2019, 10:15
0
Здравствуйте!
Подскажите пожалуйста:
1) Какое условие надо прописать для указания даты начала и окончания скидки?
2) Какое условие надо прописать, чтобы скидки не складывались а выводилась максимальная.
Пример:
Создаю акцию на msVendor 50% скидку и она не должна складываться со скидками на товар входящими в этот msVendor. И к тому же если на товар из этого msVendor скидка больше 50% то она не должна понижаться до 50%.
Такое возможно сделать.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
68