Версия для офлайнового просмотра

Системные возможности кассовых аппаратов.

Фирма «Хелп-Микро» разработала множество моделей кассовых аппаратов. Аппараты обладают разными функциональными возможностями. Например, разные модели реализуют различные варианты выплат, в некоторые встроена поддержка почтовых функций, ресторанный режим, поддержка расширенных возможностей фискального принтера. Но, несмотря на различия между моделями, аппараты обладают единой структурой, которая позволяет создать независимое от модели кассы программное обеспечение.

Рассмотрим структуру аппарата.

 

Структура кассового аппарата

 

Рисунок 1

Табличная подсистема.

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

Таблицы аппарата доступны компьютеру всегда. Необходимым условием является только включение аппарата. Любую таблицу можно прочитать в любом режиме работы кассы, например, во время работы кассира, в режиме фискального принтера, в процессе обработки online запроса.

По методам доступа различаются четыре вида таблиц.

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

Похожей по методу доступа является таблица электронной ленты. Это таблица, которая содержит информацию о продажах за несколько дней работы аппарата с максимальной степенью детализации. На основании информации, содержащейся в ленте, аппарат в состоянии в любой момент вывести копию любого чека. Это единственная информация о продажах, которая хранится в аппарате. Те отчеты, которые печатает аппарат, вычисляются из электронной ленты в момент их вывода. Электронная лента, как и таблицы фискальной памяти, доступна компьютеру только на чтение. Аппарат может добавлять в нее записи и обнулять ее.

Таблицы программирования аппарата – таблицы, содержимое которых влияет на текущее поведение аппарата. В частности, на вид чека, количество on-line запросов, которые издаются аппаратом, интерпретацию аппаратом весовых штрих-кодов, назначение клавиш в режиме регистрации. Так как форма чека не может меняться в средине смены, некоторые таблицы доступны для изменения только в период после выведения обнуляющих отчетов до начала торговли.

Все таблицы программирования содержат фиксированное количество строк. Компьютер не может вставить или удалить строку в такой таблице. Разрешена только операция модификации.

Последний тип таблиц – таблица товаров. Эта таблица произвольного доступа. Можно добавлять, стирать, изменять товары в любой момент времени. При изменении цены товара аппарат правильно соберет статистику по продажам. Благодаря тому, что вся статистика хранится в электронной ленте, возможно удалять продававшиеся в течении дня товары не дожидаясь дневного отчета.

Аппарат сделан таким образом, что можно перераспределять место между таблицей товаров и электронной лентой. Например, в крупном магазине можно иметь максимум товаров с объемом электронной ленты на один день торговли, а в распределенной сети киосков можно уменьшить максимальный поддерживаемый ассортимент до 800-1000 товаров и, за счет этого, снимать информацию о продажах раз в неделю.

Внутренний фискальный принтер.

Второй структурной частью кассового аппарата является его внутренний фискальный принтер. Фискальный принтер печатает чеки, одновременно заполняя электронную ленту, и производит дневные обнуляющие отчеты, одновременно заполняя фискальную память. У остальных частей аппарата существует четкий интерфейс с фискальным принтером в виде более чем десятка процедур. Компьютер также может получить доступ к этому интерфейсу. Существует базовый набор процедур фискального принтера, который поддерживается всеми  кассовыми аппаратами, и расширения для конкретной модели аппарата. Так, например, более старые модели аппаратов поддерживают механизм выплаты денежных сумм. Более новые модели вместо этого механизма поддерживают возвратные чеки, которые позволяют выплачивать не просто суммы из денежного ящика, но и собирать статистику по выплатам так же, как по продажам товаров. Для специализированных фискальных принтеров (МИНИ-ФП) вводится дополнительная функция расширенной продажи с расширенным названием и указанием единицы измерения.

Интерфейс с кассиром.

Основной работой этой подсистемы является преобразование действий кассира (нажатие клавиш на клавиатуре, щелчок сканера и т.д.) в команды фискального принтера. Из этой части кассы, в основном, приходят online-запросы. Например, она выдает запрос на неизвестный код, когда кассир вводит код товара не описанный в таблице товаров или сигнализирует об окончании обнуляющего отчета или конце чека отсылкой соответствующего сообщения.

Подсистема сетевого доступа.

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

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

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

Протокол, который обеспечивает доступ к объектам кассы, называется EQL (EmbeddedQueryLanguage). Протокол имеет примитивы для чтения таблицы, вставки, изменения и удаления строки таблицы, вызова процедуры, получения и обработки online запроса. Протокол EQL является информационным протоколом и работает поверх различных транспортных протоколов.

Стек протоколов кассы изображен на следующем рисунке.

 

Стек протоколов кассы

Рисунок 2

На нижнем уровне в кассовом аппарате реализован протокол NetCash’95. Этот протокол отвечает за гарантированную передачу пакетов и последовательностей пакетов. Он работает поверх физических интерфейсов RS-232, RS-485, IrDA.

Между ними располагается уровень сессий. Этот уровень позволяет открыть на кассе две независимых  EQL сессии. Таким образом, аппарат может исполнять два независимых потока команд. Это дает возможность, например, двум различным приложениям общаться с кассовым аппаратом не мешая друг другу. Это удобно для реализации стандартных операций с кассой. В пакет стандартного программного обеспечения, в частности, входит программа online-сбора отчетов, которая собирает статистику по продажам в отдельном соединении, позволяя в другом соединении реализовывать процесс торговли в любом режиме (online, offline, фискальный принтер).

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

В результате, как видно, получился трехуровневый стек протоколов, которые, хоть и обладают надежностью и гибкостью, все-таки сложны в реализации. Это не страшно для компьютерных приложений – так как имеется системное программное обеспечение, поддерживающее этот стек. Но иногда с аппаратом хотят работать через другие не-PC устройства. Например, аппаратные кассовые сервера или наладонные компьютеры Palm или WinCE. В этом случае, либо физически невозможна реализация полного стека протоколов, либо это нецелесообразно экономически.

Поэтому был разработан упрощенный протокол, который работает только поверх RS-232 соединения и позволяет открыть только одну EQL сессию. Здесь работать с аппаратом очень просто. Например, можно создать файл с EQL примитивами для программирования 5000 товаров, настроить соответствующим образом COM порт и запрограммировать товары в кассу простым копированием этого файла в порт.

 

Методы организации компьютерно-кассовой сети.

Существует три варианта организации компьютерно-кассовой сети – по числу поддерживаемых физических протоколов.

 

Варианты организации компьютерно-кассовой сети

Рисунок 3

Создание сети на основе RS-232 требует подключения одного аппарата к одному последовательному порту компьютера. Для подсоединения к компьютеру более чем двух кассовых аппаратов потребуется мультипортовый контроллер. Удаление аппаратов от компьютера зависит от скорости обмена и может составлять от 20 до 60 метров. В этом случае кассовый аппарат может работать как по полному, так и по упрощенному протоколу. Для идентификации кассового аппарата в сети достаточно указать номер COM-порта.

Создание сети на основе RS-485 требует наличия в компьютере специализированного RS-485 контроллера. К этому контроллеру можно подсоединить до 30 кассовых аппаратов с удалением от компьютера до 1200 метров. При наличии нескольких плат число аппаратов, подключенных к одному компьютеру, может быть увеличено. Такое подключение возможно только по полному протоколу.

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

Создание распределенной компьютерно-кассовой сети возможно с помощью мобильных терминалов «Слав-ИЧ». Это универсальное устройство с FLASH-диском, на котором возможно сохранить последовательность EQL-команд кассе при соединении его с компьютером. При последующем соединении с кассовым аппаратом эта последовательность отсылается на него и на FLASH-диске сохраняется ответ от кассы. При следующем соединении с компьютером можно использовать информацию, пришедшую от кассы. Так возможно получать отчеты от аппарата, программировать товары, изменять программные установки, даже выбивать чеки. При работе с мобильным терминалом аппараты идентифицируются по их заводским номерам или номерам системных плат. Логические и сетевые номера в данном случае значения не имеют.

Режимы работы кассового аппарата.

