/IceCash

IceCash. Касса Linux. Рабочее место кассира под linux с использованием web интерфейса. С драйвером к Штрих-М ФРК.

Primary LanguagePHP

Новости:
Скачать веб оснастку с драйвером и сервером драйвера можно тут http://icecash.ru:8181/dIceWWW.tar.bz2
Скрипты создания mysql таблиц тут http://icecash.ru:8181/dIceMysql.tar.bz2
Образ диска установщика кассы на debian 6 http://icecash.ru:8181/IceCash.iso
redeyser@gmail.com 09/06/2015

IceCash v 3.014
Драйвер штрих-м и сервер для этого драйвера.
Драйвер я немного дописал.


Это давно не обновлялось:
-----------------------------------------------------------------
Здесь вы найдете:
1. Драйвер для штрих-М
2.Сервер этого драйвера для управления фискальником и кассой.
3.php оснастка для рабочего места кассира
4.клиент для автоматического обмена прайсами и обновления программы.

ФРК управляется драйвером kkmdrv.KKM через объект frk.frk.
Сам frk помещается в демон dIceCash и там инициализируется.
В dIceCash также помещается объект dbIce - база данных mysql (транзакции, прайс, настройки) и сокетный клиент для ограниченного 
(в данном случае одного) количества активных пользователей.

Для тестов работы сервера и ФРК можно использовать сокетного клиента cIceCash, предварительно набрав все команды в текстовый файл:
  Команда должна иметь вид: <Номер кассы>;<объект назначения>;<команда>;<параметр1>;<параметр2>,...
  Объекты назначения: db - база данных, frk - фискальник, frkr - фискальник (запросы без результата), self - собственные.
    db   - запросы к базе данных (найти товар по коду, найти дисконтную карту, провести транзакцию скидки)
    frk  - запросы к ФРК, они направляются напрямую в объект frk через метод parsingCmd, при этом необходимые транзакции пишутся в базу данных автоматически
    frkr - запросы на получение номера текущего чека, статуса объекта frk
    self - изменение переменной, отвечающей за режим работы без ФРК, а также команды загрузки-выгрузки обменных файлов в формате Штрих-М.

  Для запросов frk, пересылается клиенту ответ от фискальника (0 - операция прошла успешно, err - ошибка фискальника)
  ПРИМЕР:
   echo "1;frk;connect;/dev/ttyS0;115200" >txt
   echo "1;frk;disconnect" >>txt
   ./dIceCash.py &
   cat txt | ./cIceCash.py 

Можно использовать просто telnet (только в этом случае будет действовать ограничение на один открытый коннект, до тех пор пока вы не отключитесь):
  ПРИМЕР:
    telnet localhost 7171
    1;frk;connect;/dev/ttyS0;115200

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

В данном случае используется WEB клиент (PHP на стороне сервера) для взаимодействия с сервером dIceCash.


1. Базовые исходники kkmdrv.py и надстройка frk.py
-------------------------------------------------------------------------------
В основе работы с ФРК ШТРИХ-М лежит написанный объект-драйвер неким Dmitry Shamov <demmsnt@gmail.com>, взятый отсюда: http://sourceforge.net/projects/pyshtrih/.
Использовался только файл "kkmdrv.py" версии 1.0.4. В драйвер были добавлены некоторые, функции, возможно автор внесет их в новую версию. 

Описание драйвера:
Для удобства, был создан файл frk.py и одноименный объект, который включает в себя базовый объект kkmdrv.KKM.
frk
__init__ 
    только задает начальные свойства (пароли, порт, скорость порта)
connect 
    создает объект KKM, открывает порт, опрашивает регистратор.
disconnect
    закрывает порт.

Все используемые методы объекта KKM вынесены в объекте frk и помещены в обработку исключений. В некоторых методах сокращены параметры для удобства (setDate setTime ...)
Добавлены методы в базовый драйвер и вынесены в frk:
cut - отрезка чека
renull - технологическое обнуление
open_box - открытие ящика
writesets - запись трёх настроек ФРК (автообнуление наличности, автоотрезка чека, автоокрытие ящика)
writesets_text - запись трёх строк в заголовке чека (12,13,14 строка в настройках текста в чеке)

frk также содержит метод parsingCmd, который получает универсальные параметры для использования собственных методов.
Таким образом с ФРК можно работать например так:
D=frk(kkmdrv.DEFAULT_PASSWORD,kkmdrv.DEFAULT_ADM_PASSWORD,'/dev/ttyS0',115200)
D.connect()
D.writesets(1,1,1)
D.openCheck(0)
D.Sale(2,20,'PIVO ZVERSKOE')
D.closeCheck(100,10,20)
D.disconnect

Или так:
D=frk(kkmdrv.DEFAULT_PASSWORD,kkmdrv.DEFAULT_ADM_PASSWORD,'/dev/ttyS0',115200)
D.connect()
D.parsingCmd('open_check',[0])
D.parsingCmd('sale',[float(1),float(20.5),"PIVASIK"])
D.parsingCmd('close_check',[float(100),float(10),float(20)])