| Характеристики дополнения | |
| OpenCart | 3.0 |
| XML модификатор | есть |
| Локализация | русский, украинский, английский |
| Статистика | 2 16171 74 |
| Файлы | |
Модуль IMDiscount (OC 3) Стратегия скидок – это мощный инструмент для организации гибкой системы скидок в OpenCart. Он позволяет создавать накопительные скидки и скидки на текущий заказ, а также поддерживает массовую генерацию стандартных скидок и акций. Этот модуль подойдёт интернет-магазинам, которые хотят стимулировать повторные покупки и гибко управлять ценами.
В общем и целом, порядок создания стратегий похож на обычное представление OpenCart, но с учётом того, что в модуле практически всё сделано с использование ajax (без необходимости перегружать страницу).
ВАЖНО! - Все корректировки применяются сразу!
С версии 1.4.0 можно создавать стратегии или их копии в соответствующих вкладках, без обязательного создания через вкладку «Все стратегии». Для этого нужно нажимать кнопку «Добавить» вместо «Сохранить».
Подсчёт осуществляется в два этапа, что позволяет строить весьма гибкие стратегии скидок (пример расчёта чуть ниже).
Затем внутри каждой стратегии определено каким образом выбирать «Тип формирования процента» (большее значение, меньшее или суммарное по всем значениям таблицы скидок с первого этапа). Соответственно, из ранее вычисленных скидок в таблице формируется результирующая скидка стратегии (в соответствии с выбранной настройкой).
ВАЖНО! Скидка не может быть больше, чем значение ДО применения модуля IMDiscount. Сделано для того, чтобы не возникало заказов с отрицательной стоимостью.
Допустим, вам нужно учитывать два варианта скидок. Первый, те скидки, что формируются по накопленным заказам и применяются для суммы всех товаров заказа (за каждые 1000 рублей 1%, до 10%). Второй, дополнительная скидка в рамках текущего заказа только для товаров без акций и скидок (с каждой 1000 так же по 1%, до 10%). При этом нужно, чтобы скидки суммировались.
Соответственно, в модуле выставляются следующие настройки. Тип аккумуляции (Глобально) - суммирование. Чтобы скидки стратегий суммировались. Создаются и заполняются две стратегии - одна в «Накопительная скидка», вторая в «Текущий заказ». Для каждой стратегии так же заполняется таблица скидок с указанием процента и фиксированной суммы (в примере последнее равно 0, так как задача этого не требует).
Покупатель совершает заказ на 3456 рублей, из которых 1000 рублей это товары со скидкой. Так же покупатель уже совершил несколько заказов на общую сумму 7000 рублей.
Происходит следующий расчёт:
Первый этап. Так как применяются только проценты, то всегда будет выбираться процент для каждой строки таблицы стратегии скидок.
Исходя из данных, в таблице первой стратегии подходят все пункты от 1% до 7%. Выбирается максимум т.е. 7%. Во второй стратегии скидок учитываются только обычные товары (2456 руб), т.е. подходят только скидки из таблицы 1% и 2%. Соответственно, выбирается максимум 2%.
Второй этап. Смотрится глобальный параметр, а там суммирование. Получается 7% от 3456 + 2 % от 2456 = 241,92 + 49,12 = 291,04.
Как видите, сложная схема расчетов легко реализуется модулем.
Существует три типа сумм, в общем случае (для N-товар см. ниже):
Соответственно, в зависимости от выбранного варианта, вычисляется процент.
Если вам необходимо организовать скидки для каждого N-товара в сортировке от самых дорогих к более дешёвым или наоборот от самых дешёвых, то это возможно сделать.
Например, для каждой второй пары перчаток предоставлять скидку в 50% в порядке от дорогих к дешёвым. В таком случае, если клиент добавил в корзину 20 простых перчаток и 8 перчаток с каким-нибудь дорогим узором (т.е. скидка для 14 товаров = 28 / 2), то скидка будет вычисляться следующим образом: 0,5 * стоимость 8 дорогих перчаток с узором + 0,5 * стоимость 6 простых перчаток (так как перчаток с узором всего 8).
В рамках данного расчёта, так же учитывается тип подсчёта количества товаров, чтобы можно было исключить товары, у которых уже существуют скидки (от количества; акции). Плюс сохраняется весь алгоритм расчёта по таблице скидок и прочих механизмов.
Если для какого-то из пунктов не указаны настройки (например, не заданы продукты), то критерием отбора становится только один пункт (в котором заданы настройки). Если же настроек вообще не задано, то фильтрация не осуществляется - иными словами, считается, что все товары подходят (в случае исключения при пустом фильтре, фильтрация не применяется).
Для цен. Если значение фильтра стоимости равно или меньше нуля, то считается, что ограничений по данному фильтру цены нет. Например, стоимость ОТ равная 10 и стоимость ДО равная 0 означает, что стоимость товара должна быть больше или равна 10. Учтите, что цены задаются в базовой валюте.
Эффективная цена означает, что для проверки используется та цена, которая отображается в корзине. Например, если товар с ценой 100 после стандартных скидок и применения опций стал стоить 120, то при фильтрации будет использовано значение 120.
Стоит учитывать, что фильтрация применяется для всех настроек, которые зависят от продуктов. Это означает, что при подсчете сумм и количества (как для оценки в таблице строк, так и для формирования процента) единственным, что не пересчитывается, является опция «Полученная сумма до применения IMDiscount».
Например, в корзине было два товара А за 500 и Б за 200. После фильтра остался только товар Б за 200. В настройках выставлено, что процент применяется ко всем товарам. Это означает, что при подсчете сумм из таблицы скидок, будет учитываться только товар Б. Допустим, если в таблице скидок задано 10%, то будет не (500 + 200) * 0,1 = 70, а (200 * 0,1) = 20.
К примеру, исключили товар Х и скидка применяется к товарам. При подсчёте совершённых заказов не будет осуществляться никакой фильтрации. А вот в корзине товар Х будет фильтроваться (к нему не будет применяться скидка).
В остальном логика схожа с тем, как происходит расчёт в стратегии Текущий заказ.
Если для какого-то из пунктов не указаны настройки (например, не заданы продукты), то критерием отбора становится только один пункт (в котором заданы настройки). Если же настроек вообще не задано, то фильтрация не осуществляется - иными словами, считается, что все товары подходят (в случае исключения при пустом фильтре, фильтрация не применяется).
Для цен. Если значение фильтра стоимости равно или меньше нуля, то считается, что ограничений по данному фильтру цены нет. Например, стоимость ОТ равная 10 и стоимость ДО равная 0 означает, что стоимость товара должна быть больше или равна 10. Учтите, что цены задаются в базовой валюте.
Эффективная цена означает, что для проверки используется та цена, которая отображается в корзине. Например, если товар с ценой 100 после стандартных скидок и применения опций стал стоить 120, то при фильтрации будет использовано значение 120.
Стоит учитывать, что фильтрация применяется для всех настроек, которые зависят от продуктов. Это означает, что при подсчете сумм и количества (как для оценки в таблице строк, так и для формирования процента) единственным, что не пересчитывается, является опция «Полученная сумма до применения IMDiscount».
Например, в корзине было два товара А за 500 и Б за 200. После фильтра остался только товар Б за 200. В настройках выставлено, что процент применяется ко всем товарам. Это означает, что при подсчете сумм из таблицы скидок, будет учитываться только товар Б. Допустим, если в таблице скидок задано 10%, то будет не (500 + 200) * 0,1 = 70, а (200 * 0,1) = 20.
Модуль может отображаться в двух вариантах:
Также учитываются настройки отображения в пользовательской части, которые вы задали в самих стратегиях Накопительная скидка и Текущий заказ. К примеру, скидка может не отображаться (так как отключили отображение), но при этом применяться.
Также вы можете прямо в модуле добавить свои CSS и JS.
Обратите внимание, что массовая генерация это не стратегии, поэтому они создаются прямо во вкладке и не отображаются в общем списке (как и в модулях отображения IMDiscount и т.д.).
Учтите, что если требуется генерация ТОЛЬКО для отдельных товаров, то необходимо убедиться, что фильтры для первого пункта пусты (не выставлены цены в фильтрах, не заданы производители и категории, а так же не задан статус).
Для цен. Если значение фильтра стоимости равно или меньше нуля, то считается, что ограничений по данному фильтру цены нет. Например, стоимость ОТ равная 10 и стоимость ДО равная 0 означает, что стоимость товара должна быть больше или равна 10. Учтите, что цены задаются в базовой валюте.
Иными словами, если не указали фильтры, то при очистке по кнопке (или как части генерации) будут удалены стандартные скидки или акции для всех товаров (в зависимости от того, для чего используется массовая генерация)! Аналогично, при генерации скидки или акции из таблицы (в зависимости от того, для чего используется массовая генерация) будут добавлены для всех товаров.
На основании этих данных формируется [значение для корректировки]. В случае фиксированного числа - это просто число, а в случае процента - это цена, умноженная на процент и деленная на 100.
Например, число 50 для «.» это будет 50. А в случае «%» это будет [price] * 50 / 100.
Модификатор «=». Формула [next_price] = [значение для корректировки]
Модификатор «-». Формула [next_price] = [price] - [значение для корректировки]
Модификатор «+». Формула [next_price] = [price] + [значение для корректировки]
Модификатор «*». Формула [next_price] = [price] * [значение для корректировки]
Модификатор «/». Формула [next_price] = [price] / [значение для корректировки]
Так же этот момент касается отрицательных цен. Подобное стандартный механизм опенкарта считает вполне корректным во многих версиях (как минимум, в 2.x, 3.0). Для понимания: вы можете установить как цену товара, так и скидок с акциями отрицательными, и они будут использоваться при расчете, включая корзину и оформление заказа.
Поэтому в модуле не производится дополнительных проверок для цен, в плане отрицательного значения. Мало ли вы, как клиент, используете данную особенность. Поэтому будьте внимательны и аккуратны!
Логирование включается во вкладке «Настройки». Файл лога располагаются в каталоге «storage/logs» (DIR_LOGS).
Тем не менее, даже обычные пользователи могут воспользоваться им. В файле лога необходимо искать фразу «After calculateDiscounts». Чуть выше её отображается идентификаторы пользователя и его группы, а так же ФИО. Чуть ниже её отображается сводная информация по вычисленным скидкам действующих стратегий для текущей корзины (до применения глобальной настройки подсчёта скидки).
В настройках модуля можно отключать применение скидок IMDiscount (стратегий) для случая, когда указан купон. Однако для этого модуль купона должен применяться ДО применения модуля IMDiscount. Другими словами, порядок сортировки модуля IMDiscount должен быть больше сортировки модуля купона.
Настройка действует глобально, то есть для всех скидок сразу.
ВАЖНО! Если вы не укажите корректный порядок сортировки в модуле IMDiscount, то вычисления могут быть некорректными! Как минимум вычисление скидки должно происходить после подсчёта суммы товаров (sub_total).
| Название файла | Добавлен | Обновлен |
|---|---|---|
im-discount_oc3x.ocmod.zip Размер: 280.38 KB | 28.02.2025 | 28.02.2025 |
Оставьте свой отзыв об этом товаре