Wednesday, November 5, 2014

IceCash 1.3. Linux рабочее место кассира на php, с драйвером Штрих-М

IceCash 1.3. Linux рабочее место кассира на php, с драйвером Штрих-М

*nix*Python*PHP*
image

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

А именно, программа управляет фискальным аппаратом, взаимодействуя с кассиром через локальный сайт. К сайту этому можно подключаться удаленно и тоже работать, управляя локальным фискальником. За всё время работы были выявлены и устранены разные косяки и написаны новые :) Ну всё как обычно. Проект имеет и свою серверную часть. Все транзакции собираются в одну базу данных, работают скрипты по обмену информацией сервера с кассами. Был дописан локальный отчет, из которого можно делать копии чека. Также система теперь может работать с бонусными картами (связан с бонусным сервером).
image

Так как всё написанное носило незавершенный характер, даже очень хаотичный, то передать заинтересованным лицам что-то завершенное, рабочее не представлялось возможным. И всё же мне пришлось сделать установочный диск, который должен был убрать из моей памяти много мусора в виде инструкций по установке кассы. Этот диск таки я решил выложить в интернет. Авось кому пригодится.

image

Коротко о самой системе: Linux Debian 6 (ядро 3.2) icewm, apache2, mysql. Демон поуправлению фискальником написан на питоне. Веб морда на php. Драйвер Штрих-М взят у Dmitry Shamov проект
Установочной диск можно скачать отсюда iso или отсюда torrent. В установке есть возможность установить сам установщик на флешку, так удобнее. К инталлятору можно подсоединится по RDP. Сама система отнимет около 2Гб места на диске. Инсталлятор разобъет диск на своп в 1 ГБ и 7Гб корень.

