Принцип работы

Касса самообслуживания оборудована системой контроля веса покупок, которая используется для оповещения персонала о подозрительной активности покупателей. В этой системе кассой собираются данные о реальном весе товаров и формируются эталонные значения веса. При помощи полученных эталонов и контрольных весов контролируется соответствие позиций в чеке фактическому весу покупки. Если фактический вес товара не соответствует ожидаемому - будет показана соответствующая ошибка контроля веса, и касса оповестит сотрудников магазина о проблеме при помощи встроенных средств оповещения.

Формирование эталонных значений веса

Источником фактического веса товаров на кассе служит:

  1. Режим продажи, где сохраняется вес каждого проданного товара;
  2. Режим обучения контрольным весам;
  3. Вес, сохраненный консультантом при ошибке контроля веса.

При взвешивании источник фактического веса записывается в поле source таблицы weight в БД weightcontrol.sqlite.

При анализе данных все полученные фактические значения веса для каждого штрих-кода объединяются в группы по наиболее близким значениям. Если в группу попало 3 и более значений (настраивается на кассе), то эта группа преобразуется в диапазон, где в качестве границ используется максимальное и минимальное значения. Если для одного штрих-кода получилось больше трёх диапазонов, тогда количество диапазонов уменьшается до трех путем объединения близких диапазонов.

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

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

В режиме обучения доступна очистка эталонов, при помощи которой удаляются все текущие взвешивания и эталоны из БД для товара.

Контроль веса на кассе

После добавления позиций в чек касса ожидает изменение веса в зависимости от типа товара. От типа товара также зависит процесс формирования и использования эталонов.

Штучные товары

Для штучного товара при формировании эталонов используется вес за одну единицу. При добавлении товара в чек проверка веса осуществляется с учетом количества.

Пример

Например, при эталоне 0.200 - 0.220 кг и количестве 3, касса ожидает увеличение веса на 0.600 - 0.660 кг.

Весовые товары

Для товаров, у которых единица измерения дробная, в качестве основного эталона используется количество из позиции. Как правило, это вес, полученный из штрих-кода. Кроме веса позиции также могут быть использованы и эталонные значения веса, но в этом случае они используются как отклонение от количества в позиции. Такая ситуация может возникнуть, если в штрих-коде вес без учета тары. В этом случае необходимо обучить систему корректному весу.

Пример

Например, продаются конфеты в коробке. Вес в штрих-коде 0.890 кг, фактический вес на весах 0.911, эталоны для этого товара отсутствуют. После добавления товара на контрольные весы будет показана ошибка контрольного веса, так как разница больше допустимого отклонения на контрольных весах. В этом случае надо либо в окне ошибки контроля веса сохранить вес, либо обучить этот товар в режиме обучения контрольным весам. После этого появится эталонный диапазон 0.021 - 0.021 кг, который и будет использоваться при последующих проверках веса. При добавлении товара с весом в штрих-коде 0.493 кг, касса уже будет ожидать изменение веса в 0.514 кг с учетом допустимого отклонения.

Весовые товары с количеством с прикассовых весов

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

Пример

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

Легкие товары

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

В таких случаях:

  • можно сохранить нулевой вес в окне ошибки контроля веса;
  • либо для этого товара можно задать соответствующий признак в справочнике товаров;
  • либо добавить этот товар в режиме обучения контрольным весам.

При добавлении легких товаров без эталонов допускается изменение веса на величину от 0 до maxLowWeight (настройка). Покупатель может сразу отсканировать следующий товар или перейти в оплату.

Если нижняя граница одного из диапазонов эталона меньше или равна погрешности контрольных весов, то товар считается легким. Например, для погрешности весов 0.015 кг, товары с диапазонами 0.000 - 0.030, 0.010 - 0.040, 0.015 - 0.030 будут считаться легкими. Товары с диапазонами 0.016 - 0.030, 0.020 - 0.040 не легкие.

У эталонных значений в БД приоритет над признаком легкого товара в справочнике. Если для товара есть эталоны больше погрешности, например 0.040 - 0.050 кг, при погрешности 0.015 кг, то признак легкого товара игнорируется. Или если эталон 0.010 - 0.040 кг, при погрешности 0.015, то независимо от того есть признак легкого товара или нет, товар считается легким.

Товары без проверки веса

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

Для таких товаров устанавливается соответствующий признак в справочнике товаров.

Учет погрешности

В системе контроля веса учет погрешности ведется только в момент проверки веса при продаже. Общее допустимое отклонение формируется из:

  • ошибки контрольных весов,
  • погрешности из настройки scaleError​,
  • допустимого отклонения веса товара, заданного настройкой tolerance,
  • допустимого отклонения веса весового товара, заданного настройкой fractGoodsTolerance,
  • допустимого отклонения веса товара с неточным весом, заданного настройкой fuzzyTolerance, если у товара задана соответствующая опция.

Выбирается максимальное значение из этих погрешностей. 

Пример

Например, если эталонные значения для некоторого товара 0.290 - 0.305 кг, погрешность контрольных весов для текущего веса 0.010 кг, допустимое отклонение в настройках tolerance 0.020 кг, то допустимый диапазон веса, который ожидает касса будет 0.270 - 0.325 кг.

Настройка

Для включения контроля веса необходимо включить модуль и настроить драйвер контрольных весов.

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса
enable
  • true
  • false (по умолчанию)
Включить контроля веса на кассе

Может потребоваться изменение deviceType в теме оформления и изменение расположения контрольных весов.

В меню добавляются действия:

  • WEIGHTCONTROL_EDIT (для Artix - SST_WEIGHTCONTROL_EDIT) - редактирование контрольных весов,
  • WEIGHTCONTROL_EXCHANGESTATUS (для Artix - SST_WEIGHTCONTROL_EXCHANGESTATUS) - состояние обмена.

Также настраивается "Обмен данными контрольных весов".

Взвешивание на контрольных весах

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

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса

heft

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

Использовать контрольные весы только для получения веса товаров
Для работы необходимо включить настройку heft
Таймаут отключения сканера при добавлении товара задается через addLowWeightTimeout

Контроль веса во время оплаты

Если в процессе оплаты возникнет ошибка оплаты, то ошибки контроля веса будут отложены до закрытия диалога ошибки
НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса
strictInPayment
  • true (по умолчанию)
  • false
Строгий контроль при успешной оплате. Если:
true - в момент оплаты допускается только уменьшение веса, ошибка скроется после успешной оплаты. При любых других ошибках касса будет требовать вернуть корректный вес покупки и только потом продолжит закрытие чека.
false - касса позволяет забрать товары после любой другой ошибки. В этом случае допускается положить не отсканированный товар на контрольные весы во время оплаты. Будет показана ошибка контроля веса, но как только получен результат успешной оплаты и покупки заберут, чек закроется. Если оплата завершится с ошибкой, тогда программа потребует исправить ошибку контроля веса.
ignoreErrorInPayment
  • true
  • false (по умолчанию)
Игнорировать любые ошибки контроля веса в момент оплаты.
Ошибка будет отображаться после завершения оплаты

Погрешность и допустимые отклонения веса

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

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса

scaleError

список значений вида <общий вес всех товаров на контрольных весах>:<ошибка>
по умолчанию 0:10

Ошибка контрольных весов, в граммах
При изменении общего веса на контрольных весах в пределах значения ошибки не возникнет ошибок контроля веса

ignoreDriverError
  • true
  • false (по умолчанию)
Игнорировать погрешность из драйвера контрольных весов, использовать только scaleError
toleranceсписок значений вида <общий вес всех товаров на контрольных весах>:<отклонение для проверяемого товара>
по умолчанию 0:20, 10000:50
Допустимые отклонения веса товара на контрольных весах, в граммах
При заданном общем весе на контрольных весах будет использоваться указанное отклонение во время сверки добавленного веса с эталоном товара
fractGoodsToleranceсписок значений вида <вес товара на контрольных весах>:<допустимое отклонение>
по умолчанию 0:0

Допустимые отклонения веса товара на контрольных весах для товаров, у которых количество весовое, но не с прикассовых весов (например, вес из штрих-кода)
При заданном весе товара на контрольных весах будет использоваться указанное отклонение во время его сверки с эталоном товара

fuzzyTolerance

список значений вида <вес товара на контрольных весах>:<допустимое отклонение>
по умолчанию 0:0

Допустимые отклонения веса товаров с неточным весом, в граммах
Используется, если у товара в указан признак неточного контрольного веса

