К содержанию

[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
9 511
Поблагодарить автора Отправить деньги
Реклама

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

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

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

все это делается просто в админке без танцев с бубном.
    ViktorK
    ViktorK Старожил
    17 июня 2016, 12:43
    Он совместим с msOptionsPrice2?
      Володя
      Володя Эксперт
      17 июня 2016, 13:32
      на данный момент не совместим.
      Володя
      Володя Эксперт
      07 октября 2016, 12:57
      Собственно задача такая: сделать скидки по условию. Например, если человек зарегистрирован на сайте 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
        Konstantin Проверенный
        09 октября 2016, 22:01
        А как в корзине вывести сумму со скидкой, или вообще инфу что скидка есть и какая она.
          Konstantin
          Konstantin Проверенный
          09 октября 2016, 22:26
          Разобрался.
          Konstantin
          Konstantin Проверенный
          16 октября 2016, 19:15
          Другой вопрос созрел.

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

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

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

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

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

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

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

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

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

                      Скидка на заказ при сумме в корзине больше «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
                        Но 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
                          Пробовала так
                          [x] класс msOrder
                          [x] ключ сost
                          [x] значение 20000
                          [x] скидка 10%
                          [x] сравнение (float) — Больше

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

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

                            Но у меня их две от 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
                              напишите в ТП с указанием доступов к админке сайта. Посмотрю какие скидки вы там задаете и что хотите вывести.
                              Спасибо!
                                adminixi
                                adminixi Проверенный
                                24 января 2017, 09:09
                                Еще какая-то беда с ними.

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

                                      Попробую убедить.
                                        Алексей Федоров
                                        24 января 2017, 10:05
                                        Но как то же ты работаешь с компонентом? Если пакет взят на тестовом сайте modhost, то проблем со скидыванием доступа вообще быть не должно, верно?
                        Владимир Тельнов
                        05 марта 2017, 12:03
                        Возможен ли вывод результата работы сниппетов 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
                          напишите в ТП с указанием доступа к админ панели — посмотрю в чем дело.
                          Спасибо!
                          Максим
                          Максим Старожил
                          18 апреля 2017, 06:33
                          Доброго времени суток. Подскажите можно ли давать скидку конкретному пользователю на группу товаров?
                            Oleg Pimanov
                            Oleg Pimanov Старожил
                            01 сентября 2017, 10:44
                            Добрый день!

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

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

                            Пытался понять, по какому признаку так происходит, но не удалось. Причем это происходит у товаров с ценной больше 7 000 рублей
                              Володя
                              Володя Эксперт
                              01 сентября 2017, 10:49
                              Добрый день.
                              По вопросам работы платных дополнений следует писать в ТП
                              В сообщении указываете доступ к админке сайта и ссылку на проблемное место.
                              Спасибо!
                              Oleg Pimanov
                              Oleg Pimanov Старожил
                              01 сентября 2017, 10:57
                              Отправил, спасибо
                                Oleg Pimanov
                                Oleg Pimanov Старожил
                                06 сентября 2017, 12:21
                                Добрый день! Такой вопрос, у меня есть скидка на все товары — 25%, но мне надо исключить из этой скидки скажем товары определенного бренда, я создаю еще одну скидку с параметрам, но он не срабатывает
                                Приложение — Discontrol
                                  Володя
                                  Володя Эксперт
                                  06 сентября 2017, 12:34
                                  Добрый день.
                                  Если вам нужно задать какие то отдельные условия используйте поле условие, например
                                  скидка для всех кроме бренда adidas
                                  {"Vendor.name:!=":"adidas"}
                                    Ruslan Butakov
                                    Ruslan Butakov Проверенный
                                    16 января 2018, 16:14
                                    Добрый день, как правильно использовать несколько условий?
                                    Дано:
                                    [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
                                      класс msSessionCart не работает с профилем пользователя потому он точно не видит ваше условие
                                      modUserProfile.comment
                                      ps. по вопросам работы платных дополнений пишите в ТП, спасибо!
                                  Ruslan Butakov
                                  Ruslan Butakov Проверенный
                                  16 января 2018, 19:39
                                  Можно ли как то использовать 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
                                    Володя, приветствую!

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

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

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

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

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

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

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

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

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

                                                  или что то не так делаю
                                                    Игорь
                                                    Игорь Старожил
                                                    29 августа 2019, 12:12
                                                    Так же пытаюсь реализовать скидку на тип доставки, причем еще и с минимальной стоимостью заказа.
                                                    Пока безуспешно.
                                                    Разработчик модуля, пишет пустые отписки из разряда, все работает, как правильно настроить думайте сами, я же не знаю что вы конкретно хотите, возможностей много.
                                                      Володя
                                                      Володя Эксперт
                                                      29 августа 2019, 12:30
                                                      я вам в ТП по существу ответил.
                                                      пишет пустые отписки из разряда, все работает, как правильно настроить думайте сами
                                                      клевета.
                                                        Restorator
                                                        Restorator Старожил
                                                        29 августа 2019, 12:48
                                                        и все же
                                                        что я делаю не так?
                                                          Игорь
                                                          Игорь Старожил
                                                          30 августа 2019, 14:12
                                                          Да вроде все делаете так.
                                                          Только ключ должен быть delivery, а значение это id.
                                                          Единственное у меня не получилось еще привязать скидку к минимальной сумме заказа, но Владимир, обещал посмотреть в воскресенье что с этим можно сделать.
                                                            Володя
                                                            Володя Эксперт
                                                            01 сентября 2019, 10:31
                                                            прокидываете данные о корзине на событие 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
                                                              Владимир, очень благодарен вам за решение, спасибо, все работает.
                                                    Вова
                                                    Вова Старожил
                                                    11 сентября 2019, 10:15
                                                    Здравствуйте!
                                                    Подскажите пожалуйста:
                                                    1) Какое условие надо прописать для указания даты начала и окончания скидки?
                                                    2) Какое условие надо прописать, чтобы скидки не складывались а выводилась максимальная.
                                                    Пример:
                                                    Создаю акцию на msVendor 50% скидку и она не должна складываться со скидками на товар входящими в этот msVendor. И к тому же если на товар из этого msVendor скидка больше 50% то она не должна понижаться до 50%.
                                                    Такое возможно сделать.
                                                      Sergey (Sentinel)
                                                      Sergey (Sentinel) Проверенный
                                                      20 января 2020, 11:06
                                                      Есть такая скидка
                                                      Плагин discontrol на событие сохранения заказа меняет сумму заказа без изменения товаров заказа.
                                                      Можно ли сделать скидку так, чтобы сумма заказа была равна сумме стоимости товаров?
                                                      А то онлайн оплата не работает…
                                                        Николай Хохлунов
                                                        Николай Хохлунов Проверенный
                                                        02 мая 2020, 18:01
                                                        Добрый день, как настроить скидку на второй товар в корзине?
                                                          Наталья Олиферович
                                                          04 октября 2021, 12:40
                                                          Здравствуйте. Подскажите, можно ли использовать ваш пакет для реализации скидочных карт для пользователей?
                                                            Николай Савин
                                                            Николай Савин Администратор
                                                            04 октября 2021, 13:10
                                                            Не стоит думаю. Пакет старый, не обновляется. Последнее обновление было летом 19 года. Это очень давно!
                                                            Олег
                                                            Олег Старожил
                                                            19 августа 2022, 23:56
                                                            Добрый вечер!
                                                            Подскажите, возможно ли сделать бесплатную доставку при стоимости заказа выше 1500руб? Только для определенного вида доставки.
                                                              Денис Усачев
                                                              Денис Усачев Старожил
                                                              07 февраля 2023, 11:06
                                                              Здравствуйте.
                                                              Подскажите, как заставить корректно работать сортировку по цене ?sort=ms|price:asc mFilter2 + Discontrol
                                                              Дело в том что mFilter сортирует без учета цен скидки Discontrol

                                                              Обновление версии mFilter -miniShop2 -Discontrol не помогло.
                                                              На тестовом сервере modx host та же ситуация. Подозреваю, что такой баг у всех кто использует mFilter2 + Discontrol
                                                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                74