image
    • Разработка — «Рабочее место кассира» под LINUX. GPL из песочницы

      Последние новости


      Система работает на 15 кассах. Дописывается. git здесь github.com/redeyser/IceCash. почта моя здесь redeyser@gmail.com Видео
      www.youtube.com/watch?v=69AF7n6sxDY

      Предыстория


      Так сложилось, что работаю программистом/админом в розничной торговой сети. Работаю уже два года, до этого никогда не сталкивался с обслуживанием специализированных программ и техники, но разобрался со временем. Особенностью моей организации является то, что вкладываться в нормальную технику начальство не собирается категорически. То есть, модернизацией и близко не пахнет, а вот носиться на замену чего-то, вновь исдохшего приходится частенько. Кроме того, большинство торговых точек не обладают лицензией на установленную ОС Windows XP. На розничных точках стоит одна или две кассы на базе умирающих от старости компьютеров, таких же старых фискальных аппаратов Штрих-М ФРК, различных сканеров штрихкода (COM, USB,Keyboard) и весов METTLER TOLEDO. Из программного обеспечения изначально было только лицензионная (с ключом) 1С v7.7 «ШТРИХ-М Кассир».

      Внедряем Linux где это возможно


      Помимо обязанностей — следить за кассами, на моих плечах был и офис и удаленный филиал со всеми 1С ками, железом (тоже не новым), серверами. И чего-то я с трудом всё это успевал обслуживать на первых порах. Честно признаться — я юниксофил, потому поспешил с внедрением linux. Постепенно удалось перевести офисных клиентов на Linux, и сразу стало легче дышать, компы перестали зарастать вирусами, оставалось только следить за железом да подбирать и устанавливать нужные программы. Основная работа клиентов продолжалась в Windows, но это был уже терминал на сервере, с ним проще. По возможности сервера я перевел тоже на Linux, оставив только один с windows server 2003.


      Windows на кассе — лишняя работа админу.


      На кассы частенько проникали вирусы с флэшек (музыка и игры переписывались постоянно) и операционку приходилось периодически менять. Конечно, на вновь установленных операционках делался запрет на подключение внешних носителей, но отказаться от пользователя- администратора не было возможности — программа «Штрих-М кассир» отказывалась работать адекватно. Местные хаккеры-продавцы постоянно ломали защиту и записывали вирусы, игры, не лицензионное ПО на рабочие компы! Не знаю, может мне не хватило упорства, чтобы устранить все эти неприятности, но возникла идея поставить linux и на кассы. Была проблема с драйверами на фискальный регистратор, спец программа для прогрузки весов хотела работать исключительно под windows (и никаких wine!), а также не было самой программы РМК (Рабочее место кассира).

      ДЭНСИ-КАССА под LINUX


      Пошарив в интернете, была найдена «ДЭНСИ-КАССА» Рабочее место кассира под linux. Программа стоит 1000р, что вполне вменяемо. Пробую ставить на ubuntu/debian, вроде бы работает. Проблему с прогрузкой весов решил через прогрузку по VPN с сервера, где установлен windows. Спустя полгода работы на ДЭНСИ-КАССЕ накопился определенный опыт. Меня не устраивало, что глючно работали новые клавиатурные сканера, причем именно из за самой программы. Сама программа тоже вываливалась, хотя, возможно я был не прав в отношении ее совместимости с ubuntu. От версии к версии в программе менялись концепции и приходилось подстраиваться под обновления. Разработчики заявили о свободном программном коде, но код этот не весь открытый, да и не достаточно свежий. Делать же свою ветку от ДЭНСИ-КАССЫ просто бессмысленное занятие, ведь работает она с закрытым драйвером ФРК.
      Для меня GPL это значит, что проект должен быть полностью ОТКРЫТЫЙ, ПООЩРЯЮЩИЙ СОВМЕСТНУЮ РАЗРАБОТКУ. Тут был сугубо коммерческий проект с недружелюбной политикой совместного проектирования.
      Не хочу сказать, что ребята плохо делают своё дело, но если бы они не охраняли так свою интеллектуальную собственность (как им кажется залог их коммерческого успеха), то развитие бы пошло куда более эффективно.

      Касса под LINUX, основанная на python драйвере ШТРИХ-М GLP


      На sourceforge нашелся gpl драйвер написанный на python неким Dmitry Shamov проект на sourceforge. Списался с автором, тот подтвердил — проект GPL, делай с ним что хочешь. Воодушевившись, я прикинул такую схему нового клиента:
      управлять фискальным регистратором и базой данных будет демон, с которым можно общаться через сокет (даже простым telnet) по простенькому API. Это для того, чтобы иметь прямой доступ из сети до самого проблемного оборудования, а также чтобы была возможность разрабатывать любые виды клиентов и привязывать их к этому API. Таким образом, я как бы не навязываю никому интерфейса своего клиента, способа регистрации продаж и прочих моих личных воззрений на процесс регистрации продаж. К тому же сразу появляется возможность работать с одним фискальником нескольких клиентов, мне это не обязательно, но возможно кому-то окажется полезным. Базу данных я выбрал mysql, с ней проще. Для тестов можно использовать сокетного клиента направляющего потоком запросы из STDIN. Все это должно быть написано на питоне, его легче дорабатывать и понимать, к тому же он много платформенный. Самого клиента я решил сделать на WEB, то есть с помощью html+javascript+php. Разумеется для этого потребуется web server (apache2 опять-же проще). Данная структура, на мой взгляд проста для доработки, ответвления в проекте и позволяет получить доступ для администрирования кассы в виде web страницы, не прибегая к rdp,vnc,ssh (хотя это будет не лишнее)

      Что получилось


      Сейчас уже фаза тестирования, правда работы много и не удается протестировать все как следует. Вообще то, что получилось, мне понравилось. Работает быстро, дописал в драйвере программирование фискальника на предмет отрезки чека, технологического обнуления, открытия денежного ящика. Демон фрк делает выгрузки транзакций, загрузку прайс-листа и дисконтных карт в формате файлов ШТРИХ-М. Визуальный подбор товара, дисконтные карты, работает в режиме регистрации как с визуальных кнопок так и с клавиатуры. ОС взял debian 6, без гнома, просто установил IceWM, сделал автозапуск X сессии, добавил минимум программ, кроме обязательных (mysql, apache, php,...) установил ssh, openvpn, x11vnc, samba, pidgin (на свой jabber-server), простенький браузер. Все это дело развернул на флешку и прям на ней тестирую, так как предполагаю жесткий диск не использовать — дорогие они сейчас, а старые не надежны. Сама система занимает 1,4ГБ, так что даже на 2ГБ флешку войдет. Обмен с бэкофисом у меня был уже до этого реализован также через сокетного клиента, который только поправил немного. Особенности взаимодействия с бэкофисом: связь через модем или выделенку через VPN. Весы подключаются по сети посредством второй сетевой карты, порт для прогрузки весов пробрасывается фаерволом на кассе. Скоро собираюсь устанавливать на торговые точки. Свой проект я размещу на sourceforge, как только все протестирую. проект будет называться IceCash. Вообще, я видел и другие драйвера на sourceforge, к другим фискальным регистраторам, но для меня достаточно было реализовать функционал ШТРИХ-М ФРК.

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

No comments: