Бонусы покупателям

4500 Р Купить
Бонусы покупателям
Модуль "Бонусы покупателям" - это уникальный продукт, которое поможет вам комплексно решать самые разнообразные задачи по поощрению пользователей за самые разнообразные действия в вашем магазине.
Описание решения Установка и настройка Установка компонентов API

Модуль позволяет:
  • Начислять бонусы пользователям за покупки товаров. При этом вы можете:
  1. Выбрать каталоги, в которых начисляются бонусы, разделы и подразделы каталогов, отдельные товары разделов, отдельные торговые предложения. Настройки наследуются - вы можете задать настройки для корневых разделов и сделать какие-то отличные от корневых для каких-либо подразделов, отдельных товаров или торговых предложений.
  2. Устанавливать размеры бонуса общий для всех, и частный для разделов, подразделов, отдельных товаров и торговых предложений. Все настройки также наследуются.
  3. Установить ограничение по скидкам - установить, нужно ли начислять бонус если сработала указанная скидка.
  4. Установить прочие важные настройки
  • Начислять бонусы за регистрацию пользователя
  • Начислять бонусы за подписку на рассылку
  • Начислять бонусы на день рождения пользователя
  • Создать правило по начислению бонуса на произвольное событие. С помощью этой настройки можно решить практически любую задачу, например - начислять бонусы за комментарии или вообще - за посещения.
  • Написать свои уникальные способы начисления бонусов, используя API модуля.
  • Оплачивать покупки бонусами. Также имеется масса настроек, позволяющая оплачивать товары выбранных категорий (или выбранные товары), ограничивать сумму оплаты, типа плательщика, зависимость от скидок и т.д.
  • Пополнять бонусные счета пользователей с помощью кодов пополнения. Коды генерируются администратором и в дальнейшем вы можете распространять их любым удобным вам способом.
  • Отслеживать транзакции по движению бонусных средств - в разделе администратора и на стороне пользователя
  • Выбрать способ хранения бонусов - на внутреннем счёте пользователя и на отдельных счетах. При выборе хранения на отдельных счетах возможна настройка совместного использования внутреннего и бонусного счёта (можно настроить оплату с внутреннего счёта и с бонусного одновременно)
  • Ограничить срок хранения бонуса
Установка модуля:
  1. Установить модуль c Маркетплейса
  2. Настроить параметры работы модуля (параметры начисления и оплаты бонусами)
  3. Установить необходимые компоненты (компонент о состоянии бонусного счёта пользователя, компонент о возможности покупке товара за бонусы и сумма бонуса при покупке товара)/
    Страница "/personal/account/" (Бонусный счёт) после установки модуля формируется автоматически. В нём два компонента - embx:userbonus.account.pay - для пополнения счёта кодами пополнения и embx:userbonus.userinfo для вывода информации о счёте клиента.

НАСТРОЙКА

1. Общие настройки (рис)

  1. Укажите способ хранения бонуса. Варианты: "на внутренних счетах пользователей", "на отдельных счетах".

    При выборе пункта "на отдельных счетах" бонусы есть возможность совместного использования штатного сервиса битрикса "внутренние счета пользователей" и модуля бонуса. При этом можно настроить оплату заказа одновременно и с внутреннего счёте и с бонусного. Однако для этого необходимо внести изменения в шаблон компонента "sale.order.ajax". Для примера как это делается, в модуль добавляет свой шаблон "embx.order" для компонента "sale.order.ajax". Изменённые файлы: paysystem.php, summary.php, lang/ru/template.php. Все изменения отмечены блоками "//embx.userbonus - начало", "//embx.userbonus - конец".

  2. Укажите необходимо ли извещать пользователя при поступлении бонуса.
  3. Укажите количество дней, которые будет действовать бонус после начисления (0 - не установлено). Если по истечению указанного количества дней пользователь не потратит бонус (полностью или частично) или не получит другой бонус, вся сумма бонусов сгорает.


2. Настройка начисления бонусов (рис)

