Для считывания цены весового товара необходимо указать регулярное выражение для извлечения штрих-кода весового товара во вкладке "Источник данных". После добавления регулярного выражение, оно сохраняется в БД SQLite в таблицу Config.

Пример регулярного выражения
^21(?<bcode>\\d{9})(?<qty>\\d{5})$

 Регулярное выражение делится на группы. Группы заключены в (). На данный момент считываются группы с названиями bcode и qty. В bcode можно передать штих-код товара, в qty – количество весового товара.

Если группы не именованные, например, ^21(\\d{9})(\\d{5})123$, то считается, что первая группа – это штрих-код, вторая группа – количество.

Если регулярное выражение не содержит групп, например, ^\\d{13}$, то вся входная строка будет считаться штрих-кодом товара.

Если в БД SQLite в таблице Config не заданы регулярные выражения или входные данные не подходят ни под одно регулярное выражение, то считается, что был отправлен обычный товар и вся входная строка будет считаться штрих-кодом товара.

Округление цены весового товара

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

Настройки для округления цены весового товара регулируются параметрами priceRoundMode и pricePrecision:

НаименованиеТип данныхВозможные значенияОписаниеПримечания
priceRoundModeцелочисленный
  • 0 – до ближайшего большего
  • 1 – математически без потери значимости – округление до 0.5 в большую или меньшую сторону в зависимости от цифры слева: для нечетных цифр – в большую, для четных – в меньшую сторону
  • 2 – математически с потерей значимости – округление до 0.5 в большую сторону
  • 3 – до ближайшего меньшего
Способ округления ценыПо умолчанию 2
pricePrecisionцелочисленный
  • 0 – округление до целого числа (до запятой)
  • 1 – округление до десятичных (до одной цифры после запятой)
  • 2 – округление до сотых (до двух цифр после запятой)
  • 3 – округление до тысячных (до трех цифр после запятой)
Количество значимых цифр после запятойПо умолчанию 2
Пример настройки
priceRoundMode - способ округления цены, по умолчанию 2 – "математический с потерей точности"
pricePrecision - кол-во значимых цифр после запятой (т.е. округлять дробную часть до десятков, сотен и т.д.), по умолчанию 2
Пример 1

В БД SQLite в таблице Config  есть регулярные выражения для весового товара:

TMC="^21(?<bcode>\\d{9})(?<qty>\\d{5})$, ^21(\\d{9})(\\d{5})123$"
priceRoundMode = 2
pricePrecision = 2

На вход поступает строка вида 2112345679900160. Она попадает под выражение ^21(?<bcode>\\d{9})(?<qty>\\d{5})$.
Из этой строки получается:

  • штрих-код 123456799,
  • количество 00160 = 0,16 кг.

Цена товара = 1299,78 за кг.
Цена за полученное количество = 0,16 * 1299,78 = 207,9632. Происходит округление до сотых – 207,96.

Пример 2

В БД SQLite в таблице Config  есть регулярные выражения для весового товара:

TMC="^21(?<bcode>\\d{9})(?<qty>\\d{5})$, ^21(\\d{9})(\\d{5})123$"
priceRoundMode = 1
pricePrecision = 1

На вход поступает строка вида 2112345679900160. Она попадает под выражение ^21(?<bcode>\\d{9})(?<qty>\\d{5})$.
Из этой строки получается:

  • штрих-код 123456799,
  • количество 00160 = 0,16 кг.

Цена товара = 1299,78 за кг.
Цена за полученное количество = 0,16 * 1299,78 = 207,9648. Происходит округление до десятичных – 208,00.

  • No labels