Дисконтные карты

Дисконтные карты выдаются (либо генерируются автоматически) клиенту (необходим модуль CRM:Клиенты), в зависимости от уровня дисконтной карты клиенту могут предоставляются соответствующие скидки при оформлении заказа, также на дисконтной карте накапливаются бонусы.

Для управления дисконтными картами и уровнями дисконтной программы в основном меню выберите КонтентИнтернет-магазины → выбрать магазин → СкидкиДисконтные карты

Список дисконтных карт в магазине HostCMS

При сохранении карты, если ее номер не указан, то генерируется в соответствии с шаблоном, указанным в атрибутах магазина. Уровень и сумму явно указывать нет необходимости, они автоматически рассчитаются по истории заказов выбранного клиента.

Добавление дисконтной карты клиента в HostCMS

Бонусы на карте

Бонусы начисляются на дисконтную карту клиента, при начислении можно указать период действия, а также тип зачисления:

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

Уровни дисконтных карт

Уровни дисконтных карт задают процент скидки и порядок следования уровней в иерархии дисконтной программы.

Уровни дисконтных карт HostCMS

Для ускорения загрузки данных о картах реализован импорт и экспорт списка дисконтных карт.

Экспорт дисконтных карт

Список карт экспортируется в CSV-файл в формате

"Номер карты";"Дата выдачи";"Логин клиента";"Накопленная сумма";"Уровень";"Скидка, %"

Импорт дисконтных карт

Внесите в поле импорта дисконтные карты в формате

номер карты;логин клиента;телефон клиента;идентификатор уровня;сумма

и нажмите Применить.

Бонусы

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

Списание бонусов при заказе

Для настройки списания доступных бонусов клиента при заказе необходимо внести некоторые изменения в XSL-шаблон корзины и типовую динамическую страницу корзины.

Рассмотрим пример добавления, как на http://demoshop.hostcms.ru/

  1. Редактируем XSL-шаблон корзины и в теге <form>, после поля добавления купона, добавляем блок:
    <xsl:if test="siteuser_id > 0">
    	<xsl:variable name="available_bonuses">
    		<xsl:choose>
    			<xsl:when test="apply_bonuses/node()">
    				<xsl:value-of select="apply_bonuses" />
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:value-of select="available_bonuses" />
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:variable>
    
    	<xsl:variable name="apply_bonuses">
    		<xsl:choose>
    			<xsl:when test="apply_bonuses/node()">
    				<xsl:value-of select="apply_bonuses" />
    			</xsl:when>
    			<xsl:otherwise>
    				0
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:variable>
    
    	<div class="col-xs-6 col-sm-3">
    		<!-- Бонусы -->
    		<div class="shop-coupon">
    			<div>Бонусы, доступно <span class="bold"><xsl:value-of select="floor(available_bonuses - $apply_bonuses)"/></span></div>
    			<input class="form-control" name="bonuses" value="{floor($available_bonuses)}" type="text" />
    		</div>
    	</div>
    </xsl:if>
    
  2. Теперь необходимо обрабатывать введенные в поле данные. Для этого переходим в ТДС корзины.
    • Вкладка "Настройки страницы". Добавляем блок:
      // Запоминаем количество списываемых бонусов
      if (!is_null(Core_Array::getRequest('bonuses')))
      {
      	Core_Session::start();
      	$_SESSION['hostcmsOrder']['bonuses'] = trim(strval(Core_Array::getRequest('bonuses')));
      }
      
    • Вкладка "Код страницы". После строки $_SESSION['last_order_id'] = 0; добавляем строку $_SESSION['hostcmsOrder']['bonuses'] = trim(strval(Core_Array::getRequest('bonuses')));

Интеграция в личном кабинете клиента

В личном кабинете клиента есть возможность вывести показ бонусов на 60 дней от текущей даты.

Рассмотрим пример добавления, как на http://demoshop.hostcms.ru/

  1. В списке XSL-шаблонов находим шаблон ДисконтныеКарты. В темплейте <xsl:template match="shop_discountcard"> добавляем блок:
    <xsl:if test="bonuses/node() and bonuses/@max">
    	<div class="row">
    		<div class="col-12">
    			<div class="bonuses-wrapper">
    				<xsl:for-each select="bonuses/day">
    					<xsl:variable name="bonus_value" select="."/>
    					<xsl:variable name="height" select="round($bonus_value * 100 div ../@max)"/>
    
    					<div class="bonuses-container">
    						<div class="bonuses-bar series-none" style="flex-basis: {100 - $height}%"></div>
    						<div class="bonuses-bar series-bonuses" style="flex-basis: {$height}%">
    							<xsl:if test="$bonus_value > 0">
    								<div class="bonuses-value"><xsl:value-of select="$bonus_value" /></div>
    							</xsl:if>
    						</div>
    
    						<div class="date"><xsl:value-of select="@date" /></div>
    					</div>
    				</xsl:for-each>
    			</div>
    		</div>
    	</div>
    </xsl:if>
    
  2. Далее переходим в основной макет сайта, вкладка "CSS" и добавляем стили для блока:
    .bonuses-wrapper {
    	display: flex;
    	height: 50vh;
    	align-items: stretch;
    
    	max-width: 1000px;
    	overflow-x: scroll;
    
    	margin-top: 50px;
    }
    
    .bonuses-container {
    	flex: 1;
    	display: flex;
    	flex-direction: column;
    	align-items: stretch;
    	justify-content: flex-end;
    	margin-right: 2px;
    }
    
    .series-none { background: #ccc; }
    .series-bonuses { background: #e91e63; text-align: center; }
    
    .bonuses-container .date {
    	font-size: 9px;
    	margin-top: -15px;
    	color: #fff;
    	padding: 2px;
    }
    
    .bonuses-value {
    	font-size: 10px;
    	color: #fff;
    	margin-top: 5px;
    }
    

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.