Бонусы за покупки.
  1. Укажите каталоги, в которых будут начислять бонусы. Если вы используете торговые предложения, их тоже нужно указать
  2. Укажите настройку товаров, при покупке которых будут начислять бонусы. Варианты: "все товары", "указанные товары".

    При выборе пункта "Все товары" бонусы будут начисляться при покупке любого товара выбранных каталогов.

    При выборе пункта "Указанные товары" в настройках товаров и подразделов выбранных каталогов появится пункт "Разрешить начисление бонусов при покупке товара (рис1 - раздел, рис2 - товар), имеющий три значения "(не установлено)", "Да", "Нет".
    По умолчанию настройка включена - бонусы начисляются на все товары.
    Переключатель значений работает следующим образом:
    "Да" - если это установлено в товаре, при покупке товара пользователь получит за него бонус, если это установлено в разделе - при покупке любого товара раздела пользователь получит за него бонус.
    "Нет" - если установлено в товаре, за товар не будет бонуса, если установлено в разделе - за любой товара раздела не будет бонуса.
    "(не установлено)" - если это установлено в торговом предложении, берётся настройка товара, если в товаре - берётся настройка раздела, если в разделе - берётся настройка родительского раздела, если в разделе верхнего уровня - назначается "Да" - бонус будет.
    При этом приоритетной настройкой является настройка товара.
    Например, разрешение на раздел товаров установлено "Нет", но на единичный товар установлено "Да" - при покупке этого товара бонус будет начислен. Или - разрешение на раздел установлено "Да", а на единичный товар в разделе установлено "Нет" - бонус не будет начислен.

  3. Укажите Размер бонуса и Тип бонуса.

    Варианты Типов бонуса: Процент от суммы заказа, Фиксированная сумма на заказ, Процент от стоимости единицы товара, Фиксированная сумма на товар. В зависимости от того что вы выбрали в типе бонуса - Процент или Фиксированную сумму, в Размере бонуса будет - либо процент, либо сумма.
    При этом, если выбран пункт "Процент от стоимости товара" или "Фиксированная сумма на товар" а также в пункте "Товары, при покупке которых начисляются бонусы" указан "Указанные товары", то "Размер бонуса" является настройкой по умолчанию, а в соответствующих настройках (разделах товаров и товарах) появится дополнительно поле для указания размера бонуса (рис1 - раздел, рис2 - товар). Таким образом для каждой группы товаров или отдельных товаров можно указать свой размер бонуса. При этом, если в разделе или товаре оставить это поле пустым, за размер начисляемого бонуса возьмётся размер по умолчанию.

  4. Укажите Минимальную сумму товара (или заказа - если в типе бонуса вы выбрали настройку по заказу) для получения бонуса.

    Если цена товара (или заказа, в зависимости от выбора типа бонуса) будет ниже указанной, бонус за товар не будет насчитан. Если минимальная сумма не установлена (0), ограничений по этому параметру нет.

  5. Укажите событие, по которому нужно начислять бонусы

    Начисление бонусов на счёт пользователя будет происходить при установке заказа в указанное состояние или указанный статус (а также все статусы, после выбранного). При изменении статуса или состояния, бонус будет возвращён.

    Как работает начисление и возврат по статусу: Все статусы всегда имеют свой порядок. Например - Принят - Отменён - Обработан - Оплачен - В доставке - Выполнен.
    Допустим, вы выбираете Оплачен. Но в реальной ситуации заказ может оказаться сразу Выполненным, например.
    Данное правило по статусам означает, что Если вы выбрали для начисления бонуса статус "Оплачен", то бонусы начислятся и если заказ перейдёт в "В доставке" или даже  "Выполнен", минуя "Оплачен".
    А если заказ после начисления вернётся в статус младше "Оплачен" - например, "Обработан" или "Отменён", бонус со счёта клиента вернётся (при условии, конечно, что клиент не успеет его потратить)

    Внимание! Если вы используете интернет-магазин версии 15.5 и выше, в настройках магазина (Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Интернет-магазин) на вкладке "Настройки" установите галку "Включить обработку устаревших событий"

  6. Укажите Скидки, при которых запрещено начисление бонусов
  7. Если в п.2 вы выбрали "Указанные товары", то вам необходимо отметить требуемые разделы каталогов и/или товары и/или торговые предложения, которые разрешены или запрещены к начислению.

    Здесь возможно множество вариантов. Например, раздел разрешён (и все его потомки соответственно), а подраздел запрещён (и все его потомки запрещены), но конкретный товар подраздела разрешён (и тогда на этот товар будет начисление), а какое-то торговое предложение товара запрещено (и тогда на это предложение не будет начисления, а на другие - будет).

  8. Если в п3 вы выбрали "Процент от стоимости товара" или "Фиксированная сумма на товар", а в п2 "Указанные товары", то вы можете в требуемых разделах, подразделах, товарах, торговых предложениях установить необходимые значения размеров бонуса (процент или сумма).

    Здесь также возможно множество вариантов настроек с учётом наследования, как и в предыдущем пункте. 

Бонусы за регистрацию
Если вы хотите при регистрации пользователя сразу ложить ему какую-то сумму на бонусный счёт, укажите:
  1. Начислять бонусы за регистрацию - ДА
  2. Сумму бонуса.

