- PVSM.RU - https://www.pvsm.ru -

Предпосвящение десятилетию Openbravo POS

Вступление

В январе 2015 года исполняется 10 лет приложению Openbravo POS [1]. За эти годы Openbravo POS(включая форки) стало лидером в мире СПО для автоматизации розничной торговли (POS, Point of Sale – торговая точка или более конкретно, рабочее место кассира). Данная статья предварительный итог того, что удалось и не удалось реализовать в проекте Openbravo POS за прошедшие 10 лет.

История имени

Предпосвящение десятилетию Openbravo POS - 1

Отцом основателем, бессменным руководителем и практически единоличным коммитером проекта был Эдриан Ромеро [2] из Испании. У проекта изначальное название с 2005 по 2007 год было Tina POS, но в августе 2007 года возник конфликт с этой торговой маркой и пришлось переименовать проект в Libre POS. В отличии от первого, второе название не продержалось и пол года, так как Эдриан перешёл работать в Openbravo [3] и первая часть названия была «забрендирована», оставив от старого только «POS» на конце, что подчёркивало с этого момента принадлежность проекта к экосистеме данной ERP-системы в качестве дополнения в сфере розничной торговли. Также в феврале 2008 года вышла и первая версия Openbravo POS сразу за номером 2.00.

В это-же время и я, ища ERP-систему работающую под Linux, узнал о существовании проекта Openbravo. А приложение Openbravo POS стало отправной точкой в освоении исходного кода данного проекта. Начал я с перевода интерфейса на русский язык. Но в итоге не удержался, и в ходе локализации приложения для рынка стран бывшего СССР, уже к имеющемуся чековому принтеру, дисплею покупателя, сканеру, весам и терминалу сбора данных, добавил поддержку кассового аппарата, принтера этикеток, фискального регистратора и весов с печатью этикеток. За что через год, весной 2009 года, в Барселоне, получил Openbravo Community Awards [4], уже не как лучший локализатор, а как лучший в 2008 году разработчик Openbravo POS.

Предпосвящение десятилетию Openbravo POS - 2

Энтерпрайз за прилавком

Для меня основным в Openbravo POS стало то, что в небольшом (на первый взгляд) десктоп приложении, скрывалась мощь полноценного энтерпрайз решения с возможностью подстройки под любые задачи автоматизации малого бизнеса. Это достигалось за счёт перечисленных ниже сильных сторон, которые были заложены в Openbravo POS практически изначально.

Предпосвящение десятилетию Openbravo POS - 3

  • Первое, это кросплатформенность. Здесь в 2008 году всё было очень просто, где запускалась Java SE 1.6, там приложение и работало.
  • Подключение через JDBC практически к любой СУБД. Это могут быть, как встроенные системы HSQLDB, Apache Derby или реализованный уже в рамках моего проекта [5] Firebird, так и полноценные серверные MySQL, PostgreSQL или Oracle.
  • Удобный панельный интерфейс с настройкой через ресурсы хранимые в базе данных. А так как, ещё задолго до появления сенсорных экранов на мобильных устройствах, для POS сенсорное управление было де-факто стандартом, интерфейс Openbravo POS сразу был разработан для использования на тачскрин мониторах.
  • Наличие возможности, всё в тех-же ресурсах, реализовывать шаблоны для печати на чековом принтере и скрипты для выполнения, без необходимости менять код самого приложения.
  • Для построения отчётов в приложении изначально была интегрирована очень мощная библиотека JasperReports [6]. Она по заложенному функционалу превосходила даже само вызывающее её приложение.
  • Но наибольшей ценностью для меня в этом проекте стал открытый исходный код, который очень хорошо иллюстрировал возможности работы приложения с периферийным оборудованием. Достигалось это не только за счёт использования библиотек RXTX [7] и JavaPOS [8], но и за счёт грамотного симбиоза бизнес-логики приложения и возможностей конкретного оборудования. В Openbravo POS всё можно сделать и без подключения торговой периферии, но тогда это будет очередная система учёта, которых даже в сфере OpenSource немало. И только после подключения чекового принтера, дисплея покупателя, сканера и весов, становится видна мощь скрытая в этой системе. Только тогда удаётся не просто вести учёт, а делать это с максимальной скоростью, а это для программного обеспечения рабочего места кассира основная задача.

