Функции округления суммы товарной позиции и чека предназначены для того, чтобы уменьшить количество расчетов и избежать накопления мелочи на кассе.

Для корректной работы кассовой программы и ФР с ФН необходимо указывать для базовой валюты округление такое же как в ФР. Например, для ФР Ритейл-01 Ф используется округление математически с потерей значимости до копейки.

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

Округление суммы позиции

Механизм округления суммы позиции реализован через округление, заданное в настройках валюты. Если для товара не назначена валюта, используемая для округления, то используется базовая валюта. Базовой валютой считается валюта, указанная первой среди типов валюты с признаком "базовая". Валюта для товара и способ округления для каждой валюты задается через утилиту администрирования Yuki либо при загрузке справочников товаров и валют соответственно.

По умолчанию для всех валют установлен способ округления "математически с потерей значимости", который используется при передаче данных из кассового ПО в ФР.

Для валют, используемых в кассовом ПО Artix, может быть установлено округление до сотых, десятых, до целых, до десятков, до сотен.

Помимо способа округления для валют указывается одно из возможных правил округления:

  • до ближайшего большего;
  • математически без потери значимости – округление до 0.5 в большую или меньшую сторону в зависимости от цифры слева: для нечетных цифр – в большую, для четных – в меньшую сторону;
  • математически с потерей значимости – округление до 0.5 в большую сторону;
  • до ближайшего меньшего.
Пример 1
Для товара с ценой 3.77 округление цены будет иметь значения:
* Округление до десятков математически без потери значимости 3.80
* Округление до целых математически без потери значимости 4.00
* Округление до десятков до ближайшего меньшего 3.70
Пример 2

При различных значениях цены товара округление будет срабатывать следующим образом:

ЦенаОкругление
До ближайшего большегоДо ближайшего меньшегоМатематическиМатематически с потерей значимости
0,491,000,000,000,00
0,501,000,000,001,00
0,511,000,001,001,00
1,492,001,001,001,00
1,502,001,002,002,00
1,512,001,002,002,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" скидка на мелочь применяется к первой позиции с наибольшей ставкой налога. Если не удалось полностью применить скидку к первой позиции с максимальной ставкой НДС, то будет выполнена попытка применения скидки ко второй позиции с максимальной ставкой НДС. Если не получилось полностью применить скидку к позициям с максимальной ставкой НДС, то выполняется попытка применения скидки к позиции со второй по значению ставкой НДС;
  • при значении параметра "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логический
  • true
  • false
Использовать скидку на мелочьПо умолчанию false.
distributeDiscountOnChange

строковый

  • proportional (ok, yes, enable, 1, true, allow, on)
  • maxVat
  • maxSum (или любое другое значение)
  • fiscal

Настройка вида распределения скидки "на мелочь" по позициям



По умолчанию proportional.

Округление fiscal поддержано только для ФР Штрих с ФН и ФР Атол, работающего по протоколу 5.0.

discountOnChangePrecisionстроковый

Точность вычисления скидки на мелочь

По умолчанию сумма чека округляется с точностью до 1 рубля.
ignoreMinPriceForDiscountByChangeлогический
  • true
  • false
Игнорировать минимальную цену товара при предоставлении скидки на мелочьПо умолчанию false.

useDiscountOnChangeForCashPaymentOnly

логический
  • true
  • false

Использовать скидку на мелочь только при оплате наличными

По умолчанию false.

calculateDiscountOnChangeByBalance

логический
  • true
  • false
Считать скидку на мелочь от оставшейся суммы доплаты

По умолчанию false.

Работает с настройками useDiscountOnChangeForCashPaymentOnly и useIncreaseOnChange.

Для оплаты бонусами необходимо использовать сочетание настроек:

  • useDiscountOnChange = true
  • useDiscountOnChangeForCashPaymentOnly = true
Пример настроек
[Check]
...
; использовать "скидку на мелочь", по умолчанию скидка не используется
useDiscountOnChange = true

; Настройка вида распределения скидки "на мелочь" по позициям
; Возможные значения: proportional(либо true), maxVat, maxSum, 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логический
  • true
  • false
Использовать надбавку на мелочь для документов возвратаПо умолчанию false
Пример настройки
[Check]
...
; Использовать "надбавку на мелочь" для документов возврата, по умолчанию надбавка не используется
;useIncreaseOnChange = false

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

Пример

Например, в чеке продажи несколько позиций с весовыми товарами, сумма чека 21291.31, применена скидка на мелочь 0.31:

№ позицииВес товараЦена товараСтоимость позиции
10,0682145145.86
2177
35,00213656827.73
45,0027163581.43
55,002214510729.29 - 0.31 скидка = 10728.98
Итого:21291

Осуществляем возврат первой позиции, сумма 145.86, срабатывает надбавка 0.14:

№ позицииВес товараЦена товараСтоимость позиции
10,0682145145.86 + 0.14 надбавка = 146
Итого:146

Осуществляем возврат пятой позиции, сумма 10728.99, срабатывает надбавка 0.02:

№ позицииВес товараЦена товараСтоимость позиции
55,002214510729.29 - 0.31 скидка + 0.02 надбавка = 10729
Итого:10729

Осуществляем возврат оставшихся позиций, сумма 10416.16, срабатывает скидка 0.16:

№ позицииВес товараЦена товараСтоимость позиции
2177
35,00213656827.73 - 0.16 скидка = 6827.57
45,0027163581.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логический
  • true
  • false
Использовать корректирующую скидкуПо умолчанию false
ignoreMinPriceForCorrectionDiscountлогический
  • true
  • false
Игнорировать минимальную цену товара при использовании корректирующей скидкиПо умолчанию 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 р.

При передаче чека в ФР осуществляется разбиение позиции, в чеке печатается:

  • No labels