Проблема и требование кассы
При продаже маркированного товара физическому лицу в чек необходимо передать полный код. Если учётная система знает только нормализованную короткую часть, кассе нечего использовать для передачи полного значения. Значит, полный код нужно сохранить при сканировании и обеспечить его доступность на этапе формирования продажи.
В этой задаче важно было не смешивать полный код с обычным штрихкодом и не пытаться восстановить криптографическую часть позднее. Источник полного значения — сканирование на складе; учётная система должна получить его по понятной связи с товаром и заказом.
Состав решения
- Хранение полного значения. Предусматривалась связь объекта кода маркировки с отдельным реквизитом полного штрихкода, чтобы хранить значение с криптографической частью.
- Отдельный рабочий поток. Добавлялся признак потока «Сборка ФЛ КМ», позволяющий выделить операции, в которых для продажи физлицу требуется подготовить полный код.
- Настройка номенклатуры. Предусматривался регистр соответствия видов номенклатуры новому рабочему потоку, чтобы определить, к каким товарам применяется сценарий.
- Интерфейс для учётной системы. Проектировался API, возвращающий список полных кодов маркировки по заказу для последующей передачи в ККТ.
На что обратить внимание при реализации
Ключевое условие — стабильная связь между кодом, строкой товара, складским заданием и заказом. Если один заказ комплектуется несколькими заданиями или один код встречается в повторном запросе, API должен возвращать ожидаемый состав без дублей и с диагностируемым результатом.
Также следует определить поведение, если полного кода нет, код не относится к настроенному виду номенклатуры, заказ ещё не собран или найдено несколько кандидатов. Эти случаи должны иметь явный ответ для вызывающей системы и не превращаться в молчаливую потерю данных.
Полный код может содержать специальный разделитель и криптографическую часть. Транспорт и формат хранения должны сохранить исходное значение без потери символов. Секретные и полные коды не следует выводить в обычные журналы.
Что проверять на тестовых сценариях
- полный код сохраняется при сканировании и доступен по заказу;
- для настроенного вида товара запускается нужный поток сборки;
- для товара вне настройки код не попадает в этот поток;
- повторный запрос не возвращает дубли и не меняет данные;
- отсутствие полного кода возвращается как отдельное диагностируемое состояние;
- учётная система получает формат, который ожидает интерфейс кассы.
Результат внедрения
Сборка подконтрольного «Честному знаку» товара для физического лица выделена в отдельный рабочий поток по принципу ОСУ и помечена как сборка для физлица. При сканировании каждого кода — упаковки или маркировки — выполняется проверка через УТ. Если код или товар вызывает сомнение, ТСД сообщает сборщику, что товар нужно отложить. Если товар разрешён к продаже, стоп-факторов на терминале нет.
Для кассового сценария реализовано хранение полного кода маркировки и API, через которое УТ получает список полных кодов по заказу для передачи на кассу.
Граница сценария
Описанный результат относится к проверке сканируемого товара при сборке и подготовке полных кодов к передаче на кассу. Другие сценарии розничной продажи и дальнейшая обработка результата проверки требуют отдельной постановки.
Нужно связать данные склада, учёта и кассового сценария?
Обсудить задачу ↗