Возможности кассового ПО Artix позволяют организовывать маркетинговые акции, используя функции для задания условий при работе с товарами. Товарами считаются товары в чеке, имеющие одинаковые коды и штрих-коды.
Опции товара
hasInventOptions – Наличие опции у товара
hasInventOptions([options])
– функция сработает, если товару назначена указанная опция.
Параметры функции:
options
– опция товара.
Опция - это признак товара, который задается при добавлении товара в базу, например, скоропортящийся, уцененный и т. д.
cf.hasInventOptions([u"уцененный"]) Скидка сработает, если товар имеет признак "уцененный". Скидка применяется на позицию.
inventInCheckByOption – Наличие товара с опцией
inventInCheckByOption([options])
– функция сработает, если в чеке есть товар с указанной опцией.
Параметры функции:
options
– опция товара.
Опция - это признак товара, который задается при добавлении товара в базу, например, скоропортящийся, уцененный и т. д.
cf.inventInCheckByOption([u"уцененный"]) Скидка сработает на каждую позицию в чеке или на чек (в зависимости от объекта скидки), если в документе будет хотя бы один товар с признаком "уцененный".
inventQuantInCheckByOption – Количество товаров в чеке с указанной опцией
inventQuantInCheckByOption(options)
– функция сработает, если количество товаров с указанными опциями равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара.
cf.inventQuantInCheckByOption([u"num"]) == 2. Скидка с данным условием сработает, если количество товаров в чеке с опцией "num" равно 2.
inventSumInCheckByOption – Сумма товаров в чеке с указанной опцией
inventSumInCheckByOption(options,withPartOfKit)
– функция сработает, если сумма товаров с указанной опцией равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventSumInCheckByOption([u"num"],False) == 100 Скидка с данным условием сработает, если сумма цен на все товары в чеке с опцией "num" равна 100. При подсчете количества товаров не учитываются товары, входящие в наборы.
inventQuantInCheckWithAllOptions – Количество товаров в чеке со всеми указанными опциями
inventQuantInCheckWithAllOptions
(options,withPartOfKit)
– функция сработает, если количество товаров с указанными опциями равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventQuantInCheckWithAllOptions([u"уценка",u"распродажа"],True) <= 4 Скидка с таким условием сработает, если количество товаров в чеке с опциями "уценка" и "распродажа" меньше либо равно 4. При подсчете количества товаров учитываются товары, входящие в комплект.
inventSumInCheckWithAllOptions – Сумма товаров в чеке со всеми указанными опциями
inventSumInCheckWithAllOptions(options,withPartOfKit)
– функция сработает, если сумма товаров с указанными опциями равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventSumInCheckWithAllOptions([u"num"],True) <= 100 Скидка с таким условием сработает, если сумма товаров в чеке с опцией "num" меньше либо равна 100, при этом учитываются товары, входящие в комплект.
Код товара
inventInCheckByCode – Наличие в чеке товара с указанным кодом
inventInCheckByCode([code])
– функция сработает, если в чеке присутствует товар с указанным кодом.
Параметры функции:
code
– код товара.
cf.inventInCheckByCode([u"11"]) Если в чеке есть товар с кодом "11", то сработает скидка.
inventSumInCheckByCode – Сумма товаров в чеке с указанным кодом
inventSumInCheckByCode(code)
– функция сработает, если сумма товаров в чеке с указанным кодом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
code
– код товара.
cf.inventSumInCheckByCode([u"102"]) >= 22.0 Скидка с данным условием сработает, если сумма цен всех товаров в чеке с кодом 102 будет больше или равна 22.0.
inventQuantInCheckByCode – Количество товара в чеке с указанным кодом
inventQuantInCheckByCode
(code)
– функция сработает, если количество товара в чеке с указанным кодом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
code
– код товара.
cf.inventQuantInCheckByCode([u"102"]) == 2 Скидка с данным условием сработает, если количество всех товаров в чеке с кодом 102 будет равно 2.
hasInventAllCodes – Количество товаров в чеке с указанным кодом
hasInventAllCodes([codes], requiredCount)
– функция сработает, если количество каждого из указанных товаров в чеке больше или равно указанному значению.
Параметры функции:
codes
– список кодов товаров;requiredCount
– количество вхождений каждого товара в чек.
cf.hasInventAllCodes(["1","100"],2) Скидка с данным условием сработает в том случае, если в чеке будет присутствовать 2 товара (или более) с кодом "1" и 2 товара (или более) с кодом "100". При наличии в чеке 1 товара с кодом "1" и 2 товаров с кодом "100" скидка не сработает.
Параметр requiredCount
не обязателен, если его не указывать, то проверяется вхождение в чек по 1 единице каждого товара из списка.
Штрих-код товара
inventInCheckByBcode – Наличие в чеке товара с указанным штрих-кодом
inventInCheckByBcode([bcode])
– функция сработает, если в чеке присутствует товар с указанным штрих-кодом.
Параметры функции:
bcode
– штрих-код товара.
cf.inventInCheckByBcode([u"4607032142362"]) Скидка сработает, если в чеке имеется товар со штрих-кодом "4607032142362".
inventSumInCheckByBcode – Сумма товаров в чеке с указанным штрих-кодом
inventSumInCheckByBcode
(code)
– функция сработает, если сумма товаров в чеке с указанным штрих- кодом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
bcode
– штрих-код товара.
cf.inventSumInCheckByBCode([u"4607032142362"]) == 2.20 Скидка с данным условием сработает, если сумма цен всех товаров в чеке с штрих-кодом 4607032142362 будет равна 2.20.
inventQuantInCheckByBcode – Количество товаров в чеке с указанным штрих-кодом
inventQuantInCheckByBcode
(bcode)
– функция сработает, если количество товаров в чеке с указанным штрих-кодом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
bcode
– штрих-код товара.
cf.inventQuantInCheckByBcode([u"4607032142362"]) == 2 Скидка с данным условием сработает, если количество всех товаров в чеке со штрих-кодом 4607032142362 будет равно 2.
Каталог
hasInventCatalogs – Товар входит в каталог
hasInventCatalogs(catalog)
– функция сработает, если товар входит в указанный каталог.
Параметры функции:
catalog
– код каталога.
Каталог создается для объединения некоторого списка товаров, на которые планируется скидка.
cf.hasInventCatalogs([u"1"]) В данном случае скидка сработает на все товары, входящие в каталог в кодом 1.
hasInventAllCatalogs – Товар входит во все каталоги
hasInventAllCatalogs(catalogs)
– функция сработает, если товар входит во все указанные каталоги.
Параметры функции:
catalogs
– список кодов каталогов.
cf.hasInventAllCatalogs([u"1"], [u"2"]) Скидка сработает, если товар входит одновременно в каталоги с кодами 1 и 2.
inventQuantInCheckByCatalog – Количество товаров в чеке с указанным каталогом
inventQuantInCheckByCatalog
(catalog, withPartOfKit)
– функция сработает, если количество товаров в чеке с указанным каталогом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventQuantInCheckByCatalog([u"num"],True) == 1 Скидка с данным условием сработает, если количество товаров в чеке с каталогом "num" равно 1. При подсчете количества позиций учитываются позиции с товарами, входящими в набор.
inventSumInCheckByCatalog – Сумма товаров в чеке с указанным каталогом
inventSumInCheckByCatalog(
catalog, withPartOfKit)
– функция сработает, если сумма товаров в чеке с указанным каталогом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventSumInCheckByCatalog([u"num"],True) != 100 Скидка с данным условием сработает, если сумма товаров в чеке с каталогом "num" не равна 100. При подсчете количества позиций учитываются позиции с товарами, входящими в набор.
inventQuantInCheckWithAllCatalogs – Количество товаров в чеке со всеми указанными каталогами
inventQuantInCheckWithAllCatalogs
– функция сработает, если количество товаров в чеке со всеми указанными каталогами равно (<,>, <=, >=, !=) выбранному значению.(
catalog, withPartOfKit)
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventQuantInCheckWithAllCatalogs([u"num1, num2"],True) == 2.00 Скидка с данным условием сработает, если количество товаров в чеке, входящих одновременно в каталоги "num1" и "num2", равно 2. При подсчете количества позиций учитываются позиции с товарами, входящими в набор.
inventSumInCheckWithAllCatalogs – Сумма товаров в чеке со всеми указанными каталогами
inventSumInCheckWithAllCatalogs
– функция сработает, если сумма товаров в чеке со всеми указанными каталогами равна (<,>, <=, >=, !=) выбранному значению.(
catalog, withPartOfKit)
Параметры функции:
catalog
– название каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventSumInCheckWithAllCatalogs([u"11"],True) <= 140 Скидка с данным условием сработает, если сумма товаров из каталога 11 меньше либо равна 140, при этом учитываются товары, являющиеся частью комплекта.
Группа товаров
inventQuantInCheckByGroup – Количество товаров с указанными группами
inventQuantInCheckByGroup(groups, withPartOfKit)
– функция сработает, если количество товаров с указанной группой в чеке равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
groups
– список кодов групп;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventQuantInCheckByGroup([u"1",u"2"],False) == 3 Скидка с таким условием сработает, если количество товаров, относящихся к группам "1" и/или "2" равно 3, при этом товары, являющиеся частью комплекта, не учитываются.
inventSumInCheckByGroup – Сумма товаров с указанными группами
inventSumInCheckByGroup(groups, withPartOfKit
) – функция сработает, если сумма товаров с указанной группой в чеке равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
groups
– список кодов групп;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметраwithPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.
cf.inventSumInCheckByGroup([u"1",u"2"],True) >= 100 Скидка с данным условием сработает, если сумма товаров, относящихся к группам "1" и "2" больше либо равна 100, при этом учитываются товары, входящие в наборы.
hasInventGroup – Товар входит в указанную группу
hasInventGroup(group)
– функция сработает, если товар входит в указанную группу.
Параметры функции:
group
– коды группы товаров.
cf.hasInventGroup([u"1"]) Скидка с таким условием сработает, если товар входит в группу с кодом 1.
Если в параметре функции указано несколько групп, то функция проверяет наличие у товара хотя бы одной из указанных групп, а также всех подгрупп, входящих в указанные группу.
Другие
inventQuantInCheck – Количество товаров в чеке
inventQuantInCheck(uniteFractional)
– функция сработает, если количество товаров в чеке равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
uniteFractional
– правила подсчета позиций весового товара.- При значении
uniteFractional
= True
функция считает за единицу один весовой товар, даже если он был добавлен в чек несколькими позициями (объединяет при подсчете несколько позиций с одним весовым товаром в одну). - При значении
uniteFractional
= False
функция считает за единицу каждый добавленный в чек весовой товар.
- При значении
cf.inventQuantInCheck(True) == 3 Скидка с таким условием сработает, если количество товаров в чеке равно 3.
everyNextNumber – На каждый N-й товар в чеке
everyNextNumber(number, desc)
– скидка сработает на каждый N-й товар в чеке.
Параметры функции:
number
– номер позиции;desc
– сортировка товаров по цене.- При значении параметра
desc = True
скидка предоставляется на каждый N-й товар по убыванию цены. - При значении
desc =
False
скидка предоставляется на каждый N-й товар по возрастанию цены.
- При значении параметра
Для того чтобы дать скидку на каждую 2-ю позицию в чеке на 5% необходимо в условие скидки добавить: object["posnum"] in cf.everyNextNumber(2,True)
cheapGoodsWithOptions – На N товаров из M с признаком
cheapGoodsWithOptions(count, extops, rate, scount, toCheapest)
– скидка сработает на N товаров из M с указанным признаком.
Для функции используется только суммовая расчетная ставка.
Параметры функции:
count
– M товаров с признаком;extops
– признак, указывающий на то, что товар участвует в акции, задаваемой данной функцией. Является обязательным параметром;rate
– величина скидки в процентах;scount
– N количество товаров из M, к которым применяется скидка;toCheapest
– позиции, к которым будет применена скидка.- При значении параметра
toCheapest = True
скидка применяется только к самым дешевым товарам. - При значении
toCheapest = False
скидка применяется ко всем товарам с опциями.
- При значении параметра
Функция разворачивает чек на позиции, выбирает все позиции с опциями, сортирует эти позиции по цене, выбирает scount
из count
товаров и рассчитывает скидку на товары. Скидка применяется ко всем товарам, участвующим в акции, или только к самым дешевым в соответствии с параметрами функции.
Для того чтобы дать скидку в размере 50% на 2 товара из 3-х с признаком "num" необходимо: создать условие object["posnum"] in cf.cheapGoodsWithOptions(3, [u"num"], 50, 2, False) сделать расчетную скидку по сумме rf.cheapGoodsWithOptions(3, [u"num"], 50, 2, False)[object["posnum"]]
Если в значении extops используются символы кириллицы, то при задании функции перед текстом необходимо ставить символ 'u'.
Например, rf.everyNextNumberOnGoods(6, [u'Акция "Скидка на 3 товара из 6"'], 50,3).
expensiveGoods – Скидка на самый дорогой товар дешевле N руб
expensiveGoods(countGoods, conditionSum, resultSum, ignorePosWithPriceEqualMin)
– функция установит цену со скидкой на N товаров дешевле или равной пороговой суммы.Для функции используется только суммовая расчетная ставка.
Параметры функции:
countGoods
– количество товаров в чеке, на которые дается скидка;conditionSum
– пороговая цена для товара. Цена товара за 1шт/кг должна быть меньше пороговой или равна ей, тогда к товару будет применена скидка;resultSum
– цена товара, которую будет иметь товар после применения скидки;ignorePosWithPriceEqualMin
– игнорировать позицию с ценой равной минимальной цене.- При значении параметра
ignorePosWithPriceEqualMin = True
функция игнорирует товары, для которых цена равна минимальной цене (true
значение по умолчанию). - При значении
ignorePosWithPriceEqualMin = False
функция будет учитывать товары, для которых цена равна минимальной цене. Чтобы на такой товар была дана скидка, необходимо в утилите администрирования Yuki включить опцию "Не учитывать минимальную цену".
- При значении параметра
Функция разбирает чек по товарам и сортирует их по цене. Выбирается countGoods
товаров из самых дорогих товаров, имеющих цену ниже или равную conditionSum
. Д
ля выбранных товаров задается цена resultSum
.
Чтобы дать скидку на 2 самых дорогих товара в чеке дешевле 35 рублей и установить цену после скидки в 1 рубль необходимо: создать условие object["posnum"] in cf.expensiveGoods(2, 35, 1, True) сделать расчетную скидку по сумме rf.expensiveGoods(2, 35, 1, True)[object["posnum"]]
Функция не применяется для товаров, входящих в набор.
Если цена самого дорогого товара равна минимальной, то товар не будет учтен в скидке. Функция выберет следующий по цене товар после самого дорогого.
Если у товара при добавлении в чек была изменена цена:
- применен модификатор,
- цена товара была выбрана из списка,
- в свойствах товара настроен обязательный ввод цены,
то для расчета скидки будут использованы цены, полученные после всех изменений.
Если к товару было применено несколько скидок, то при расчете скидки на самый дорогой товар дешевле N рублей, используется первоначальная цена.
В скидке задана функция с условиями:
- количество товаров в чеке - 2
- пороговая цена для товара - 35 рублей
- цена товара после применения скидки - 1 рубль
Чек состоит из позиций:
- Картофель 0,5 кг*30 рублей = 15 рублей
- Картофель 1,5 кг*30 рублей = 45 рублей
- Молоко 2 шт*25 рублей = 50 рублей
- Хлеб 1 шт*36 рублей = 36 рублей
Функция выбирает следующий товар:
- Картофель
- Молоко
- Молоко
- Хлеб
Скидка будет применена к 1 кг картофеля и 1 шт молока.
В чеке будут выполнен следующий перерасчет:
- Картофель 0,5 кг * 30 рублей = 15 рублей
- Картофель 1,5 кг * 30 рублей - 29 рублей (скидка) = 16 рублей (0,5 кг * 30 рублей + 1 кг * 1 рубль = 16 рублей)
- Молоко 1 шт * 25 рублей - 24 рубля (скидка) = 1 рубль
- Молоко 1 шт * 25 рублей = 25 рублей
- Хлеб 1 шт * 36 рублей = 36 рублей
expensiveGoodsFromCatalogs – Скидка на самый дорогой товар из каталога(ов)
expensiveGoodsFromCatalogs(countGoods, conditionSum, resultSum, ignorePosWithPriceEqualMin)
– функция установит цену со скидкой на N товаров из каталога(ов).
Для функции используется только суммовая расчетная ставка.
Параметры функции:
countGoods
– количество товаров в чеке, на которые дается скидка;conditionCatalogs
– список каталогов для которых действует скидка. (Пример:[u"2"]
или[u"1",u"2",u"4"]
);resultSum
– цена товара, которую будет иметь товар после применения скидки;ignorePosWithPriceEqualMin
– игнорировать позицию с ценой равной минимальной цене.- При значении параметра
ignorePosWithPriceEqualMin = True
функция игнорирует товары, для которых цена равна минимальной цене (true
значение по умолчанию). - При значении
ignorePosWithPriceEqualMin = False
функция будет учитывать товары, для которых цена равна минимальной цене. Чтобы на такой товар была дана скидка, необходимо в утилите администрирования Yuki включить опцию "Не учитывать минимальную цену".
- При значении параметра
Функция разбирает чек по товарам и сортирует их по цене. Выбирается countGoods
товаров из самых дорогих товаров, входящих в каталог(и) conditionCatalogs
. Для выбранных товаров задается цена resultSum
.
Чтобы дать скидку на 2 самых дорогих товара из каталога 2 и установить цену после скидки в 1 рубль необходимо: создать условие object["posnum"] in cf.expensiveGoodsFromCatalogs(2, [u"2", u"3"], 1, True) сделать расчетную ставку по сумме rf.expensiveGoodsFromCatalogs(2, [u"2", u"3"], 1, True)[object["posnum"]]
Функция не применяется для товаров, входящих в набор.
Если цена самого дорогого товара равна минимальной, то товар не будет учтен в скидке. Функция выберет следующий по цене товар после самого дорогого.
Если у товара при добавлении в чек была изменена цена:
- применен модификатор,
- цена товара была выбрана из списка,
- в свойствах товара настроен обязательный ввод цены,
то для расчета скидки будут использованы цены, полученные после всех изменений.
Если к товару было применено несколько скидок, то при расчете скидки на самый дорогой товар дешевле N рублей, используется первоначальная цена.
В скидке задана функция с условиями:
- количество товаров в чеке – 2.
- каталоги для которых действует скидка – 2, 3.
- цена товара после применения скидки – 1 рубль.
Чек состоит из позиций:
- Сок Манго 1 шт*100 рублей = 100 рублей (каталог 2).
- Сок Персик 1шт*85 рублей = 85 рублей (каталог 2).
- Молоко 2 шт*25 рублей = 50 рублей (каталог 1).
- Хлеб 1 шт*36 рублей = 36 рублей (каталог 1).
- Фанта 1 шт*92 рублей = 92 рублей (каталог 3).
Функция выбирает следующий товар:
- Сок Манго.
- Сок Персик.
- Фанта.
Скидка будет применена к товарам "Сок Манго" и "Фанта".
В чеке будут выполнен следующий перерасчет:
- Сок Манго 1 шт*100 рублей - 99 рублей (скидка) = 1 рубль.
- Сок Персик 1шт*85 рублей = 85 рублей.
- Молоко 2 шт*25 рублей = 50 рублей.
- Хлеб 1 шт*36 рублей = 36 рублей.
- Фанта 1 шт*92 рублей - 91 рубль (скидка) = 1 рубль.
everyNextNumberOnGoods – Скидка на каждый N-й товар не более M раз
everyNextNumberOnGoods(number, countLimit, percent, extops)
– функция даст скидку на каждый N-й товар, имеющий дополнительные опции, не более M раз.
Для функции используется только суммовая расчетная ставка.
Параметры расчета скидки задаются в параметрах функции и могут быть дополнительно указаны в свойствах товара.
Воздействие функции применяется к итоговой цене товара с учетом применения скидок и бонусов, модификаторов и других изменений в чеке.
Воздействие функции не применяется к товарам, входящим в набор.
Параметры функции:
number
– кратность товара, указывает на какой по счету товар будет применена скидка;countLimit
– количество вхождений, показывающее на сколько кратных повторений товара будет предоставлена скидка;percent
– размер скидки, выраженный в процентах;extops
– признак товара, участвующего в акции, может принимать любые значения, указывается в параметрах функции и дополнительных опциях товара.
Дополнительные опции товара:
extops
– признак, указывающий на то, что товар участвует в акции, задаваемой данной функцией. Является обязательным параметром;ddmultiplicity=ЗНАЧЕНИЕ
– кратность товара, аналогична параметруnumber
;ddmaxcount=ЗНАЧЕНИЕ
– количество вхождений, аналогично параметруcountLimit
;ddpercent=ЗНАЧЕНИЕ
– размер скидки, аналогичен параметруpercent
.
Дополнительные опции товара необходимо записывать в одну строку.
Параметры, указанные в товаре, имеют приоритет перед параметрами функции. Если в свойствах товара указан только признак товара, участвующего в акции, а другие опции отсутствуют, то при расчете скидки будут применены параметры функции. Если в свойствах товара задана только часть опций для расчета скидки, то недостающие значения также будут получены из параметров функции.
Функция разбирает чек на позиции, выбирает товары с признаками группирует их по штрих-коду. Скидка в X процентов дается на каждый N-й товар M раз. В чеке позиция со скидкой поднимается вверх списка идентичных товаров.
Чтобы дать скидку 50% на каждый 2-й товар с признаком deepdiscount, но ограничить предоставление скидки 4 вхождениями, необходимо: создать условие object["posnum"] in cf.everyNextNumberOnGoods(2, 4, 50,["deepdiscount"]) сделать расчетную скидку по сумме rf.everyNextNumberOnGoods(2, 4, 50,["deepdiscount"])[object["posnum"]] Скидка в этом случае сработает не более 4 раз (countLimit <= 4), т.е. будет применена к каждому 2, 4, 6 и 8 товару с признаком deepdiscount, ко всем последующим скидка не применяется. Следует учесть, что описанным образом скидка будет применена для товаров с одинаковым штрих-кодом. Если в чеке будет присутствовать 3 товара с признаком deepdiscount, но разными штрих-кодами, то скидка не будет применена ни разу. Если в свойствах товара помимо признака deepdiscount будут заданы дополнительные опции ddmultiplicity=3, ddmaxcount=2, ddpercent=30, то в этом случае скидка в размере 30% (ddpercent=30) будет применена к каждому 3 товару (ddmultiplicity=3) не более 2 раз (ddmaxcount=2). Параметры функции будут игнорироваться при расчете.
ddmultiplicity
не может принимать дробные значения, т.е. нельзя сделать каждые 0,5 кг акционными. При работе с чеком скидка раскидывается на все позиции, в которых имеется такой товар, пропорционально их стоимости.Если в значении extops используются символы кириллицы, то при задании функции перед текстом необходимо ставить символ 'u'.
Например, rf.everyNextNumberOnGoods(6, 4, 50, [u'Акция "Подарок к празднику"']).
В скидке задана функция с условиями:
- скидка срабатывает на каждый 2 товар
- количество вхождений - 4
- процент скидки - 50
Товар 1 (молоко) имеет признак deepdiscount, другие параметры для него не заданы.
Товар 2 (картофель) имеет признак deepdiscount и следующие дополнительные параметры:
- ddmultiplicity=2
- ddmaxcount=2
- ddPercent=10
Чек состоит из позиций:
- молоко 3 пакета*20 рублей = 60 рублей
- картофель 2 кг*100 рублей = 200 рублей
- картофель 1,5 кг*100 рублей = 150 рублей
- картофель 0,3 кг*100 рублей = 30 рублей
Функция выбирает товары, имеющие признак deepdiscount, группирует его по штрих-кодам. Скидка будет применена на следующие товары:
- молоко 1 шт
- молоко 1 шт (50%)
- молоко 1 шт
- картофель 1 кг
- картофель 1 кг (10%)
- картофель 1 кг
- картофель 0,8 кг (скидка предоставлена не будет, т.к. значение дробное < 1 кг)
В чеке будут выполнен следующий перерасчет:
- молоко 3 пакета*50 рублей - 10 рублей (скидка) = 50 рублей
- картофель 2 кг*100 рублей - 5,26 рубля (скидка) = 194,74 рублей
- картофель 1,5 кг*100 рублей - 3,95 рубля (скидка) = 146,05 рублей
- картофель 0,3 кг*100 рублей - 0,79 рублей (скидка) = 29,21 рублей
Скидка на картофель равна 10% от стоимости 2-го килограмма и составляет 10 рублей, скидка распределена между позициями пропорционально их стоимости.
limitCount – Скидка на ограниченное количество товара в чеке
limitCount(maxCount, index)
функция предоставит скидку равную разнице основной и индексной цены на ограниченное количество товара в чеке.
Для функции используется только суммовая расчетная ставка.
Параметры функции:
maxCount
– количество товара в чеке, на которое будет предоставлена скидка. Может принимать целые и дробные значения, применяемые к штучному и весовому товару. При дробном значении параметра применяется к тому количеству товара, которое указано в параметре;index
– индекс дополнительной цены.
Функция разворачивает чек на позиции, имеющие дополнительную цену с заданным кодом, выбирает указанное количество товара и присваивает им скидку равную разнице основной и индексной цены.
Без задания дополнительных ограничивающих условий скидка будет предоставлена на все товары в чеке, имеющие дополнительную цену с заданным индексом.
Функция может быть использована только для условий в скидках на позицию.
Чтобы предоставить N количества товара по скидке равной разнице основной и индексной цены, необходимо: создать условие object['posnum'] in cf.limitCount(4,2) создать расчетную скидку по сумме rf.limitCount(4,2)[object['posnum']] Скидка в этом случае сработает на все товары, количеством до 4 единиц (шт или кг), и присвоит им скидку равную разнице основной цены и цены с индексом 2.
Функция не применяется для товаров, входящих в набор, и товаров, не имеющих дополнительной цены. Для весовых товаров скидка применяется на все товары до заданного количества.
В скидке заданы условия:
1. Функция "Скидка на ограниченное количество товара в чеке" object['posnum'] in cf.limitCount(5, 1)
2. Условие для товарных позиций "Штрих-код товара равен" object["tmc"]["barcode"] in ["33333"]
Для товара 1 (мандарины) задана дополнительная цена с индексом 1, равная 70 рублям. Штрих-код мандаринов 33333.
Для товара 2 (елочные шары) задана дополнительная цена с индексом 1, равная 50 рублям. Штрих-код елочных шаров 44444.
Чек состоит из позиций:
- Елочный шар 1 шт*85 рублей = 85 рублей
- Елочный шар 5 шт*85 рублей = 425 рублей
- Мандарины 1,5 кг*100 рублей = 150 рублей
- Мандарины 3,2 кг*100 рублей = 320 рублей
- Мандарины 2 кг*100 рублей = 200 рублей
Функция "Скидка на ограниченное количество товара в чеке" выбирает товары, имеющие дополнительную цену с индексом 1. Под этот критерий подходят оба товара в чеке.
В условии "Штрих-код товара равен" выбирается только товар, имеющий штрих код 33333.
Обоим условиям соответствует только товар "Мандарины".
В чеке будет выполнен следующий перерасчет:
- Елочный шар 1 шт*85 рублей = 85 рублей
- Елочный шар 5 шт*85 рублей = 425 рублей
- Мандарины 1,5 кг*100 рублей - 45 рублей (скидка) = 105 рублей
- Мандарины 3,2 кг*100 рублей - 96 рублей (скидка) = 224 рубля
- Мандарины 2 кг*100 рублей - 9 рублей (скидка) = 191 рубль
В результате перерасчета скидка будет предоставлена только на 5 кг мандаринов.
cheapGoodsFromCatalog – На N товаров из M в каталоге
cheapGoodsFromCatalog(count, extops, rate, scount, toCheapest)
– скидка сработает на N товаров из M в каталоге.
Скидка предоставляется только на позицию. Для функции используется только суммовая расчетная ставка.
Параметры функции:
count
– M товаров из каталога;extops
– идентификаторы каталогов, товары из которых участвуют в акции;rate
– величина скидки в процентах;scount
– N количество товаров из M, к которым применяется скидка;toCheapest
– позиции, к которым будет применена скидка.- При значении параметра
toCheapest = True
скидка применяется только к самым дешевым товарам. - При значении
toCheapest = False
скидка распределяется между всеми товарами из каталога.
- При значении параметра
Функция разворачивает чек на позиции, выбирает все позиции из каталога, сортирует эти позиции по цене, выбирает scount
из count
товаров и рассчитывает скидку на товары. Скидка применяется ко всем товарам, участвующим в акции, или только к самым дешевым в соответствии с параметрами функции.
Для того чтобы дать скидку в размере 50% на 2 товара из 3-х, которые содержатся хотя бы в одном из каталогов с кодом 1 или 3 необходимо: создать условие object["posnum"] in cf.cheapGoodsFromCatalog(3, [1,3], 50, 2, False) сделать расчетную ставку по сумме rf.cheapGoodsFromCatalog(3, [1,3], 50, 2, False)[object["posnum"]]
catalogGoods – Назначить на товар цену из каталога
Скидка предоставляется только на позицию. Для функции используется только суммовая расчетная ставка.Параметры функции:
catalogGoods(catalogid)
– на товар назначается цена из каталога;catalogid
– код (идентификатор) каталога.
Функция находит в чеке товары, входящие в каталог, и предоставляет для них скидку (надбавку), равную разнице между начальной ценой и ценой товара в каталоге. В результате применения функции цена товара становится равной цене в каталоге. Если цена товара в каталоге не задана, то функция не срабатывает.
Для того чтобы на товар, входящий в каталог 1, назначить цену, указанную в этом каталоге, необходимо: создать условие object["posnum"] in cf.catalogGoods("1") сделать расчетную ставку по сумме rf.catalogGoods("1")[object["posnum"]]
progressiveDiscount – Прогрессирующая скидка
progressiveDiscount(minDiscount, maxDiscount, discountStep, catalogs)
– на товары из каталога будет предоставлена прогрессирующая скидка (начислены баллы).
Скидка предоставляется только на позицию. Для функции используется только суммовая расчетная ставка.
Параметры функции:
minDiscount
– минимальное значение скидки (в процентах);maxDiscount
– максимальное значение скидки (в процентах);discountStep
– шаг, с которым рассчитывается размер скидки на каждый следующий товар;catalogs
– список каталогов, на товары из которых может быть предоставлена скидка.
Функция находит в чеке товары из каталог и предоставляет на них скидку с заданным шагом. При этом максимальная скидка будет предоставлена на товар с наименьшей стоимостью. Количество товаров со скидкой зависит от разницы пороговых значений скидки и заданного шага.
Для того чтобы на 3 товара из каталога с кодом 6 была предоставлена скидка 10, 20 и 30% необходимо: создать условие object["posnum"] in cf.progressiveDiscount(10, 30, 10, [u"6"]) сделать расчетную ставку по сумме rf.progressiveDiscount(10, 30, 10, [u"6"])[object["posnum"]]
Перед применением скидки к весовому товару функция выбирает все позиции с весовым товаром, имеющим одинаковый штрих-код, и суммирует общий вес. Весовой товар считается за 1 товар. Скидка будет применена к 1 кг товара независимо от того, какое количество товаров в чеке задано в условиях функции, т.е. если в чеке 4 кг товара, то скидка будет применена только к 1 кг товара. Для весового товара функция проверяет цену за 1 кг, а не стоимость позиции.
В скидке заданы условия:
- Функция "Прогрессивная скидка" object["posnum"] in cf.progressiveDiscount(10, 30, 10, [u"6"])
- Расчетная ставка rf.progressiveDiscount(10, 30, 10, [u"6"])[object["posnum"]]
В каталог с кодом 6 входят следующие товары:
- Торт "Наполеон", цена 260 рублей
- Торт "Прага", цена 250 рублей
- Торт "Черемуховый", цена 240 рублей
- Торт "Черничный", цена 230 рублей
- Торт "Шоколадный", цена 220 рублей
- Торт "Кремовый", цена 210 рублей
В чек входят все товары из каталога.
Функция "Прогрессивная скидка" 3 товара для предоставления скидки 10%, 20% и 30%. Подбор товаров выполняется таким образом, чтобы в чеке была предоставлена минимальная скидка.
В результате перерасчета чек будет выглядеть следующим образом:
- Торт "Наполеон" 1 шт*260 рублей = 260 рублей
- Торт "Прага" 1 шт*250 рублей = 250 рублей
- Торт "Черемуховый" 1 шт*240 рублей = 240 рублей
- Торт "Черничный" 1 шт*230 рублей - 23 рубля (скидка 10%) = 207 рублей
- Торт "Шоколадный" 1 шт*220 рублей - 44 рубля (скидка 20%) = 176 рублей
- Торт "Кремовый" 1 шт*210 рублей - 63 рубля (скидка 30%) = 147 рублей
В документ будет записано 6 скидочных воздействий, т.к. функция при подборе скидки проверяет возможность ее предоставления на все товары из указанного каталога.
personalDiscount – Персональная цена
personalDiscount()
– на товары в чеке будет предоставлена персональная цена
Скидка предоставляется только на позицию. Для функции используется только суммовая расчетная ставка.
Функция срабатывает при наличии в чеке карты покупателя при переходе в подытог или при добавлении карты в подытоге. Взаимодействие с другими скидками срабатывает по заданному правилу взаимодействия.
Для того чтобы на товары в чеке была предоставлена персональная цена необходимо: создать условие object["posnum"] in cf.personalDiscount() сделать расчетную ставку по сумме rf.personalDiscount()[object["posnum"]]
Значения цен для каждого товара будут получены с сервиса персональных цен.