Бонусы за подписку
Для начисления бонусов за подписку на рассылку, укажите:
  1. Начислять бонусы за подписку - можно указать "на каждую рубрику отдельный бонус", тогда клиент будет получать по бонусу за каждую рубрику, на которую подпишется, "не зависимо от количества подписанных рубрик", тогда клиент получит бонус один раз просто за факт подписки. 
  2. Сумму бонуса.

Бонусы на день рождения
Если вы хотите сделать подарок пользователю на день рождения, укажите:
  1. Начислять бонусы на день рождения - ДА
  2. Сумму бонуса.

Дополнительные начисления бонусов
С помощью блока "Дополнительно" вы можете настроить начисление бонусов практически на любое событие.
Для этого укажите:
  1. Наименование бонуса
  2. Модуль (если есть)
  3. Событие по которому нужно начислять бонус
  4. Размер бонуса (сумма) 
  5. Ограничение - сколько раз по указанному событию необходимо начислить бонус (0 - не ограничено)
  6.  Срок - срок действия ограничения, дней (0 - не ограничен)

Пример - начисляем за каждый комментарий на сайте через модуль блога 10 бонусов 
не более 3х раз в месяц:
 Наименование - За добавленный комментарий
 Модуль - blog
 Событие - OnCommentAdd
 Размер бонуса - 10
 Ограничение - 3
 Срок - 30

Если вам необходимо ещё как-то ограничить начисление бонусов по событиям (к примеру, назначать бонусы не за любые комментарии, а после модерации), необходимо будет воспользоваться API модуля.


3. Настройка оплаты бонусами (рис)
  1. Укажите каталоги, в которых в которых разрешена оплата бонусами. Если вы используете торговые предложения, их тоже нужно указать
  2. Укажите настройку товаров,  которые можно оплатить бонусами . Варианты: "все товары", "указанные товары".

    При выборе пункта "Все товары" оплатить бонусами можно будет любой товар.

    При выборе пункта "Указанные товары" в настройках товаров и подразделов выбранных каталогов появится пункт "Разрешить оплату товара бонусами" (рис1 - раздел, рис2 - товар), имеющий три значения "(не установлено)", "Да", "Нет". По умолчанию настройка включена - оплатить бонусами можно любой товар.

    Переключатель значений работает следующим образом:
    "Да" - если это установлено в товаре, товар можно оплатить бонусами, если это установлено в разделе - любой товар раздела можно оплатить бонусами.
    "Нет" - если установлено в товаре, товар нельзя оплатить бонусами, если установлено в разделе - любой товара раздела нельзя оплатить бонусами.
    "(не установлено)" - если это установлено в торговом предложении, берётся настройка товара, если в товаре - берётся настройка раздела, если в разделе - берётся настройка родительского раздела, если в разделе верхнего уровня - назначается "Да" - оплатить бонусами можно.
    При этом приоритетной настройкой является настройка товара.
    Например, разрешение на раздел товаров установлено "Нет", но на единичный товар установлено "Да" - это товар можно будет оплатить бонусами. Или - разрешение на раздел установлено "Да", а на единичный товар в разделе установлено "Нет" - товар нельзя будет оплатить бонусами.

  3. Укажите Необходимую накопленную сумму бонусов для осуществления бонусной покупки.

    Если сумма бонусов на счету пользователя будет меньше указанной, расплатиться бонусами будет нельзя. Если минимальная сумма не установлена (0), ограничений по этому параметру нет.

  4. Укажите Как оплачивать заказ. Варианты - "разрешить частичную оплату заказа", "Только в полном объёме".

    Если установлено "Разрешить частичную оплату заказа", то пользователь сможет оплатить заказ бонусами даже если на его бонусном счету не окажется полной стоимости заказа. При этом заказ будет частично оплачен бонусами, а частично, выбранным пользователем способом оплаты.

  5. Укажите Процент от суммы покупки, который можно оплатить бонусами

    Данная настройка ограничивает количество бонусов, которые клиент может потратить при оплате заказа. Например, на счету клиента 1000 бонусов, и он оформляет заказ на 100 руб., а данная настройка выставлена на 20%. Тогда, клиент сможет оплатить бонусами лишь 20р., а остаток должен будет оплатить другим способом оплаты. Не зависимо от того, что сумма бонусов на счету клиента превышает общую стоимость заказа. Если же сумма бонусов на счету клиента меньше 20%, то при оплате бонусами, они потратятся до остатка.

  6. Укажите что делать при оплате заказа с разными товарами (бонусными и небонусными)

    Если в пункте "Товары, которые можно оплатить бонусами" указан пункт "Указанные товары", а в корзине покупателя оказались товары которые разрешено оплачивать бонусами и товары, которые не разрешено оплачивать бонусами и выбран пункт "Разрешать оплачивать бонусами", то всю корзину можно будет оплатить бонусом. Если же стоит запрет - всю корзину нельзя будет оплатить бонусом.

  7. Возврат по статусу (варианты - статусы заказов)

    Установка данной настройки позволит снимать оплату с заказа и возвращать средства на счёт пользователя при установке заказу, оплаченному бонусами, выбранного статуса.
    При этом, независимо от этой настройки, бонусы автоматически будут возвращены при удалении или отмене заказа. Также, при ручном снятии с заказа оплаты, в административном интерфейсе есть возможность возврата средств на счёт пользователя.

  8. Укажите типы плательщиков, которым запрещена оплата бонусами
  9. Укажите скидки, при которых запрещена оплата бонусами
