As the network administrator for a business that shares Goodwill's logo, I was asked to put a Point of Sale system in place (henceforth referred to as POS) for the 10+ sales locations under Goodwill's umbrella.
Not being well versed in retail at all, I eventually found a closed source solution to our need. Said solution was called CounterPoint (henceforth referred to as CP). Unfortunately, when all was said and done, CP was going to cost Goodwill a great deal of money. So, management asked that we look into an alternative.
Being a proponent of open source software, I searched open source point of sale. Openbravo was the first option.
A little about Openbravo: Openbravo is actually several projects wrapped into one name. A search for Openbravo will send you to Openbravo ERP rather than Openbravo POS. Openbravo POS is what my company needed to start with; the ERP system is rather large and complex.
IMPORTANT NOTE: while the above mentioned items are indeed two separate projects, Openbravo ERP integrates with Openbravo POS! This fact was a major source of confusion for me. I still do not know whether or not that integration is also open source or not. This is an important question for people considering using Openbravo POS for some of the features that it advertises, such as offline mode and using it through a web browser. The project named Openbravo POS is an entirely Java based project which must run on your operating system; it does NOT run through a web browser. Web browser POS functionality is only possible via integration with the ERP software.
While you can obtain Openbravo ERP's community edition freely, the official version requires your partnership with a company that handles Openbravo contracting. (Openbravo the company does NOT work with you directly to install their system; this is left up to the contract companies).
All that said, I contacted Transitional Data Services (henceforth referred to as TDS) to inquire about Openbravo. What I especially appreciated about working with TDS is that they clearly gave the impression that our business relationship was a mutual relationship: they could decide that we were not suitable for them just as much as we could decide the same about them. They were very clear about continually providing service to justify continued payment.
In the end, management decided that the price of Openbravo was also too high. Enter the Java version of Openbravo- Openbravo POS.
The documentation for Openbravo POS (and Openbravo in general) seems scattered, in my opinion. There were several problems along the way in installing and testing Openbravo, which I will get into below.
Upon downloading Openbravo POS to my Windows XP machine, the issues started once I installed Openbravo. The first time starting, Openbravo tells you that the database does not exist, and would you like to create one? I of course chose to do so, but some other people testing Openbravo did not choose to do so, which caused them trouble.
The first major problem I had: how in the world do I make a sale? Openbravo POS is very, very warehouse/inventory dependent, which comes from its background in manufacturing. You cannot make a sale in Openbravo without first having items in inventory.
Before items go into inventory (through Stock->Maintenance->Products), product categories must exist (Stock->Maintenance->Categories). Once the categories are made, items can be added to the product list, NOT inventory! When products are being entered into Stock->Maintenance->Products, you are simply telling Openbravo about the types of products that might be put into inventory- you are NOT specifying an amount of products at this point!
Once an item is in the Products section of Openbravo, the amount of said products can be entered into the inventory (via Stock->Maintenance->Stock Maintenance). At this point, sales can be made.
For very small businesses, warehouses might not be of much importance; you have a single register, the database is on the register. For my company's needs, we needed to be able to keep track of inventory in several different locations. In our case, we have a central warehouse where all items are processed, and then shipped out to the sales locations. Therefore, in Openbravo, we have each location as a warehouse (Maintenance->Point Of Sale->Warehouses).
Here is where the big problems started happening for me. Obviously, there is not much point in having multiple warehouses and such if we could not connect multiple Openbravo registers to the same database. Regardless of which operating system Openbravo POS is installed to, it automatically sets up an Apache Derby database, which works just fine if you are not interested in connecting other registers to the same database. We needed a concurrent user database. Enter PostgreSQL. (MySQL and others are also options).
We already had an old computer with FreeBSD installed on it in the storage closet; within the space of an hour PostgreSQL was up and running. Unfortunately, there was a little configuration to do- Openbravo expects an already existing database in whatever system it connects to (be it MySQL, PostgreSQL, etc). I ended up creating a database called openbravo and a role (otherwise known as a user for those people not familiar with PostgreSQL) called openbravo.
All that done, a Java PostgreSQL driver had to be downloaded for the connection to work. All that done, I successfully connected my Win XP Openbravo POS setup to the database and created a working inventory!
And then I was unable to make sales. At all. The error message given to explain the problem was very cryptic, but there was one piece that eventually led me to the solution: locations=0. Turns out that each warehouse in Openbravo POS has a unique ID. When a register tries to make a sale, the register needs to be configured with the ID of a warehouse. For whatever reason, my register was set with a warehouse ID of 0, which basically meant that the register was not connected to ANY warehouses. So, when a sale was made, there was no way for Openbravo to know WHERE the sale was being made from- hence the error.
This error corrected by first finding the ID of the warehouse with some SQL (SELECT * FROM locations;) and applying that ID to my WinXP register in Openbravo (Maintenance->Resources->[COMPUTERNAME/properties]), after which I was able to make sales again.
Side note: after making a couple joyful sales, I decided to remove some items from the inventory as they were just test items. Unfortunately, Openbravo keeps track of sales records, and will not allow items that are in inventory that have been sold to be deleted. Even more unfortunately, Openbravo lets you know this with more cryptic SQL lingo. I still have not figured this one out- it might be able to be done if the cash is closed, but I am not sure. Either way, this issue was certainly not a deal breaker given everything else.
Everything seemed to be working out great: we have working POS software, inventory can finally be kept track of, and the POS software even works on Linux! Life is good!
So, we order ~$1400 USD worth of POS related hardware. Specifically: a $130 cash drawer, a $290 receipt printer, 3 $95 USB barcode scanners, a $60 label printer, and two Planar touchscreens for $270 each, plus some other equipment. The goal: use the Windows 7 system in the main warehouse to add everything to inventory with a USB scanner, and print our own barcodes using Zint for those items that don't already have a barcode on them.
Side note on hardware: the receipt printer MUST have a 24 volt connection to allow the cash drawer to open through the software. The cash drawer does NOT connect directly to the computer, and I had a great deal of trouble finding a receipt printer and cash drawer that were clearly labeled as having these features.
The items I selected:
Receipt Printer: Epson TM-T88V
Cash Drawer: Wasp 5E 415 Cash Drawer Black
Touchscreen: PLANAR PX2230MW
USB Scanner: Metrologic MK5145-31A38 USB Barcode Scanner
The Win 7 warehouse computer was 64bit, which did cause a little consternation (had to add Java to the system PATH variable), but other than that, the setup went without a hitch.
The rest of the hardware is to be used at the sale location as two systems: a backroom system for managing inventory, and the register at the front for making sales. Here too, there were some major problems.
The receipt printer was not so bad to use, once I figured out the cryptic Openbravo documentation for Linux systems. Basically, the receipt printer must be configured in Openbravo as epson, file, and /dev/usb/lp0 (for Linux systems). Also, /etc/rc.local must have command chmod a+wr /dev/usb/lp0 in order to allow openbravo to access the receipt printer when run as a regular user. (Reboot required to apply, or just run the command from terminal as root).
That all taken care of, the receipt printer and cash drawer worked beautifully! The cash register even has a satisfying bing! when opened. The scanner functions as a standard keyboard, which means compatibility with Linux/Mac/Windows or whatever other system you might use that accepts standard keyboard input.
The touchscreen, on the other hand, was an absolute nightmare. Originally, I purchased the Planar screen on the basis of a single Amazon review which stated that Linux accepted the touchscreen input just as if it were a mouse. I took this to mean that the touchscreen literally used a mouse driver for its input, and would thus function on any given Linux system. I was very, very wrong. I should have read the writing on the wall when I noticed that the touchscreen was only supported by Windows 7. (Windows XP will accept this touchscreen, but only with single touch).
Side note: for those wondering why in the world anyone would want to use Linux for a job like this, the explanation is rather simple. For anyone doing any work requiring near 100% reliability, Unix based systems have no equal. Windows has a proven track record of failure. Even setting this aside, there is the issue of cost: here at Goodwill, a Linux image can be freely installed to a hard drive in about 15 minutes, with no driver issues or legality concerns. A number of computers do get donated to Goodwill, many with legal copies of Windows already installed, but the condition of Windows in said systems is usually what I would deem as scary at best. Therefore, given the cost difference between the two choices, I would rather invest the time necessary to educate myself to use Linux rather than use that time/money to purchase Windows and then have to put up with the associated headaches.
So, the touchscreen did not work with the Mint Linux image we already had successfully tested with Openbravo POS. After doing some research on touchscreens and Linux compatibility, I realized that I had stepped into a huge mess. Here is the deal: the newer Linux kernels support this touchscreen automatically, no problem, no headache. The older ones (Ubuntu 9.10, for example) do not. Now, as the types of computers that Goodwill receives in donations tend to be rather old, and the newer Linux kernels tend to come with newer releases, I was between a rock and a hard place. Newer kernels come with newer distros, which tend to be rather bloated and incompatible with older/slower hardware.
Linux side note: I have never, ever been able to take a Ubuntu based Linux distro more than two years old, install it to a computer, and then update the computer to the latest version of the OS. Without question, it will fail. I am having nightmares about Xorg-server as I type this. Ubuntu Linux is stable- but good luck updating it if you neglect to update it for an extended period of time. Windows Updates beats Ubuntu in this regard, hands down.
I could not use most newer Linux distros on these old computers, and the older systems do not have the required kernel! Enter the solution: Crunchbang Linux.
Crunchbang Linux is now based directly on Debian, rather than Ubuntu, from my understanding. As such, it is rather stable. As I installed it, apt-get was showing accesses to locations with Debian Squeeze in the name, which was a very good sign to me (Debian Squeeze is lightweight and stable).
Unfortunately, Crunchbang Linux had the same exact problem as the other older distros: the kernel did not have drivers for the touchscreen! So, I obtained the Backport version of Crunchbang (henceforth referred to as #!) and installed it. Wonder of wonders, the touchscreen worked!
Following my feeling of elation from the success with the touchscreen was the feeling of dread: Openbravo would not install. Turns out that due to some licensing bickering, Java is not distributed with Ubuntu based OSes any more. Instead, OpenJDK is installed when a request to Synaptic for Java is put in. Unfortunately, OpenJDK as of Sept 2012 absolutely does not work with Openbravo. After I installed the official release of Java, everything has gone smoothly.
We have a functioning register which has a working touchscreen, cash drawer, receipt printer, and scanner. The register can connect over our VPN to the FreeBSD database server (also a recycled computer). If the register computer breaks down, a replacement will be ready to go, and a new replacement computer can be imaged in 15 minutes.
Inventory is being put in place now. We are going to attempt to go live with this setup at one retail location within the next month.
Overall, I would highly recommend Openbravo POS to small/medium businesses if the following is true:
1. You have a little SQL knowledge
2. You have IT experience
3. You have plenty of time to invest in the project
Open Source as Point of Sale (Openbravo POS)
Keep Up with TechRepublic