Лебединая песня

В то-же время 2009 год стал и последним годом развития Openbravo POS, вышедшая в декабре версия 2.30 была последней, где были внесены большие изменения, в минорных версиях 2.30.1 и 2.30.2 была исправлена только пара багов и переделана логика расчёта налогов (появилась возможность задавать налоги на период времени). В версии Openbravo POS 2.30 было заложено несколько функций, которые и сейчас отличают её от других POS, как проприетарных, так и свободных.

Учёт по атрибутам

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

Предпосвящение десятилетию Openbravo POS - 4

Предпосвящение десятилетию Openbravo POS - 5
Синхронизация Pentaho Data Integration

Для обмена данными с внешними системами было предложено использовать ETL решение от Pentaho [9], это позволило интегрировать программное обеспечение торговой точки в систему учёта уже внедрённую на предприятии. Для примера в релиз вошли схемы для загрузки в Openbravo POS справочников и выгрузки продаж через REST веб-интерфейс в Openbravo ERP.

Предпосвящение десятилетию Openbravo POS - 6
Модуль для КПК

Уже тогда было понятно, что развивать только десктоп версию приложения невозможно. Внедряя POS приходится учитывать потребность заказчика в использовании мобильных устройств. Для решения этой задачи было предложено использовать Java сервлет подключенный вместе с десктоп приложением к единой базе данных. Для иллюстрации такого подхода в релиз Openbravo POS 2.30 входило основанное на фреймворке Struts 1 [10] веб-приложение позволявшее официанту принимать заказы с КПК.

Предпосвящение десятилетию Openbravo POS - 7

К сожалению в дальнейшем эти изменения в рамках Openbravo POS не получили развития и с 2010 года проект был заморожен, а в дальнейшем развитие шло только в рамках форков основанных на исходном коде Openbravo POS. Это было вызвано тем, что компания Openbravo отказалось от идеи использовать десктоп приложение в качестве клиента для ERP и решила делать на базе платформы Openbravo 3 [11] онлайн веб-клиент, назвав его Openbravo Web POS [12]. При этом разработчикам хоть и предоставляется исходный код Openbravo Web POS, но его распространение стало возможным только при подписке на профессиональную версию Openbravo 3. Также, кроме приложения для управления оборудованием [13], разработку которого по прежнему ведёт Эдриан Ромеро, в данном проекте ничего о десктоп версии Openbravo POS не напоминает.

Время форков

Далее, с 2010 года, начал действовать механизм заложенный открытым кодом и лицензией GNU GPL, то есть начали появляться приложения основанные на исходном коде Openbravo POS. Ниже перечислены наиболее популярные из них.

  • uniCenta POS [14]. На сегодня это самый популярный форк, в нём не только реализуются всё время что-то новое, а его авторы стараются ещё собрать интересное из других ответвлений Openbravo POS и внедрить в код uniCenta POS. Список изменений по сравнению с оригинальной версией огромен, но из недостатков могу отметить, что до сих в него не были добавлены последние патчи из Openbravo POS 2.30.1 и 2.30.2.
  • POSper [15]. Не столь динамично развивающееся, но интересное с точки зрения разработки ответвление от Openbravo POS. Вместо Ant в нём для сборки используется Maven, что обеспечивает возможность постоянного обновления библиотек и отслеживание зависимостей.
  • SmartPOS [16] и Wanda POS [17]. Сами по себе это два разных проекта, Wanda POS вышла в октябре 2014 и была уже основана на исходном коде uniCenta POS. Но их объединяет одно, они являются POS для iDempiere [18]. iDempiere является следующим поколением ADempiere ERP [19]. Она также как и Openbravo использует веб-интерфейс, но лидер проекта Red1 [20] решил, что для неё всё-таки необходим десктоп клиент и выбрал в его качестве Openbravo POS. При этом, в свою очередь ADempiere и Openbravo являются форками Compiere [21], возникшими по причине нараставшей закрытости этой ERP. И теперь история уже на примере Openbravo повторяется, оставшейся открытой частью проекта Openbravo пользуются участники из параллельно развивающегося сообщества ADempiere.
  • Русская версия Openbravo POS [22]. Это уже мой проект, развивал я его с 2008 по 2012 год. Главное на что он был нацелен, это поддержка торгового оборудования используемого на территории бывшего СССР, в основном это заключалось в реализации работы с кириллицей, о чем я уже упоминал [23]. Так как дальнейшее развитие в этом русле я для себя не видел, то принял решение развивать код в рамках ещё одного, но уже своего форка NORD POS [24]. Главная его цель, это быть платформой для равёртывания компактных Java сервлет для мобильного веб [25], но об этом подробнее расскажу уже в другой статье.

