Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Warning

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

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

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

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

Info

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

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

...

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

...

Panel
titleПример 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


Скидка на мелочь

Anchor
useDiscountOnChange
useDiscountOnChange

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

...

Скидка на мелочь уменьшает сумму чека в соответствии с коэффициентом округления, задаваемым при помощи параметра discountOnChangePrecision. Способ округления суммы указывается в значении параметра в виде [<сумма чека>:<точность округления>], где:

  •  сумма чека - чека – сумма чека, начиная с которой применяется скидка на мелочь;
  •  точность округления - округления – вещественное число, например:  00.5.

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

...

  • при значении параметра "proportional" скидка на мелочь распределяется пропорционально между позициями;
  • при значении параметра "maxVat" скидка на мелочь применяется к первой позиции с наибольшей ставкой налога. Если не удалось полностью применить скидку к первой позиции с максимальной ставкой НДС, то будет выполнена попытка применения скидки ко второй позиции с максимальной ставкой НДС. Если не получилось полностью применить скидку к позициям с максимальной ставкой НДС, то выполняется попытка применения скидки к позиции со второй по значению ставкой НДС;
  • при значении параметра "maxVatIntPriority" скидка на мелочь приоритетно применяется к первой штучной позиции с наибольшей ставкой налога. В остальном работает аналогично значению "maxVat";
  • при значении параметра "maxSum" скидка применяется к позиции с наибольшей суммой. Скидка на мелочь применяется только к одной позиции, если стоимость позиции не позволяет применить скидку, то она будет применена к позиции с меньшей стоимостью. Если стоимость позиций не позволяет применить скидку ни к одной позиции в чеке, то она не будет применена;
  • при значении параметра "maxSumIntPriority" скидка приоритетно применяется к штучной позиции с наибольшей суммой. В остальном работает аналогично значению "maxSum";
  • при значении параметра "fiscal" скидка применяется к сумме чека без распределения по позициям и без ограничения по минимальным ценам.
Panel
titleПример "Скидка на мелочь распределяется пропорционально между позициями"

Например, в чеке две позиции, сумма чека - сумма чека – 54.40, точность округления до 1 рубля:

1. Цена - 24.90, мин.цена - 22.41, скидка на мелочь - 0.19

2. Цена - 26.50, мин.цена - 23.85, скидка на мелочь - 0.21


Panel
titleПример "Скидка на мелочь применяется к позиции с наибольшей ставкой налога"

Например, в чеке три позиции, сумма чека 560.99, точность округления до 1 рубля:

1. Цена - 300.12, ставка налога - 5%, сумма налога - 14.29, скидка на мелочь - нет

2. Цена - 160.31, ставка налога - 10%, сумма налога - 14.57, скидка на мелочь - нет

3. Цена - 100.56, ставка налога - 15%, сумма налога - 13.12, скидка на мелочь - 0.99


Panel
titleПример "Скидка применяется к позиции с наибольшей суммой"

Например, в чеке три позиции, сумма чека 560.99, точность округления до 1 рубля:

1. Цена - 300.12, мин.цена - 290.90, скидка на мелочь - 0.99

2. Цена - 160.31, мин.цена - 160.00, скидка на мелочь - нет

3. Цена - 100.56, мин.цена - 90.99, скидка на мелочь - нет– нет


Panel
titleПример "Скидка применяется к сумме чека без распределения по позициям"

Например, в чеке две позиции, сумма чека – 51.40, точность округления до 1 рубля:

1. Цена – 24.90

2. Цена – 26.50

Округление  – 0.40

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

...

  • при значении параметра true скидка на мелочь используется только при оплате чека наличными, вне зависимости от того, в каком порядке была применена оплата наличными;
  • при значении параметра false скидка на мелочь применяется во всех случаях, когда ее использование разрешено, независимо от способа оплаты чека.

В кассовом ПО Artix реализована возможность предоставления скидки на мелочь только для суммы доплаты при смешанной оплате чека (например, сертификат и наличный расчет), регулируется параметром calculateDiscountOnChangeByBalance:

  • при значении параметра true на доплату предоставляется скидка на мелочь,
  • при значении параметра false скидка на мелочь применяется на всю сумму чека, а не только на сумму доплаты.

