[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 593
+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