Главное, что объединяет все ветви отпочковавшиеся от родительского проекта, это единая структура базы данных [26]. Она не очень сложная, но благодаря неизменному ядру позволяет сохранять совместимость между любым из ответвлений, что иллюстрирует проект nordpos.mobi [27]. В нём я продолжил развивать идею веб-модуля для КПК, а получившиеся в итоге Java-сервлеты можно подключать, как к оригинальной базе данных Openbravo POS, так и к базам данных форков построенных на ней.

Заключение

С 2008 года я являюсь один из самых активных участников этого проекта. Для меня эти 7 лет уж точно не прошли даром, я получил новые знания, новые знакомства и новые идеи. Разработкой СПО можно занимать не ради больших денег, а просто ради мысли, что твоя работа в будущем кому-то будет нужна, и если ты в итоге охладеешь к своему детищу, то всегда найдётся тот, кто её подхватит и будет развивать дальше, не забросив «на самом интересном месте».

Предпосвящение десятилетию Openbravo POS - 8

Пример внедрения [28] от Squier [29]

Автор: Svininykh

Источник [30]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/77145

Ссылки в тексте:

[1] Openbravo POS: https://sourceforge.net/projects/openbravopos/

[2] Эдриан Ромеро: http://adrianrcblog.blogspot.com/

[3] Openbravo: http://www.openbravo.com/

[4] Openbravo Community Awards: http://planet.openbravo.com/blog/openbravo-community-awards-winners/

[5] моего проекта: https://code.google.com/p/openbravoposru/

[6] JasperReports: http://community.jaspersoft.com/project/jasperreports-library

[7] RXTX: http://rxtx.qbang.org

[8] JavaPOS: http://www.javapos.com/

[9] ETL решение от Pentaho: http://community.pentaho.com/projects/data-integration/

[10] Struts 1: http://struts.apache.org/

[11] Openbravo 3: http://www.openbravo.com/products/

[12] Openbravo Web POS: http://www.openbravo.com/retailers/product-features/web-point-of-sale/

[13] приложения для управления оборудованием: http://forge.openbravo.com/plugins/mwiki/index.php/Openbravoretail/Hardware_and_Peripherals_Guide

[14] uniCenta POS: http://sourceforge.net/projects/unicentaopos/

[15] POSper: http://sourceforge.net/projects/posper/

[16] SmartPOS: http://sourceforge.net/projects/smart-pos/

[17] Wanda POS: http://sourceforge.net/projects/wandaposdapos/

[18] iDempiere: http://www.idempiere.org/

[19] ADempiere ERP: http://www.adempiere.com/

[20] Red1: http://www.red1.org/

[21] Compiere: http://www.compiere.com/

[22] Русская версия Openbravo POS: http://code.google.com/p/openbravoposru/

[23] упоминал: http://habrahabr.ru/post/235105/

[24] NORD POS: http://sourceforge.net/projects/nordpos/

[25] компактных Java сервлет для мобильного веб: http://habrahabr.ru/post/156781/

[26] структура базы данных: http://wiki.openbravo.com/wiki/POS/2.30/Database_Model

[27] nordpos.mobi: http://nordpos.mobi

[28] Пример внедрения: http://habrahabr.ru/post/126377/

[29] Squier: http://habrahabr.ru/users/squier/

[30] Источник: http://habrahabr.ru/post/245765/