Воздействием называется результат применения акции в системе расчета скидок, начисления или списания бонусных баллов. При добавлении новой акции приходится учитывать факт применения остальных акций. Акции могут взаимодействовать внутри одной системы (применения скидок), например, применить скидку к товару, если еще не применялись другие скидки. Взаимодействие акций может происходить между системами (применение скидок и начисление баллов), например, не начислять бонусные баллы на акционные товары (к которым применена скидка).
Воздействия к чеку применяются в следующем порядке:
- применение скидок,
- списание баллов,
- начисление баллов.
Таким образом, при расчете суммы списания баллов могут быть учтены примененные скидки. При расчете суммы начисляемых баллов можно учитывать факты применения скидок и списания баллов.
При использовании оплаты сертификатом как скидкой на чек тип скидки по сертификату игнорируется!
Предположим имеется правило начисления бонусов:
Объект - позиция
Условие 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"])