Функции округления суммы товарной позиции и чека предназначены для того, чтобы уменьшить количество расчетов и избежать накопления мелочи на кассе.
Для корректной работы кассовой программы и ФР с ФН необходимо указывать для базовой валюты округление такое же как в ФР. Например, для ФР Ритейл-01 Ф используется округление математически с потерей значимости до копейки.
При использовании различных способов округления в ФР и кассовой программе можно получить ошибку расхождения сумм, чеки не будут закрываться.
Округление суммы позиции
Механизм округления суммы позиции реализован через округление, заданное в настройках валюты. Если для товара не назначена валюта, используемая для округления, то используется базовая валюта. Базовой валютой считается валюта, указанная первой среди типов валюты с признаком "базовая". Валюта для товара и способ округления для каждой валюты задается через утилиту администрирования Yuki либо при загрузке справочников товаров и валют соответственно.
По умолчанию для всех валют установлен способ округления "математически с потерей значимости", который используется при передаче данных из кассового ПО в ФР.
Для валют, используемых в кассовом ПО Artix, может быть установлено округление до сотых, десятых, до целых, до десятков, до сотен.
Помимо способа округления для валют указывается одно из возможных правил округления:
- до ближайшего большего;
- математически без потери значимости – округление до 0.5 в большую или меньшую сторону в зависимости от цифры слева: для нечетных цифр – в большую, для четных – в меньшую сторону;
- математически с потерей значимости – округление до 0.5 в большую сторону;
- до ближайшего меньшего.
Для товара с ценой 3.77 округление цены будет иметь значения: * Округление до десятков математически без потери значимости 3.80 * Округление до целых математически без потери значимости 4.00 * Округление до десятков до ближайшего меньшего 3.70
При различных значениях цены товара округление будет срабатывать следующим образом:
Цена | Округление | |||
---|---|---|---|---|
До ближайшего большего | До ближайшего меньшего | Математически | Математически с потерей значимости | |
0,49 | 1,00 | 0,00 | 0,00 | 0,00 |
0,50 | 1,00 | 0,00 | 0,00 | 1,00 |
0,51 | 1,00 | 0,00 | 1,00 | 1,00 |
1,49 | 2,00 | 1,00 | 1,00 | 1,00 |
1,50 | 2,00 | 1,00 | 2,00 | 2,00 |
1,51 | 2,00 | 1,00 | 2,00 | 2,00 |
Скидка на мелочь
При наличном расчете по чеку зачастую требуется снизить количество используемых монет и/или банкнот с низким номиналом. В кассовом ПО Artix для этого реализована возможность предоставления скидки на мелочь, которая рассчитывается после применения скидки на позицию и предоставляется в соответствии с заданными программными настройками.
Пересчет скидки на мелочь может выполняться при добавлении оплаты в чек или в режиме работы с товарами. Подробнее о работе со скидками можно прочитать в разделе "Встроенная дисконтная система".
Скидка на мелочь не распределяется на сертификат.
Использование скидки на мелочь настраивается при помощи параметра useDiscountOnChange
:
- при значении параметра
true
на позиции в чеке предоставляется скидка на мелочь, - при значении параметра
false
скидка на мелочь не применяется.
Скидка на мелочь уменьшает сумму чека в соответствии с коэффициентом округления, задаваемым при помощи параметра discountOnChangePrecision
. Способ округления суммы указывается в значении параметра в виде [<сумма чека>:<точность округления>]
, где:
- сумма чека – сумма чека, начиная с которой применяется скидка на мелочь;
- точность округления – вещественное число, например: 0.5.
Правила вычисления скидки на мелочь для разных сумм чеков могут быть заданы различные способы округления. Значения параметра в данном случае записываются через запятую.
discountOnChangePrecision = "[0:0.05], [50:0.1], [100:0.5], [200:1]" При такой настройке сумма чека выше 0 рублей округляется с точностью до 5 копеек, выше 50 рублей - до 10 копеек, выше 100 рублей - до 50 копеек и выше 200 рублей - до 1 рубля. На товар с начальной ценой 10,57 рублей будет предоставлена скидка на мелочь в размере 0,02 рубля. Окончательная цена товара будет равной 10,55 рубля.
Правило распределения скидки по позициям определяется параметром distributeDiscountOnChange
:
- при значении параметра
скидка на мелочь распределяется пропорционально между позициями;"proportional"
- при значении параметра
"maxVat"
скидка на мелочь применяется к первой позиции с наибольшей ставкой налога. Если не удалось полностью применить скидку к первой позиции с максимальной ставкой НДС, то будет выполнена попытка применения скидки ко второй позиции с максимальной ставкой НДС. Если не получилось полностью применить скидку к позициям с максимальной ставкой НДС, то выполняется попытка применения скидки к позиции со второй по значению ставкой НДС; - при значении параметра
"maxVatIntPriority"
скидка на мелочь приоритетно применяется к первой штучной позиции с наибольшей ставкой налога. В остальном работает аналогично значению"maxVat"
; - при значении параметра
"maxSum"
скидка применяется к позиции с наибольшей суммой. Скидка на мелочь применяется только к одной позиции, если стоимость позиции не позволяет применить скидку, то она будет применена к позиции с меньшей стоимостью. Если стоимость позиций не позволяет применить скидку ни к одной позиции в чеке, то она не будет применена; - при значении параметра
"maxSumIntPriority"
скидка приоритетно применяется к штучной позиции с наибольшей суммой. В остальном работает аналогично значению"maxSum"
; - при значении параметра "
fiscal
" скидка применяется к сумме чека без распределения по позициям и без ограничения по минимальным ценам.
Например, в чеке две позиции, сумма чека – 54.40, точность округления до 1 рубля:
1. Цена – 24.90, мин.цена – 22.41, скидка на мелочь – 0.19
2. Цена – 26.50, мин.цена – 23.85, скидка на мелочь – 0.21
Например, в чеке три позиции, сумма чека 560.99, точность округления до 1 рубля:
1. Цена – 300.12, ставка налога – 5%, сумма налога – 14.29, скидка на мелочь – нет
2. Цена – 160.31, ставка налога – 10%, сумма налога – 14.57, скидка на мелочь – нет
3. Цена – 100.56, ставка налога – 15%, сумма налога – 13.12, скидка на мелочь – 0.99
Например, в чеке три позиции, сумма чека 560.99, точность округления до 1 рубля:
1. Цена – 300.12, мин.цена – 290.90, скидка на мелочь – 0.99
2. Цена – 160.31, мин.цена – 160.00, скидка на мелочь – нет
3. Цена – 100.56, мин.цена – 90.99, скидка на мелочь – нет
Например, в чеке две позиции, сумма чека – 51.40, точность округления до 1 рубля:
1. Цена – 24.90
2. Цена – 26.50
Округление – 0.40
Правилами предоставления скидки на мелочь может быть определена возможность игнорировать минимальную цену на товар, которая задается при помощи параметра ignoreMinPriceForDiscountByChange
:
- при значении параметра
true
минимальная цена товара игнорируется, скидка дается в соответствии с заданным способом округления; - при значении параметра
false
сумма товара после применения скидки на мелочь не может быть ниже минимальной.
Использование скидки на мелочь в большинстве случаев является целесообразным только при оплате товара наличными. Ограничение на предоставление скидки на мелочь при оплате той или иной валютой задается при помощи параметра useDiscountOnChangeForCashPaymentOnly
:
- при значении параметра
true
скидка на мелочь используется только при оплате чека наличными, вне зависимости от того, в каком порядке была применена оплата наличными; - при значении параметра
false
скидка на мелочь применяется во всех случаях, когда ее использование разрешено, независимо от способа оплаты чека.
В кассовом ПО Artix реализована возможность предоставления скидки на мелочь только для суммы доплаты при смешанной оплате чека (например, сертификат и наличный расчет), регулируется параметром calculateDiscountOnChangeByBalance
:
- при значении параметра
true
на доплату предоставляется скидка на мелочь, - при значении параметра
false
скидка на мелочь применяется на всю сумму чека, а не только на сумму доплаты.
Конфигурирование функции предоставления скидки на мелочь выполняется в файле /linuxcash/cash/conf/ncash.ini
в секции [Check]
:
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
useDiscountOnChange | логический |
| Использовать скидку на мелочь | По умолчанию false |
distributeDiscountOnChange | строковый |
| Настройка вида распределения скидки "на мелочь" по позициям | По умолчанию При значениях |
discountOnChangePrecision | строковый | Точность вычисления скидки на мелочь | По умолчанию сумма чека округляется с точностью до 1 рубля | |
ignoreMinPriceForDiscountByChange | логический |
| Игнорировать минимальную цену товара при предоставлении скидки на мелочь | По умолчанию false |
useDiscountOnChangeForCashPaymentOnly | логический |
| Использовать скидку на мелочь только при оплате наличными | По умолчанию false |
calculateDiscountOnChangeByBalance | логический |
| Считать скидку на мелочь от оставшейся суммы доплаты | По умолчанию Работает с настройками |
Для оплаты бонусами необходимо использовать сочетание настроек:
useDiscountOnChange = true
useDiscountOnChangeForCashPaymentOnly = true
[Check] ... ; использовать "скидку на мелочь", по умолчанию скидка не используется useDiscountOnChange = true ; Настройка вида распределения скидки "на мелочь" по позициям ; Возможные значения: proportional(либо true), maxVat, maxVatIntPriority, maxSum, maxSumIntPriority, fiscal ; По умолчанию proportional ;distributeDiscountOnChange = proportional ; точность вычисления скидки "на мелочь", по умолчанию округляется до 1 для любой суммы чека ;discountOnChangePrecision = "[0:0.05], [50:1],[100:2], [200:5], " ; Игнорировать минимальную цену для скидки на сдачу ; По умолчанию false ;ignoreMinPriceForDiscountByChange = false ; Использовать скидку на мелочь только при оплате наличными, по умолчанию false. ;useDiscountOnChangeForCashPaymentOnly = true ; Считать скидку на мелочь от оставшейся суммы доплаты ; Работает с настройками useDiscountOnChangeForCashPaymentOnly и useIncreaseOnChange ; По умолчанию false ;calculateDiscountOnChangeByBalance = false ...
Надбавка на мелочь
Сумма чека при возврате округляется аналогично действию скидки на мелочь при продаже. Использование надбавки на мелочь определяется параметром useIncreaseOnChange
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [Check]
:
- при значении параметра
true
сумма чека округляется, - при значении параметра
false
надбавка на мелочь не применяется.
Сумма надбавки отражается на экране кассира в поле "Итоговая скидка" со знаком минус.
Пересчет надбавки на мелочь может выполняться при добавлении оплаты в чек или в режиме работы с товарами. Подробнее о работе со скидками можно прочитать в разделе "Встроенная дисконтная система ".
При возврате по чеку продажи при выходе из режима оплаты надбавка не пересчитывается, изменение надбавки выполняется только в том случае, если произошли изменения в оплате документа.
Надбавку на мелочь (настройка useIncreaseOnChange
) рекомендуется использовать вместе со скидкой на мелочь (настройка useIncreaseOnChange
).
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
useIncreaseOnChange | логический |
| Использовать надбавку на мелочь для документов возврата | По умолчанию false |
[Check] ... ; Использовать "надбавку на мелочь" для документов возврата, по умолчанию надбавка не используется ;useIncreaseOnChange = false
При выполнении нескольких частичных возвратов по одному и тому же чеку продажи сумма надбавки на мелочь компенсируется скидкой на мелочь в последнем чеке возврата.
Например, в чеке продажи несколько позиций с весовыми товарами, сумма чека 21291.31, применена скидка на мелочь 0.31:
№ позиции | Вес товара | Цена товара | Стоимость позиции |
---|---|---|---|
1 | 0,068 | 2145 | 145.86 |
2 | 1 | 7 | 7 |
3 | 5,002 | 1365 | 6827.73 |
4 | 5,002 | 716 | 3581.43 |
5 | 5,002 | 2145 | 10729.29 - 0.31 скидка = 10728.98 |
Итого: | 21291 |
Осуществляем возврат первой позиции, сумма 145.86, срабатывает надбавка 0.14:
№ позиции | Вес товара | Цена товара | Стоимость позиции |
---|---|---|---|
1 | 0,068 | 2145 | 145.86 + 0.14 надбавка = 146 |
Итого: | 146 |
Осуществляем возврат пятой позиции, сумма 10728.99, срабатывает надбавка 0.02:
№ позиции | Вес товара | Цена товара | Стоимость позиции |
---|---|---|---|
5 | 5,002 | 2145 | 10729.29 - 0.31 скидка + 0.02 надбавка = 10729 |
Итого: | 10729 |
Осуществляем возврат оставшихся позиций, сумма 10416.16, срабатывает скидка 0.16:
№ позиции | Вес товара | Цена товара | Стоимость позиции |
---|---|---|---|
2 | 1 | 7 | 7 |
3 | 5,002 | 1365 | 6827.73 - 0.16 скидка = 6827.57 |
4 | 5,002 | 716 | 3581.43 |
Итого: | 10416 |
Таким образом, на первые два чека возврата сработала надбавка 0.14 и 0.02, на последний чек возврата сработала скидка 0.16, что уравняло суммы чека продажи и чеков возврата.
Корректирующая скидка
Начиная с версии 4.6.205 поддержан функционал корректирующей скидки для избежания разбиения товарной позиции при передаче в ФР в случае применения скидок.
Использование корректирующей скидки определяется параметром useCorrectionDiscount
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [Check]
:
- при значении параметра
true
корректирующая скидка применяется, если это возможно, при значении параметра
false
корректирующая скидка не применяется.
Возможность игнорирования минимальной цены товара при использовании корректирующей скидки задается при помощи параметра ignoreMinPriceForCorrectionDiscount
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [Check]
:
- при значении параметра
true
минимальная цена товара игнорируется, - при значении параметра
false
цена товара после применения корректирующей скидки не может быть ниже минимальной.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
useCorrectionDiscount | логический |
| Использовать корректирующую скидку | По умолчанию false |
ignoreMinPriceForCorrectionDiscount | логический |
| Игнорировать минимальную цену товара при использовании корректирующей скидки | По умолчанию false |
[Check] ; Использовать "корректирующую скидку" ; По умолчанию false ;useCorrectionDiscount = false ; Игнорировать минимальную цену для корректирующей скидки ; По умолчанию false ;ignoreMinPriceForCorrectionDiscount = false
Например, в чеке позиция с весовым товаром:
1. Ананас 4.523 кг * 499.99 р = 2261.45 р
На позицию применена скидка – 2000.00 р.
Итоговая сумма чека – 261.45 р.
При закрытии чека срабатывает корректирующая скидка – 0.02 р.
В чеке печатается:
Например, в чеке позиция с весовым товаром:
1. Ананас 4.523 кг * 499.99 р = 2261.45 р
На позицию применена скидка – 2000.00 р.
Итоговая сумма чека – 261.45 р.
При передаче чека в ФР осуществляется разбиение позиции, в чеке печатается: