Openbravo Web POS, moving towards modularity!
In this post we’ll explain modularity concepts in Openbravo Web POS and how to make Openbravo for Retail more flexible and adaptable. In particular, what items can be modularized in Openbravo Web POS and how to properly do it.
Since Openbravo for Retail was launched we’ve been working very hard to include more features in our Web POS product (Paid receipts, Layaways, Discounts and Promotions, Customer Management, etc…) making it more fast, stable and scalable. However we realized that our product was not completely ready to be customized in a sustainable way. Because of this the Openbravo team has been working to improve it, specially in last versions of Openbravo Web POS.
How should Openbravo Web POS be customized?
Some time ago, the concept of modularity appeared with Openbravo ERP. This concept has been maturing since then and now is a powerful tool to customize Openbravo ERP. Having this great experience using modularity we’ve decided to continue with this philosophy to extend it to Openbravo Web POS. Work with modularity brings users the possibility to customize Openbravo Web POS to adapt it to their needs in a sustainable way without modifying the core and providing a stable and upgradable system.
Can core components be overwritten?
Openbravo Web POS uses Enyo to define components. This approach allow modules to overwrite the original components to customize them. It initially looks like a good stuff but it isn’t.
Original components are changing continuously due to new features, bug fixes or performance improvements. If a module overwrite a component, an instance with this module installed will never realize that something changes on it and it can imply:
- New features can be unvisibles
- Errors can appear, because Openbravo Web POS expects that something exists in this component and it doesn’t.
As a conclusion, overwrite components is not a good idea. Instead of it, hooks, extensible models and our API should be used. Check out the Retail developer’s guide for more information.
The exception to this rule are tickets templates because the way to customize them is overwriting the templates through a module. To be updated, just check periodically the new features and include them in the templates if they are interesting for your ticket design.
Which parts of Openbravo Web POS can now be customized?
Many areas of Openbravo Web POS are ready to be extended and we are working to increase these capabilities. Here there is a list of current items that can be customized:
- Customize tickets
- Create a custom keyboard to show coins and notes
- Load customized properties into Terminal Model using Properties loader
- Add new items to the menu
- Implement new discount and promotions types
- Add modal windows to the UI and show them.
- Show confirmation dialogs
- Add new properties to line properties modal window and save them into the order.
- Modify some flows of Openbravo Web POS using client side hooks [RMP26] (Hooks documentation) (A post about it will be published)
- Extend Models with new properties [RMP27] (Extensible models documentation) (A post about it will be published)
- Following items are possible thanks to extensible models.
- Add new properties to Receipt properties popup, saving them into the order and loading them when a receipt is loaded [RMP27]
- Add fields to customers window and save them in the backend [RMP28]
- Customize edit line tab. (RMP28).
- This UI component has been redesigned and now is very easy to extend. (A post about it will be published)
If you want to customize something and you don’t know how to do it, please contact us through our support services.
We’ve planned to publish a series of blog post about modularity in Openbravo Web POS to help you to customize and adapt it. Stay tuned!