Дисконтные карты выдаются (либо генерируются автоматически) клиенту (необходим модуль CRM:Клиенты), в зависимости от уровня дисконтной карты клиенту могут предоставляются соответствующие скидки при оформлении заказа, также на дисконтной карте накапливаются бонусы.
Для управления дисконтными картами и уровнями дисконтной программы в основном меню выберите Контент → Интернет-магазины → выбрать магазин → Скидки → Дисконтные карты
При сохранении карты, если ее номер не указан, то генерируется в соответствии с шаблоном, указанным в атрибутах магазина. Уровень и сумму явно указывать нет необходимости, они автоматически рассчитаются по истории заказов выбранного клиента.
Бонусы начисляются на дисконтную карту клиента, при начислении можно указать период действия, а также тип зачисления:
Здесь же вы можете списать у клиента бонусы, поле списания содержит подсказку с суммой доступных бонусов.
Уровни дисконтных карт задают процент скидки и порядок следования уровней в иерархии дисконтной программы.
Для ускорения загрузки данных о картах реализован импорт и экспорт списка дисконтных карт.
Список карт экспортируется в CSV-файл в формате
"Номер карты";"Дата выдачи";"Логин клиента";"Накопленная сумма";"Уровень";"Скидка, %"
Внесите в поле импорта дисконтные карты в формате
номер карты;логин клиента;телефон клиента;идентификатор уровня;сумма
и нажмите Применить.
На дисконтную карту начисляются бонусы клиентов в соответствии с правилами начислений, заданных у бонуса. Максимальный размер списания бонусов указывается в атрибутах магазина.
Для настройки списания доступных бонусов клиента при заказе необходимо внести некоторые изменения в XSL-шаблон корзины и типовую динамическую страницу корзины.
Рассмотрим пример добавления, как на http://demoshop.hostcms.ru/
<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>
// Запоминаем количество списываемых бонусов 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/
ДисконтныеКарты
. В темплейте <xsl:template match="shop_discountcard">
добавляем блок:
<xsl:if test="bonuses/node() and bonuses/@max"> <div class="row"> <div class="col-xs-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>
.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; }