So I happened across a tweet via Fabien Pinckaers ( #fpopenerp ) the other day, dropping a hint about a new (and of course modular & very extensible) web-based touchscreen POS system being developed by the core team. The only glimpse I had of this web client was via the two urls he mentioned, pointing to a wonderful, snazzy touchscreen GUI. It looked like this:


So, needless to say, I was enticed. There are numerous ways to interface OpenERP-server with other touchscreen POS systems, such as Adiempere's POS, OpenBravo, and others. Data would be moved around via a TerminaTOOR/Kettle kind of bulk data synchronization scheme. The pos.module, out of the box, has all the functionality - but even in the snazzy new web interface lacked the true interaction design of a touchscreen POS system - large buttons, immediate information and functionality. an on-screen 10-key numerical pad, etc. I will give the alternative, KDE-based desktop client Koo some creds for making a good crack at this a while back, and really kind of squeezing the most possible out of the de-facto inline tree view interface.
But really, this is one of OpenERP's greatest weakpoints - the Point of Sale system - until now! It's about time that OpenERP's core team start taking on a BHAG like this. I'm sure it has quite a ways to go, but I would love to help make this happen - and as soon as possible, as we have clients who need this now!
Finding the Project on Launchpad
I knew the project had to be somewhere on launchpad - but this turned out to be a tricky venture. In retrospect, I probably could have taken a better approach and just meticulously plowed through the openerp codebase on launchpad... but I didn't even know who was developing it at the time - had only just seen glimpses!
But just tonight, I had a lucky break and found the OpenERP eventbrite schedule for the Community & Partners Days (wish I could have been there!) and there discovered a pad from a disucssion on the new web toucschreen POS - http://pad.openerp.com/touchscreen-pos
Right at the beginning of the etherpad document, I see the magical branch name:
lp:~openerp-dev/openobject-client-web/trunk-proto61-pos
So, if you are interested in branching and playing around, just install it like you would the web client - and experience the magic! Also, that etherpad will come into play further on in this post, so keep it open!
OpenERP web pos using.... PHP & JSON?!
Yes - gasp - thats right! From what I can tell it seems that this new web addon is using PHP to talk to openerp-server via JSON-RPC . This is an unexpected, but very keen move by the development team. They are using a jquery project - Mottie Keyboard for the on-screen keyboard, as well as jquery 1.4.4 and jquery-ui 1.8.10 on the backend. That little toolset right there is going to prove for loads of fun in building a really engaging user experience. It even seems that they are using a project called Dhtmlx Grid for a highly enabled in-line grid editing experience.
Then we have one of the workhorses behind it all, main.py (the controller for this, the openerp-web addon module called point_of_sale) that is handling the json-rpc requests and iterfacing with openerp-server.
Lastly, another file of note is the static/openerp/js/pos.js file that is handling a lot of the form validation, inline editing and many many of the other UI and direct functionality elements of this new system. The work that went into this is quite impressive, and will likely go a long way in helping OpenERP to offer not only an amazing POS system, but quite possibly one of the best open source POS systems available (considering the powerful backend).
Current Status
The current scope, architecture and considerations for the future are well documented in the etherpad document mentioned above.
Merging - the JSON requests are merging the data - thus the system is somewhat 'offline' and is synched up via a 'merge' button. Though this may seem limiting, it can keep things simpler, and free kiosks from the constraints of realtime network interfacing. Currently the only object you can create from the screen is a product, however new ones could eventually be on the way - partner, contact, address, member, invoice, pick list, claim, lead, etc.
Mentioned is that the server may be able to push data to the entire group of POS client kiosks in an entire network - pretty exciting!
Modularity - it will be designed to have its own nested addons - so not only is it a web client addon itself, it will be maintained as a core client project, and there will be an extensible architecture in which to layer in new functionality. food_coop here we come!
Serial Devices - An important aspect of any good POS system is its ability to readily interface with devices using serial ports - wedge scanners, scales, receipt printers, card scanners, the whole kit and kaboodle! In the notes, they mention building a well-documented framework for making http-serial requests in the system - something that Flywheel itself has discussed proposing before.
Something else to note with serial devices, and that is mentioned here, is whether the serial data is being sent in a legal manner. Though you can just send the raw numbers and details, often it is required that there be some kind of authentication to ensure security. Some departments of weights and measures, county auditors, etc. are interested in ensuring this level of security and integrity... its good to know that the OpenERP community will put forth the effort for strong standards!
There are numerous other important notes from the etherpad document and that can be gleaned from the code, but the overall idea is that things are moving very rapidly for OpenERP's web client presence, and this web based point of sale system will make a great addition to the arsenal!
In Conclusion
The POS market is a tough one. The proprietary vendors often have very superior and feature-laden software. It's one of those markets where even the big open-source afficiandoes sometimes back off. But it also costs FAR more to implement and maintain these systems than their open source counterparts. In fact, it wasn't long ago that the ERP market entirely was considered impenetrable by open source projects - and now look how that turned out!
A tip: take mental notes and don't be afraid to ask questions while seeing POS systems in action. I have spent a significant amount of time over a fine draft discussing with bartenders the the finer points of what kind of POS system form and functionality can make or break a busy night at a popular brewpub (and when you bring food into the mix - oy!). Though, I feel that this POS is really going to be making a splash in large retail because the value of OpenERP is generally greater for larger businesses - currently (I have some ideas for simplifying and streamlining for smaller businesses - but thats for another post).
There are a wide variety of applications for point of sale systems - and the varied needs between a clothing retail store, a theatre box office, and a fine dining restaraunt are great. But with a little of ingenuity (which seems to already be in abundance) and a lot of energy, this will become something great.