Возможности кассового ПО Artix позволяют организовывать маркетинговые акции, используя функции для задания условий при работе с товарами. Товарами считаются товары в чеке, имеющие одинаковые коды и штрих-коды.
hasInventOptions([options])
– функция сработает, если товару назначена указанная опция.
Параметры функции:
options
– опция товара. Опция - это признак товара, который задается при добавлении товара в базу, например, скоропортящийся, уцененный и т. д.
cf.hasInventOptions([u"уцененный"]) Скидка сработает, если товар имеет признак "уцененный". Скидка применяется на позицию. |
Если в функцию передан список опций, то функция сработает как только будет обнаружено первое совпадение: < i признак из списка > = < j признак товара >. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventInCheckByOption([options])
– функция сработает, если в чеке есть товар с указанной опцией.
Параметры функции:
options
– опция товара. Опция - это признак товара, который задается при добавлении товара в базу, например, скоропортящийся, уцененный и т. д.
cf.inventInCheckByOption([u"уцененный"]) Скидка сработает на каждую позицию в чеке или на чек (в зависимости от объекта скидки), если в документе будет хотя бы один товар с признаком "уцененный". |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckByOption(options)
– функция сработает, если количество товаров с указанными опциями равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара.cf.inventQuantInCheckByOption([u"num"]) == 2. Скидка с данным условием сработает, если количество товаров в чеке с опцией "num" равно 2. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckByOption(options,withPartOfKit)
– функция сработает, если сумма товаров с указанной опцией равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор. cf.inventSumInCheckByOption([u"num"],False) == 100 Скидка с данным условием сработает, если сумма цен на все товары в чеке с опцией "num" равна 100. При подсчете количества товаров не учитываются товары, входящие в наборы. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckWithAllOptions
(options,withPartOfKit)
– функция сработает, если количество товаров с указанными опциями равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор. cf.inventQuantInCheckWithAllOptions([u"уценка",u"распродажа"],True) <= 4 Скидка с таким условием сработает, если количество товаров в чеке с опциями "уценка" и "распродажа" меньше либо равно 4. При подсчете количества товаров учитываются товары, входящие в комплект. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckWithAllOptions(options,withPartOfKit)
– функция сработает, если сумма товаров с указанными опциями равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
options
– опции товара;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.cf.inventSumInCheckWithAllOptions([u"num"],True) <= 100 Скидка с таким условием сработает, если сумма товаров в чеке с опцией "num" меньше либо равна 100, при этом учитываются товары, входящие в комплект. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventInCheckByCode([code])
– функция сработает, если в чеке присутствует товар с указанным кодом.
Параметры функции:
code
– код товара. cf.inventInCheckByCode([u"11"]) Если в чеке есть товар с кодом "11", то сработает скидка. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckByCode(code)
– функция сработает, если сумма товаров в чеке с указанным кодом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
code
– код товара.cf.inventSumInCheckByCode([u"102"]) >= 22.0 Скидка с данным условием сработает, если сумма цен всех товаров в чеке с кодом 102 будет больше или равна 22.0. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckByCode
(code)
– функция сработает, если количество товара в чеке с указанным кодом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
code
– код товара.cf.inventQuantInCheckByCode([u"102"]) == 2 Скидка с данным условием сработает, если количество всех товаров в чеке с кодом 102 будет равно 2. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
hasInventAllCodes([codes], requiredCount)
– функция сработает, если количество каждого из указанных товаров в чеке больше или равно указанному значению.
Параметры функции:
codes
– список кодов товаров;requiredCount
– количество вхождений каждого товара в чек.cf.hasInventAllCodes(["1","100"],2) Скидка с данным условием сработает в том случае, если в чеке будет присутствовать 2 товара (или более) с кодом "1" и 2 товара (или более) с кодом "100". При наличии в чеке 1 товара с кодом "1" и 2 товаров с кодом "100" скидка не сработает. |
Параметр requiredCount
не обязателен, если его не указывать, то проверяется вхождение в чек по 1 единице каждого товара из списка.
inventInCheckByBcode([bcode])
– функция сработает, если в чеке присутствует товар с указанным штрих-кодом.
Параметры функции:
bcode
– штрих-код товара. cf.inventInCheckByBcode([u"4607032142362"]) Скидка сработает, если в чеке имеется товар со штрих-кодом "4607032142362". |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckByBcode – Сумма товаров в чеке с указанным штрих-кодом
inventSumInCheckByBcode
(code)
– функция сработает, если сумма товаров в чеке с указанным штрих- кодом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
bcode
– штрих-код товара.cf.inventSumInCheckByBCode([u"4607032142362"]) == 2.20 Скидка с данным условием сработает, если сумма цен всех товаров в чеке с штрих-кодом 4607032142362 будет равна 2.20. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckByBcode
(bcode)
– функция сработает, если количество товаров в чеке с указанным штрих-кодом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
bcode
– штрих-код товара.cf.inventQuantInCheckByBcode([u"4607032142362"]) == 2 Скидка с данным условием сработает, если количество всех товаров в чеке со штрих-кодом 4607032142362 будет равно 2. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
hasInventCatalogs(catalog)
– функция сработает, если товар входит в указанный каталог.
Параметры функции:
catalog
– код каталога. Каталог создается для объединения некоторого списка товаров, на которые планируется скидка.
cf.hasInventCatalogs([u"1"]) В данном случае скидка сработает на все товары, входящие в каталог в кодом 1. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
hasInventAllCatalogs(catalogs)
– функция сработает, если товар входит во все указанные каталоги.
Параметры функции:
catalogs
– список кодов каталогов. cf.hasInventAllCatalogs([u"1"], [u"2"]) Скидка сработает, если товар входит одновременно в каталоги с кодами 1 и 2. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckByCatalog
(catalog, withPartOfKit)
– функция сработает, если количество товаров в чеке с указанным каталогом равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор. cf.inventQuantInCheckByCatalog([u"num"],True) == 1 Скидка с данным условием сработает, если количество товаров в чеке с каталогом "num" равно 1. При подсчете количества позиций учитываются позиции с товарами, входящими в набор. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckByCatalog(
catalog, withPartOfKit)
– функция сработает, если сумма товаров в чеке с указанным каталогом равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор. cf.inventSumInCheckByCatalog([u"num"],True) != 100 Скидка с данным условием сработает, если сумма товаров в чеке с каталогом "num" не равна 100. При подсчете количества позиций учитываются позиции с товарами, входящими в набор. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckWithAllCatalogs
– функция сработает, если количество товаров в чеке со всеми указанными каталогами равно (<,>, <=, >=, !=) выбранному значению.(
catalog, withPartOfKit)
Параметры функции:
catalog
– код каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.cf.inventQuantInCheckWithAllCatalogs([u"num1, num2"],True) == 2.00 Скидка с данным условием сработает, если количество товаров в чеке, входящих одновременно в каталоги "num1" и "num2", равно 2. При подсчете количества позиций учитываются позиции с товарами, входящими в набор. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckWithAllCatalogs
– функция сработает, если сумма товаров в чеке со всеми указанными каталогами равна (<,>, <=, >=, !=) выбранному значению.(
catalog, withPartOfKit)
Параметры функции:
catalog
– название каталога;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.cf.inventSumInCheckWithAllCatalogs([u"11"],True) <= 140 Скидка с данным условием сработает, если сумма товаров из каталога 11 меньше либо равна 140, при этом учитываются товары, являющиеся частью комплекта. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheckByGroup(groups, withPartOfKit)
– функция сработает, если количество товаров с указанной группой в чеке равно (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
groups
– список кодов групп;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.cf.inventQuantInCheckByGroup([u"1",u"2"],False) == 3 Скидка с таким условием сработает, если количество товаров, относящихся к группам "1" и/или "2" равно 3, при этом товары, являющиеся частью комплекта, не учитываются. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventSumInCheckByGroup(groups, withPartOfKit
) – функция сработает, если сумма товаров с указанной группой в чеке равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
groups
– список кодов групп;withPartOfKit
– параметр для учета товаров, являющихся частью комплекта (набора). При значении параметра withPartOfKit
= True
функция при подсчете количества позиций товара с опцией учитывает позиции, которые включены в набор.cf.inventSumInCheckByGroup([u"1",u"2"],True) >= 100 Скидка с данным условием сработает, если сумма товаров, относящихся к группам "1" и "2" больше либо равна 100, при этом учитываются товары, входящие в наборы. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
hasInventGroup(group)
– функция сработает, если товар входит в указанную группу.
Параметры функции:
group
– коды группы товаров. cf.hasInventGroup([u"1"]) Скидка с таким условием сработает, если товар входит в группу с кодом 1. |
Если в параметре функции указано несколько групп, то функция проверяет наличие у товара хотя бы одной из указанных групп, а также всех подгрупп, входящих в указанные группу.
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
inventQuantInCheck(uniteFractional)
– функция сработает, если количество товаров в чеке равна (<,>, <=, >=, !=) выбранному значению.
Параметры функции:
uniteFractional
– правила подсчета позиций весового товара.uniteFractional
= True
функция считает за единицу один весовой товар, даже если он был добавлен в чек несколькими позициями (объединяет при подсчете несколько позиций с одним весовым товаром в одну).uniteFractional
= False
функция считает за единицу каждый добавленный в чек весовой товар. cf.inventQuantInCheck(True) == 3 Скидка с таким условием сработает, если количество товаров в чеке равно 3. |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
everyNextNumber(number, desc)
– скидка сработает на каждый N-й товар в чеке.
Параметры функции:
number
– номер позиции;desc
– сортировка товаров по цене.desc = True
скидка предоставляется на каждый N-й товар по убыванию цены.desc =
False
скидка предоставляется на каждый N-й товар по возрастанию цены.Для того чтобы дать скидку на каждую 2-ю позицию в чеке на 5% необходимо в условие скидки добавить: object["posnum"] in cf.everyNextNumber(2,True) |
При задании акции необходимо учитывать, что воздействие функции применяется к позициям с товарами, входящими в набор. |
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'. Например, |
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 рублей, используется первоначальная цена.
Перед применением скидки к весовому товару функция выбирает все позиции с весовым товаром, имеющим одинаковый штрих-код, и суммирует общий вес. Весовой товар считается за 1 товар. Скидка будет применена к 1 кг товара независимо от того, какое количество товаров в чеке задано в условиях функции, т.е. если в чеке 4 кг товара, то скидка будет применена только к 1 кг товара. Для весового товара функция проверяет цену за 1 кг, а не стоимость позиции. |
В скидке задана функция с условиями:
Чек состоит из позиций:
Функция выбирает следующий товар:
Скидка будет применена к 1 кг картофеля и 1 шт молока. В чеке будут выполнен следующий перерасчет:
|
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 рублей, используется первоначальная цена.
Перед применением скидки к весовому товару функция выбирает все позиции с весовым товаром, имеющим одинаковый штрих-код, и суммирует общий вес. Весовой товар считается за 1 товар. Скидка будет применена к 1 кг товара независимо от того, какое количество товаров в чеке задано в условиях функции, т.е. если в чеке 4 кг товара, то скидка будет применена только к 1 кг товара. Для весового товара функция проверяет цену за 1 кг, а не стоимость позиции. |
В скидке задана функция с условиями:
Чек состоит из позиций:
Функция выбирает следующий товар:
Скидка будет применена к товарам "Сок Манго" и "Фанта". В чеке будут выполнен следующий перерасчет:
|
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'. Например, |
В скидке задана функция с условиями:
Товар 1 (молоко) имеет признак deepdiscount, другие параметры для него не заданы. Товар 2 (картофель) имеет признак deepdiscount и следующие дополнительные параметры:
Чек состоит из позиций:
Функция выбирает товары, имеющие признак deepdiscount, группирует его по штрих-кодам. Скидка будет применена на следующие товары:
В чеке будут выполнен следующий перерасчет:
Скидка на картофель равна 10% от стоимости 2-го килограмма и составляет 10 рублей, скидка распределена между позициями пропорционально их стоимости. |
limitCount(maxCount, index)
функция предоставит скидку равную разнице основной и индексной цены на ограниченное количество товара в чеке.
Для функции используется только суммовая расчетная ставка.
Параметры функции:
maxCount
– количество товара в чеке, на которое будет предоставлена скидка. Может принимать целые и дробные значения, применяемые к штучному и весовому товару. При дробном значении параметра применяется к тому количеству товара, которое указано в параметре;index
– индекс дополнительной цены.Функция разворачивает чек на позиции, имеющие дополнительную цену с заданным кодом, выбирает указанное количество товара и присваивает им скидку равную разнице основной и индексной цены.
Без задания дополнительных ограничивающих условий скидка будет предоставлена на все товары в чеке, имеющие дополнительную цену с заданным индексом. Функция может быть использована только для условий в скидках на позицию. |
Чтобы предоставить N количества товара по скидке равной разнице основной и индексной цены, необходимо: создать условие object['posnum'] in cf.limitCount(4,2) создать расчетную скидку по сумме rf.limitCount(4,2)[object['posnum']] Скидка в этом случае сработает на все товары, количеством до 4 единиц (шт или кг), и присвоит им скидку равную разнице основной цены и цены с индексом 2. |
Функция не применяется для товаров, входящих в набор, и товаров, не имеющих дополнительной цены. Для весовых товаров скидка применяется на все товары до заданного количества.
В скидке заданы условия: 1. Функция "Скидка на ограниченное количество товара в чеке" 2. Условие для товарных позиций "Штрих-код товара равен" Для товара 1 (мандарины) задана дополнительная цена с индексом 1, равная 70 рублям. Штрих-код мандаринов 33333. Для товара 2 (елочные шары) задана дополнительная цена с индексом 1, равная 50 рублям. Штрих-код елочных шаров 44444. Чек состоит из позиций:
Функция "Скидка на ограниченное количество товара в чеке" выбирает товары, имеющие дополнительную цену с индексом 1. Под этот критерий подходят оба товара в чеке. В условии "Штрих-код товара равен" выбирается только товар, имеющий штрих код 33333. Обоим условиям соответствует только товар "Мандарины". В чеке будет выполнен следующий перерасчет:
В результате перерасчета скидка будет предоставлена только на 5 кг мандаринов. |
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"]] |
При предоставлении скидки на весовые товары функция определяет 1 позицию весового товара, как 1 единицу штучного товара. |
Параметры функции:
catalogGoods(catalogid)
– на товар назначается цена из каталога;catalogid
– код (идентификатор) каталога.Функция находит в чеке товары, входящие в каталог, и предоставляет для них скидку (надбавку), равную разнице между начальной ценой и ценой товара в каталоге. В результате применения функции цена товара становится равной цене в каталоге. Если цена товара в каталоге не задана, то функция не срабатывает.
Для того чтобы на товар, входящий в каталог 1, назначить цену, указанную в этом каталоге, необходимо: создать условие object["posnum"] in cf.catalogGoods("1") сделать расчетную ставку по сумме rf.catalogGoods("1")[object["posnum"]] |
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 кг, а не стоимость позиции. |
В скидке заданы условия:
В каталог с кодом 6 входят следующие товары:
В чек входят все товары из каталога. Функция "Прогрессивная скидка" 3 товара для предоставления скидки 10%, 20% и 30%. Подбор товаров выполняется таким образом, чтобы в чеке была предоставлена минимальная скидка. В результате перерасчета чек будет выглядеть следующим образом:
В документ будет записано 6 скидочных воздействий, т.к. функция при подборе скидки проверяет возможность ее предоставления на все товары из указанного каталога. |
personalDiscount()
– на товары в чеке будет предоставлена персональная цена
Скидка предоставляется только на позицию. Для функции используется только суммовая расчетная ставка.
Функция срабатывает при наличии в чеке карты покупателя при переходе в подытог или при добавлении карты в подытоге. Взаимодействие с другими скидками срабатывает по заданному правилу взаимодействия.
Для того чтобы на товары в чеке была предоставлена персональная цена необходимо: создать условие object["posnum"] in cf.personalDiscount() сделать расчетную ставку по сумме rf.personalDiscount()[object["posnum"]] |
Значения цен для каждого товара будут получены с сервиса персональных цен. |