Конфигурирование функции предоставления скидки на мелочь выполняется в файле /linuxcash/cash/conf/ncash.ini в секции [Check].:

maxSum (или любое другое значение) предоставлении
НаименованиеТип данныхВозможные значенияОписаниеПримечания
useDiscountOnChangeлогический
  • true
  • false
Использовать скидку на мелочьПо умолчанию false
distributeDiscountOnChange

строковый

  • proportional (ok, yes, enable, 1, true, allow, on)
  • maxVat
  • maxVatIntPriority
  • maxSum
  • maxSumIntPriority
  • fiscal

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



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

При значениях maxVatIntPriority и maxSumIntPriority скидка приоритетно применяется для штучных позиций.

Info
iconfalse

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


discountOnChangePrecisionстроковый

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

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

useDiscountOnChangeForCashPaymentOnly

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

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

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

calculateDiscountOnChangeByBalance

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

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

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


Info

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

  • useDiscountOnChange = true
  • useDiscountOnChangeForCashPaymentOnly = true


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

; Настройка вида распределения скидки "на мелочь" по позициям
; Возможные значения: proportional(либо true), maxVat, maxVatIntPriority, maxSum, maxSumIntPriority, fiscal
; По умолчанию proportional
;distributeDiscountOnChange = proportional  

; точностьТочность вычисления скидки "на мелочь",
; поПо умолчанию округляется до 1 для любой суммы чека"[0: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 надбавка на мелочь не применяется.

...

Info

Надбавку на мелочь (настройка useIncreaseOnChange) рекомендуется использовать вместе со скидкой на мелочь (настройка useIncreaseOnChange useDiscountOnChange).


НаименованиеТип данныхВозможные значенияОписаниеПримечания
useIncreaseOnChangeлогический
  • true
  • false
Использовать надбавку на мелочь для документов возвратаПо умолчанию false


Code Block
languagetext
titleПример настройки
[Check]
...
; Использовать "надбавку на мелочь" для документов возврата, по умолчанию надбавка не используется
;useIncreaseOnChange = false

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

Panel
titleПример

Например, в чеке продажи несколько позиций с весовыми товарами, сумма чека 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, что уравняло суммы чека продажи и чеков возврата.

Корректирующая скидка

В кассовом ПО Artix поддержан функционал корректирующей скидки для избежания разбиения товарной позиции при передаче в ФР в случае применения скидок. Функционал задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Check].

Использование корректирующей скидки определяется параметром useCorrectionDiscount:

  • при значении параметра true корректирующая скидка применяется, если это возможно,
  • при значении параметра false корректирующая скидка не применяется.

Совместное использование корректирующей скидки со скидками от внешней системы лояльности настраивается при помощи параметра useCorrectionDiscountWithExternalDiscount:

  • при значении параметра true корректирующая скидка применяется совместно со скидками внешней системы лояльности,
  • при значении параметра false корректирующая скидка совместно со скидками от внешней системы лояльности не применяется.

Возможность игнорирования минимальной цены товара при использовании корректирующей скидки задается при помощи параметра ignoreMinPriceForCorrectionDiscount:

  • при значении параметра true минимальная цена товара игнорируется,
  • при значении параметра false цена товара после применения корректирующей скидки не может быть ниже минимальной.

Разрешение уменьшения цены позиции с учетом скидок при вычислении значения корректирующей скидки задается параметром allowDecreasePriceForCorrectionDiscount:

  • при значении параметра true разрешается уменьшать цену позиции с учетом скидочных воздействий,
  • при значении параметра false цена позиции с учетом скидочных воздействий не изменяется.

Ограничение значения корректирующей скидки на позицию определяется параметром correctionDiscountSumLimit. Корректирующая скидка может принимать значения от 0.00 до значения  указанного в параметре correctionDiscountSumLimit.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
useCorrectionDiscountлогический
  • true
  • false
Использовать корректирующую скидкуПо умолчанию false
useCorrectionDiscountWithExternalDiscountлогический
  • true
  • false
Использовать корректирующую скидку совместно со скидками от внешней системы лояльности
По умолчанию false
ignoreMinPriceForCorrectionDiscountлогический
  • true
  • false
Игнорировать минимальную цену товара при использовании корректирующей скидкиПо умолчанию false

Anchor
allowDecreasePriceForCorrectionDiscount
allowDecreasePriceForCorrectionDiscount
allowDecreasePriceForCorrectionDiscount

логический
  • true
  • false
Разрешать уменьшение цены позиции с учетом скидок при вычислении значения корректирующей скидки По умолчанию false

Anchor
correctionDiscountSumLimit
correctionDiscountSumLimit

correctionDiscountSumLimit

вещественный

Максимально допустимое значение корректирующей скидки на позицию


По умолчанию 1.00

Расчет корректирующей скидки осуществляется для позиций в чеке, требующих разбиения при передаче в ФР в случае применения скидок. Расчет выполняется до тех пор, пока не завершится перебор позиций в чеке.

Image Added

Code Block
languagetext
titleПример настроек
[Check] 
; Использовать "корректирующую скидку"
; По умолчанию false
;useCorrectionDiscount = false

; Использовать "корректирующую скидку" совместно со скидками от внешней системы лояльности
; По умолчанию false
;useCorrectionDiscountWithExternalDiscount = false

; Игнорировать минимальную цену для корректирующей скидки
; По умолчанию false
;ignoreMinPriceForCorrectionDiscount = false

; Разрешать уменьшение цены позиции с учетом скидок при вычислении значения "корректирующей скидки"
; По умолчанию false
;allowDecreasePriceForCorrectionDiscount = false

; Максимально допустимое значение "корректирующей скидки" на позицию
; По умолчанию "1.00"
;correctionDiscountSumLimit = 1.00


Panel
titleПример "Корректирующая скидка совместно с allowDecreasePriceForCorrectionDiscount"

Пример настроек:

  • useCorrectionDiscount = true
  • useCorrectionDiscountWithExternalDiscount = false
  • ignoreMinPriceForCorrectionDiscount = false
  • allowDecreasePriceForCorrectionDiscount = true
  • correctionDiscountSumLimit = 1.00

Например, в чеке позиция с весовым товаром:

1. Ананас 3.028 кг * 38.00 р = 115.06 р

На позицию применено скидочное воздействие – 42.70 р.

Корректирующая скидка – 0.02 р.

Итоговая сумма чека – 72.34 р.

В чеке печатается:

  Ананас 3.028 кг * 23.89 р = 72.34 р
  Скидка                    = 42.72 р


Panel
titleПример "Корректирующая скидка без настройки allowDecreasePriceForCorrectionDiscount"

Пример настроек:

  • useCorrectionDiscount = true
  • useCorrectionDiscountWithExternalDiscount = false
  • ignoreMinPriceForCorrectionDiscount = false
  • allowDecreasePriceForCorrectionDiscount = false
  • correctionDiscountSumLimit = 1.00

Например, в чеке позиция с весовым товаром:

1. Ананас 3.028 кг * 38.00 р = 115.06 р

На позицию применено скидочное воздействие – 42.70 р.

Подходящая корректирующая скидка не найдена.

Итоговая сумма чека – 72.36 р.

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

  Ананас 2.028 кг * 23.89 р = 48.45 р
  Скидка                    = 28.60 р
  Ананас 1.000 кг * 23.90 р = 23.90 р
  Скидка                    = 14.11 р


Panel
titleПример "Ограничение корректирующей скидки через параметр correctionDiscountSumLimit"

Пример настроек:

  • useCorrectionDiscount = true
  • useCorrectionDiscountWithExternalDiscount = false
  • ignoreMinPriceForCorrectionDiscount = false
  • allowDecreasePriceForCorrectionDiscount = true

Например, в чеке позиция с весовым товаром:

1. Персик 13.978 кг * 23.00 р = 321.49 р

На позицию применено скидочное воздействие – 299.97 р.

Panel
  • correctionDiscountSumLimit = 0.10

Подходящая корректирующая скидка не найдена.

Итоговая сумма чека – 21.52 р.

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

  Персик 12.978 кг * 1.54 р = 19.99 р
  Скидка                    = 278.50 р
  Персик 1.000 кг * 1.53 р = 1.53 р
  Скидка                    = 21.47 р


Panel
  • correctionDiscountSumLimit = 1.00

Корректирующая скидка – 0.13 р.

Итоговая сумма чека – 21.39 р.

В чеке печатается:

  Персик 13.978 кг * 1.53 р = 21.39 р
  Скидка                    = 300.10 р