Для полноценной работы модуля, вам необходимо будет установить следующие компоненты:

  1. Состояние счёта пользователя. (рис1, рис2)

    Для установки, в визуальном редакторе выберите - "Решения embx.ru" / "Бонусы покупателям" / "Бонус покупателя"
    Компонент имеет два шаблона.
    Первый - simple - выводит сумму на бонусном счету пользователя.
    Второй - visual - выводит иконку модуля бонусов, по наведению выводится подсказка с количеством бонусов, по клику переход в раздел "Бонусный счёт" (/personal/account/)
    Пример:

    <?$APPLICATION->IncludeComponent(
    	"embx:userbonus.userinfo",
    	"visual",
    	Array(
    		"COMPONENT_TEMPLATE" => "visual",
    		"PATH_TO_PRODUCTS" => "/catalog/",
    		"PATH_TO_ADD" => "/personal/account/",
    		"SHOW_USUM" => "Y"
    	)
    );?>
    
    Параметры PATH_TO_ADD и PATH_TO_PRODUCTS могут быть пустыми, тогда соответствующие ссылки не будут выводиться. Параметр SHOW_USUM (Отображать неподтверждённые бонусы?) позволяет выводить строку с информацией о неподтверждённых бонусах - это бонусы которые будут начислены клиенту после оплаты заказов.

    Раздел /personal/account/ (Бонусный счёт) после установки модуля формируется автоматически. В нём два компонента - embx:userbonus.account.pay - для пополнения счёта кодами пополнения и bitrix:sale.personal.account для вывода информации о счёте клиента.

  2. На страницах каталога необходимо установить компонент для отображения информации о возможности получения бонуса при покупке товара, сумме возможного бонуса и возможности оплаты товара бонусами (рис)

    Для установки, выберите в визуальном редакторе "Решения embx.ru" / "Бонусы покупателям" / "Информация о товаре". И настройте компонент. Или установите компонент вручную:

    <?$APPLICATION->IncludeComponent("embx:userbonus.product.info", 
       "", 
      Array( 
       "ELEMENT_ID" => $arResult["ID"], 
       "IS_BONUS_SPEND" => "Y", 
       "IS_BONUS_ADD" => "Y", 
       "CACHE_TYPE" => "A", 
       "CACHE_TIME" => "36000000", 
       "CACHE_GROUPS" => "N" 
      ), 
      $component ); ?>
    

    Настройка компонента для товаров с торговыми предложениями заключается в том, что каждому предложению необходимо вызвать свой компонент и выводить информацию о бонусах после выбора пользователя. Эта настройка возможно только с привлечением программиста.

  3. Бонусы в корзине (рис)

    Для установке выберите "Решения embx.ru" / "Бонусы покупателям" / "Бонусы в корзине". И настройте компонент. Или установите компонент вручную в нужное место шаблона корзины:

    <?$APPLICATION->IncludeComponent(
    	"embx:userbonus.basket.info",
    	"",
    	Array(
    		"COMPONENT_TEMPLATE" => ".default"
    	)
    );?>
    
  4. Добавление средств на счет текущего пользователя (рис)

    Компонент необходим если вы планируете разрешить пользователю пополнять бонусный счёт с помощью кодов пополнения.
    Для установки выберите "Решения embx.ru" / "Бонусы покупателям" / "Добавление средств на счет текущего пользователя". И настройте компонент. Или установите компонент вручную:

    <?$APPLICATION->IncludeComponent(
    	"embx:userbonus.account.pay", 
    	"", 
    	array(		
    	),
    );?>
    

    При установке модуля, данный компонент устанавливается автоматически на странице /personal/account/ (Бонусный счёт)

  5. Информация о бонусных транзакциях текущего пользователя (рис)

    Для установке выберите "Решения embx.ru" / "Бонусы покупателям" / "Информация о бонусных транзакциях текущего пользователя". И настройте компонент. Или установите компонент вручную:

     <?$APPLICATION->IncludeComponent(
    	"embx:userbonus.transact", 
    	".default", 
    	array(
    		"COMPONENT_TEMPLATE" => ".default",
    		"PAGER_TEMPLATE" => "round",
    		"DISPLAY_TOP_PAGER" => "N",
    		"DISPLAY_BOTTOM_PAGER" => "Y",
    		"PAGER_TITLE" => "",
    		"PAGER_SHOW_ALWAYS" => "N",
    		"PAGE_ELEMENT_COUNT" => "20"
    	),
    	false
    );?>
    

    При установке модуля, данный компонент устанавливается автоматически на странице /personal/account/ (Бонусный счёт)