Традиционно различают три режима работы аппарата в компьютерно-кассовых сетях. Это режимы offline, online и режим фискального принтера. Следует отметить, что в EQL аппаратах отсутствует четкая граница между режимами online и offline. Они могут применяться совместно. Часть товаров может храниться в кассе, другая часть может продаваться по запросу из кассы. Можно организовать режим кэширования, когда по запросу кассы товар программируется  в нее и далее продается без запросов. Единственным четко выделенным режимом является режим фискального принтера. До начала торговли касса должна быть переведена в этот режим. Но здесь следует отметить, что касса автоматически переходит в режим фискального принтера внутри online запросов, что позволяет гибко реагировать на эти запросы.

Рассмотрим особенности реализации режимов в EQL аппаратах.

Режим offline.

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

В таблице товаров имеется так называемое поле флагов, в которую программируются признаки, управляющие особенностями продажи данного товара.

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

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

Для товара с признаком слежения за запасом аппарат следит, чтобы количество проданного товара не превышало запаса товара, запрограммированного в кассовый аппарат. В отличие от аппаратов других моделей в таблице товаров хранится запас товара на начало Z1 отчета, а не текущее количество товара в торговом зале. Например, в начале дня для товара было запрограммировано количество 10 единиц и за день продано 4 единицы. В конце дня перед выводом обнуляющего отчета, запас этого товара будет равен 10 и проданное количество 4. После вывода обнуляющего отчета запас товара будет равен 6 и проданное количество 0.

Для аппаратов, которые поддерживают возвратные чеки, имеется два дополнительных признака, которые запрещают продажу товара в обычных или возвратных чеках соответственно. Таким образом, можно запретить делать возвраты товаров, если этого не допускает технология торговли. С другой стороны можно проводить через кассу выплаты (выдача переводов, пенсий, скупка) учитывая их как товары с различными кодами, запретив предварительно продажу таких товаров в фискальных чеках продаж.

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

Кассовый аппарат хранит единственный отчет о продажах – электронную ленту продаж. Это информация о продажах с максимальной детализацией. Все остальные собственные отчеты о продажах (X отчет, отчет по состоянию денежного ящика и т.д.) вычисляются аппаратом из ленты в момент вывода соответствующего отчета. Обнуление таблицы электронной ленты не связано с процессом дневного обнуляющего отчета. Если позволяет место, аппарат может хранить статистику за несколько дней работы. Эта особенность аппарата использована в построении распределенных кассовых сетей на основе мобильного терминала «Слав-ИЧ». Таким образом, при работе кассы в режиме offline, информационной системе в любой момент времени доступна подробная информация о продажах в кассе за текущий день работы из таблицы электронной ленты. Информационная система может читать эту таблицу целиком или дочитывать ту часть ленты, которая еще не была прочитана.

Режим фискального принтера.

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

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

В чеке служебного внесения/изъятия денег запрещены функции продаж, скидок и оплат. Чек открывается и закрывается так же как чек продаж. Внутренний фискальный принтер аппарата определяет тип чека в зависимости от первой проведенной в чеке операции.

В разных моделях аппаратов по-разному реализована функция выплаты денежных сумм клиентам. Более старые версии аппаратов поддерживают чеки выплат. Такие чеки напоминают чеки служебного внесения/изъятия денег. Денежная сумма, выплачиваемая клиенту, в этом случае является просто суммой. Она не может быть соотнесена с каким-либо видом выплаты подобно тому, как продажи товаров соотносятся с кодами товаров. Новые модели аппаратов вместо чеков выплат поддерживают возвратные чеки. Это фискальные чеки наоборот. Фискальный принтер формирует такой чек также как и обычный. Например, если требуется вернуть товар, который был продан ранее со скидкой в 10%, такой чек будет распечатан теми же процедурами фискального принтера, что и продажа товара со скидкой 10%. Только открываться будет не обычный, а возвратный чек.

Режим online.

В режиме online аппарат имеет 10 запросов и сообщений, которые он может выдавать компьютерной системе.

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

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

Рассмотрим работу запросов и сообщений по функциональным группам.

Online продажа товаров.

Кассовый аппарат выдает запрос на неизвестный код товара, если он не нашел этого кода в таблице товаров. Торговая система может:

·        отвергнуть запрос, если код товара ей не известен,

·        записать этот товар в таблицу товаров и завершить запрос предписанием аппарату повторить поиск товара

·        продать товар процедурой фискального принтера и завершить запрос с сообщением об успешном выполнении продажи.

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

Online сбор статистики о продажах.

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

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

Online слежение за остатками.

Как уже говорилось ранее, кассовый аппарат может следить за тем, чтобы количество продаваемого товара не превышало его фактический остаток. Однако, этот режим слежения возможен только когда торговля идет через одну кассу. В случае нескольких кассовых аппаратов в одном отделе следить за количеством может только компьютер. Аппарат предоставляет альтернативную жесткому online возможность слежения за остатками для запрограммированных в кассу товаров. В этом случае у товара устанавливается признак online количества (запрос на квоту). Аппарат следит за запасом так же как и в offline варианте продаж но, когда его запас исчерпывается, он обращается за разрешением продажи к компьютеру. Компьютер может запретить, разрешить продажу и добавить аппарату наличного количества товара для того, чтобы избежать дальнейших запросов. Таким образом, можно отдавать товар на кассы порциями, избегая запросов на каждую продажу как это было бы в жестком online.

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

Терминальный режим.

В режиме фискального принтера аппарат имеет возможность перенаправлять свой клавиатурный ввод и ввод из локальных COM портов в компьютер. Компьютер может выводить информацию на индикатор и в COM порты кассы и, естественно, пользоваться процедурами фискального принтера. Это позволяет организовать какую-либо дополнительную функциональность для кассира. Так можно организовать, например, ввод информации о переучете через кассовый аппарат непосредственно в компьютерную систему. На этом принципе построено общение с пользователем мобильного терминала «Слав-ИЧ», когда клавиатура и индикатор кассы используются для управления этим устройством.

Остальные запросы.

Аппарат позволяет вводить код клиента для некоторых видов оплат и запрашивать компьютер подтверждения операции оплаты.  Это может быть использовано для работы по дисконтным схемам.

Аппарат имеет запрос по ключу – возможность отослать в компьютер последовательность цифр или символов. В ответ компьютер может устанавливать содержимое индикатора, печатать фискальные или нефискальные чеки, изменять таблицы кассового аппарата.

Построение распределенных сетей.

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

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

В случае центрального офиса с сетью филиалов кассовые аппараты устанавливаются стационарно. Программирование их товарами и съем отчетов должны проводится на месте их установки при помощи портативного компьютера или мобильного терминала «Слав-ИЧ».  Съем отчетов с удаленного аппарата представляет собой, как и в других режимах работы, считывание электронной ленты с информацией о продажах. Отличие удаленного аппарата от стационарно подключенного к компьютерной системе заключается в том, что для удаленного аппарата практически невозможно обеспечить соединение с компьютерной системой в момент выдачи дневного обнуляющего отчета. Аппараты рассчитаны на такой режим работы. Они могут хранить в себе информацию о продажах за несколько дней работы и при очистке электронной ленты удаляют из нее только закрытые отчеты. Этот механизм позволяет не допустить переполнения электронной ленты и обнуления непрочитанной из кассы информации о продажах.

Фирма «Хелп-Микро» разработала недорогой мобильный терминал «Слав-ИЧ» для обеспечения работы распределенных сетей. Для компьютера – это съемный FLASH-диск на который записываются файлы с командами кассовым аппаратам. Для каждого аппарата можно определить набор принадлежащих ему командных файлов. Командные файлы – это, фактически, поток EQL команд, который при соединении с кассовым аппаратом пересылается на него и результат выполнения этого потока команд сохраняется в выходном файле. Так можно получать и изменять товары и программные установки кассы, читать отчеты, которые хранятся в кассовом аппарате. При желании с помощью этого механизма можно даже печатать чеки. При соединении с аппаратом терминал передает на него назначенные командные файлы и сохраняет ответы на них. Имеется также консольный режим, когда с клавиатуры кассы возможно выбрать и отправить на кассу командный файл. Документация на мобильный терминал находится здесь.