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

Воздействия к чеку применяются в следующем порядке:

  • применение скидок,
  • списание баллов,
  • начисление баллов.

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

При использовании оплаты сертификатом как скидкой на чек тип скидки по сертификату игнорируется!

Пример

 Предположим имеется правило начисления бонусов:

Объект - позиция
Условие 1 - применена карта
Условие 2 - not cf.hasInventDiscount() (не начислять бонусы, если к позиции применена скидка)
В данном случае, если позиции будут оплачены сертификатом как скидкой, то на данные позиции бонусы начислены не будут.


isDiscountApplied – Применено воздействие

isDiscountApplied – функция возвращает факт применения воздействия к текущей позиции (применение скидки, начисление или списание бонусных баллов). 

Пример
Применить воздействие (применить скидку, начислить или списать баллы), если к позиции не было применено воздействий.
not cf.isDiscountApplied()

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

hasInventImpact – К позиции применено воздействие

hasInventImpact – функция возвращает факт применения воздействия к текущей позиции (применение скидки, начисление или списание бонусных баллов). Является синонимом функции isDiscountApplied.

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

hasInventDiscount – К позиции применена скидка

Данная функция может быть использована только в системах начисления и списания бонусных баллов.

hasInventDiscount – функция возвращает факт применения скидок к текущей позиции.

Пример
Не начислять/списывать баллы, если к позиции была применена скидка.
not cf.hasInventDiscount()
Если в чеке сработали скидочные воздействия, то бонусные баллы не будут начислены на карту клиента.

hasInventBonus – Позиция оплачена бонусами

Данная функция может быть использована только в системе начисления бонусных баллов.

hasInventBonus – функция возвращает факт списания бонусных баллов для текущей позиции.

Пример
Пример 1
При задании условия в системе начисления бонусных баллов:
cf.hasInventBonus()
Баллы будут начислены только в том случае, если в чеке выполнена оплата бонусными баллами.
 
Пример 2
При задании условия в системе начисления бонусных баллов:
not cf.hasInventBonus()
Баллы не будут начислены, если в чеке выполнена оплата бонусными баллами.

hasCampaignLabels – У дисконтной акции есть метки

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

hasCampaignLabels – функция возвращает для позиции в чеке список дисконтных акций, у которых заданы метки.

При задании условия с функцией hasCampaignLabels в бонусной акции можно применять или запрещать ее применение к позиции, к которой применены дисконтные акции с метками из списка.

Пример
Пример 1
Необходимо задать акцию по начислению бонусных баллов только на те позиции, на которые не было дисконтного воздействия.
Пусть задана акция, в рамках которой предоставляется скидка 10% на первую позицию в чеке. Для дисконтной акции задана метка "discount".
Для того, чтобы начисление бонусов выполнялось без учета позиции со скидкой, в бонусную акцию необходимо добавить условие:
not cf.hasCampaignLabels(["discount"])
В результате применения воздействий бонусные баллы не будут начислены на первую позицию в чеке.
 
Пример 2
Необходимо задать акцию по начислению бонусных баллов только на позиции со скидкой. 
Пусть задана дисконтная акция, в рамках которой предоставляется скидка 5% на все товары с кодом "111". Для дисконтной акции задана метка "discount".
Для того, чтобы бонусные баллы начислялись только на позиции с этой скидкой, в бонусную акцию необходимо добавить условие:
cf.hasCampaignLabels(["discount"])
  • No labels