Все значения отклонений относительные, N:M означает что начиная со значения N (включительно) действует значение M. Например, для scaleError, значение 0:15, 1000:25, 10000:35 устанавливает погрешность 15 грамм от 0 до 1 кг, 25 грамм от 1 до 10 кг, и 35 грамм от 10 кг и выше.

Товары с неточным весом

Если есть товары, у которых вес может сильно отличаться (например, выпечка), тогда для этих товаров устанавливают признак неточного контрольного веса в справочнике товаров и устанавливают допустимые отклонения.

Отклонения товаров с неточным весом
[WeightControl]
enable = true
fuzzyTolerance = 0:30, 200:50

Добавление легких товаров

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса

maxLowWeight

целое положительное число
по умолчанию 30
Максимально допустимый вес для одного легкого товара, в граммах. Используется если для товара в БД нет эталона, и у товара установлен признак легкий товар в справочнике.
addLowWeightTimeoutцелое положительное число
по умолчанию 2
Таймаут отключения сканера после добавления легкого товара в чек, в секундах. Помогает избавится от случайных повторных сканирований.
lowWeightHints
  • true (по умолчанию)
  • false
Отображение покупателю подсказки добавления легкого товара. При false не отображается статус для позиции с легким весом и не горит подсказка добавления на весовую платформу.

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

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса

setQuantityOne

  • true
  • false (по умолчанию)
Запрашивать количество товара, только если вес не равен эталону
Только для штучных товаров с известным эталоном
В эталон (с учетом допустимых отклонений) не должен попадать товар с количеством 2

Добавление нескольких товаров

В чек может быть добавлено несколько позиций за один раз при условии, что у каждого товара существует только один эталон. В таком случае касса будет ожидать на весах общий вес всех добавляемых товаров с учетом настроек погрешности. При добавлении таких товаров не выполняется сохранение взвешиваний в продаже.
Если у товара эталонов несколько, либо отсутствует эталон, то касса отобразит ошибку неверного веса и в root.log запишется штрих-код неподходящего под условия товара.
Для весовых товаров с весом из штрих-кода за эталон берется обученный эталон (если есть), либо вес из штрих-кода. Также настройкой forceWeightFromBarcode можно включить игнорирование эталонов для такого товара - будет браться весовая часть из штрих-кода.

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса
forceWeightFromBarcode
  • true
  • false (по умолчанию)
Принудительно использовать вес из штрих-кода для весовых товаров
Не относится к товарам, взвешенным на прикассовых весах

Таймауты отображения ошибки контроля веса

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса
addPositionTimeoutцелое положительное число
по умолчанию 5

Время в секундах между добавлением товара в чек и отображением ошибки покупателю, если он не положил товар на контрольные весы.

errorTimeoutцелое положительное число
по умолчанию 5
Время в секундах между отображением ошибки покупателю и вызовом консультанта.

skipActionTimeout

целое положительное число
по умолчанию 1000

Таймаут, в течение которого выполняется повтор пропущенного действия при не добавленном товаре, в миллисекундах
После сканирования товара, если товар не добавлен и нажимается кнопка, то сразу отображается ошибка "Товар не добавлен". Если ошибка будет исправлена в течение этого периода, то после закрытия окна действие кнопки будет выполнено повторно

stableWeightTimeoutцелое положительное число
по умолчанию 60
Таймаут стабилизации веса, в секундах
В течение этого таймаута допускается последовательное изменение веса в рамках погрешности весов с возвратом в исходное или промежуточное значение. ​Если 0, то стабилизация выключена

Настройка формирования эталонов

НаименованиеВозможные значенияОписание
Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса

weightsCount

целое положительное число
по умолчанию 3

Минимальное количество взвешиваний, необходимое для получения эталонного значения веса товара

rangeFactor

целое положительное число
по умолчанию 50

Коэффициент для расчета эталонного значения веса товара

minRangeError

целое положительное число
по умолчанию 15

Минимальная погрешность веса для вычисления эталонных диапазона весов товара в граммах

При формировании эталонов выполняется поиск групп похожих взвешиваний. Из группы формируется эталон если в группе weightsCount или более взвешиваний и они попадают в допустимый радиус. Радиус рассчитывается как rangeFactor * <среднее значение группы> / 1000. Минимальное значение радиуса ограничивается значением minRangeError.

  • No labels