События:

OnBeforePayBonus($OrderID, $arOrder)

срабатывает перед оплатой заказа бонусами (в обработке OnOrderAdd)- если вернуть false, можно отменить оплату

Параметры:
$OrderID - ID заказа
$arOrder - данные заказа (результат вызова CSaleOrder::GetByID($OrderID))

OnPayBonus($OrderID, $arOrder)

срабатывает после оплаты заказа бонусами(в обработке OnOrderAdd)

Параметры:
$OrderID - ID заказа
$arOrder - данные заказа (результат вызова CSaleOrder::GetByID($OrderID))

OnBeforeCheckPayBonus(&$arResult, &$arUserResult, &$arParams)

срабатывает перед проверкой возможности оплаты бонусами
(в обработке OnSaleComponentOrderOneStepProcess) - если вернуть false, можно запретить возможность оплаты.
При этом кнопка оплаты с внутреннего счёта исчезнет с формы заказа.

Параметры:
&arResult -	Массив arResult компонента
&arUserResult -	Массив arUserResult компонента, содержащий текущие выбранные пользовательские данные
arParams - Массив параметров компонента

OnBeforeSetBonus(&$USER_ID, &$sum, &$currency, &$note, &$descr, &$OrderID, &$site_id)

перед начислением бонуса (метод SetBonus) - если вернуть false, можно отменить начисление

Параметры - см. SetBonus

OnSetBonus($uSuccess, $USER_ID, $sum, $currency, $descr, $OrderID, $site_id)

после начисления бонуса

Параметры - см. SetBonus
$uSuccess - флаг успеха

OnBeforeSomeEvent(&$args)

перед выполнением произвольного бонуса по событию (в обработке OnSomeEvent) - если вернуть false, можно отменить

Параметры:
$args[0] - массив параметров дополнительного события
	id - ID
	name - Наименование
	module - Модуль
	event - Событие
	bonus - Размер бонуса
	limit - Ограничение,
	period - Срок ограничения
	USER_ID - ID пользователя, которому будет начислен бонус
$args[...] - параметры сработавшего события. Например, для blog:OnCommentAdd - $args[1] = $ID, $args[2] = &$arFields


Пример:

AddEventHandler("embx.userbonus", "OnBeforeSomeEvent", Array("MyClass", "OnBeforeSomeEventHandler"));
class MyClass
	{
	    function OnBeforeSomeEventHandler(&$args)
	    {
			//обработка
	    }
}	

OnAfterSomeEvent(&$args)

после выполнения произвольного бонуса по событию (в обработке OnSomeEvent)

Параметры аналогичны OnBeforeSomeEvent


Функции:

SetBonus($USER_ID, $sum, $currency, $note = "", $descr = "", $OrderID = 0, $site_id = SITE_ID) - Функция заносит средства на счёт пользователя (или снимает со счёта) и отсылает емейл-уведомление
$USER_ID - ID пользователя, на счёт которого производится начисление или с которого снимается бонус
$sum - сумма бонуса
$currency - валюта бонуса
$note - описание бонуса
$descr - код бонуса, доступны варианты:
	EMBX_USERBONUS - Бонус покупателю
	EMBX_USERBONUS_PAY - Оплата заказа бонусами
	EMBX_USERBONUS_SE - Бонус по событиям
	EMBX_USERBONUS_SS - Бонус за подписку
	EMBX_USERBONUS_DR - Бонус на день рождения
	EMBX_USERBONUS_REG - Бонус за регистрацию
	EMBX_USERBONUS_RET - Возврат бонуса
	EMBX_USERBONUS_ORDER - Бонус за покупку
	EMBX_USERBONUS_TIME - Списание бонуса в связи с истечением срока действия
$OrderID - ID заказа (если бонус связан с заказом)
$site_id - ID сайта

Возврат к списку