Дисконтные карты в «1С-Битрикс»

Александр Стерхов

Веб-разработчик

Дисконтные карты в «1С-Битрикс»

Одним из самых распространенных элементов маркетинговой стратегии магазинов являются дисконтные карты. Действительно, покупатели предпочитают приобретать необходимые товары у тех предприятий, которые предоставляют им возможность получать дополнительные выгоды от этого. Поэтому 1С предоставляет широкий функционал для управления различными видами дисконтных карт. Однако, он не реализован в CMS Битрикс.

Задача

В модуле Интернет—магазин CMS 1С-Битрикс для получения скидки можно добавить купон. Их можно использовать как дисконтные карты пользователей. Но купоны с помощью стандартного функционала нельзя синхронизировать с 1С.

Решение

  1. создадим инфоблок Дисконтные карты;
  2. добавим свойство Вид карты типа список со значениями «Золотая карта» (10% скидки), «Серебряная карта» (5% скидки), «Зелёная карта» (3% скидки).
  3. добавим 3 группы пользователей: «С золотой картой», «С серебряной картой», «С зелёной картой».
  4. создадим пользовательское свойство «Дисконтные карты», объектом которого будет USER, а значения — привязка к элементам инфоблока Дисконтные карты;
  5. добавим три скидки на товар «Зелёная» (3%), «Серебряная» (5%) и «Золотая» (10%).

Теперь напишем небольшой скрипт, который будет привязывать пользователя к соответствующей его дисконтной карте, группе.

Проверим, есть ли в инфоблоке дисконтная карта с соответствующим номером:

$rsDiscount = CIBlockElement::GetList(
	array(),
	array("IBLOCK_ID"=>#ID#, "ACTIVE"=>"Y", "NAME"=>$_REQUEST["cardNumber"]),
	false,
	array("nTopCount"=>1),
	array("ID", "IBLOCK_ID", "PROPERTY_CART_TYPE")
);

Если такая карта нашлась, то добавляем пользователя к одной из трех групп:

if ($arDiscount = $rsDiscount->GetNext()) {
	$result = array_diff(
		$USER->GetUserGroupArray(),
		array(#ID_GREEN_GROUP#, #ID_SILVER_GROUP#, #ID_GOLD_GROUP#)
	);

	$newGroup = array_merge($result, array(#USER_GROUP_ID#));
	$USER->SetUserGroupArray($newGroup);

И присваиваем созданному ранее пользовательскому свойству идентификатор дисконтной карты в инфоблоке:

	$arFields = Array("UF_DISCOUNT_CART"=>$arDiscount["ID"]); 
	$USER->Update($USER->GetId(), $arFields);
}

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

Таким образом были создан функционал для работы с дисконтными картами пользователей, который, по сравнению с купонами имеет ряд преимуществ:

  1. купоны нельзя синхронизировать с 1С стандартным функционалом;
  2. нельзя применить два купона для текущей корзины;
  3. величина скидки сразу видна в каталоге, а при применении купона — только в корзине.

Комментарии

Тут без вас никак. Поделитесь с нами вашими мыслями

Горячие вакансии