Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sync Setup Notes and Example 

Some Hints from:

...

Search for "pos " there

  • How to run the POS terminal at the same time as an instance of OFBiz on the same machine? It's a real pain shutting down POS and starting OFBiz and vice-versa to make changes!
    • You must launch 2 instances with different port numbers. You need to turn off the BeanShell ports in the ofbiz-containers.xml file. You are able to overide this port on the command line, in which case you will be able to continue to run the BeanShell access on different ports.
    • There is even a better way to do that. Running it in 2 Java instances is fine but just not as efficient because (depending on your JVM) Java won't be able to share resources that are sharable, like jar file in memory and such. You can run both in the same instance. The easiest way to do this is to add the catalina section of ofbiz-containers.xml to the pos-container.xml

Tried and Tested hardware:

...

Some comments pulled from the mailing list and added since

I found STAR (serial) receipt printers to be the best; a cash drawer which plugs into the back of the printer works great. As for scanners, use a keyboard wedge scanner and a keyboard or USB MSR. The POS devices we used had MSR built in, not exactly sure how it was configured, but in the end it send the signal through the keyboard device. A term pole display will need to be implemented, as this is not currently supported. However, it shouldn't be very difficult which the base which is there today. Touch screen is configured on the OS level. ELO based devices work on Linux.

The multiple drawers can be thru the serial. most are thru the parallel port. Gets tricky if you have a parallel device as well. Touch screens can use the keyboard wedge as well.

The model we used for testing was a DigiCom iPOS435 with a side-mounted MSR. Our particular units had Celeron 850MHz processors and 512MB of RAM. Performance was adequate, but I don't think I could call it "fast". (OS - Gentoo, Fedora; DB - postgres). You may want to compare the ipos430 spec to whatever you're looking at currently. Aside from the speed, it is a very nice unit. For printers we used a basic Star Micronics thermal (model TSP600), which worked out just fine during testing, though I can't comment on long-term reliability.

Beware with wedge scanners not self-powered. I had a problem with a Dell Dimension 4600 (too weak keyboard alimentation I think) and a Zebex 3080. No problem with the USB model.

I've used Metrologic scanners (tabletop & handheld) almost exclusively for the past 5 years with a variety of Dell's and custom built machines. I've never had a problem with the keyboard wedge versions. They all had their own power source.

Deployed OK on FC3-XFC4 with a Star TSP600 printer using serial, MetroLogic keyboard wedge scanner and MultiQ 156 serial touch screen using mutouch drivers. Cash draw linked into the printer and operates fine. No MSR requirements so not tested.

How to use a MSR for CC payments.
Program your MSR to work as a keyboard, not a human interface device (HID) if you can. Change the device from NullMSR (I think) to GenericMSR in framework/base/pos-configuration.xml. Use the device in specialpurpose/pos/config/jpos.xml.
The payment services can be set under Catalog -> Store payments

Mag Stripe Readers issue on Windows XP.
Using both an ID Tech USB MSR using ID Tech's JavaPOS driver and a Magtek USB device with the GenericMSR driver a problem appears on Windows XP. While it was working properly on other platforms, on WinXP it seems the data isn't  getting captured and waiting when paymentEvents.payCredit is run.  When installed  on Windows they show up as HID's and Keyboard's in the Windows Device Manager. The problem was solved by increasing MaxWaitKeyboard in  jpos.properties.  The complete string from the MSR wasn't received in a single event so the logic wasn't recognizing it as an MSR swipe.

How to setup the Epson JavaPOS ?

To find the last available Epson JavaPOS ADK use www.epson-pos.com

to install JavaPOS 1.9.x

Here I want to explain a little about how to setup the Epson JavaPOS ADK for TM printer:
On WindowsXP, and I believe the process on Linux is similiar

  1. Install the JavaSE which version you like. I use jdk1.5.0_09;
  2. Then installed the "Epson JavaPOS ADK 1.82" (or 1.81, 1.80, any version suppor jpos18-control; and copy the "epsonJposService182.jar, epsonJposServiceCommon.jar" to /ofbiz/applications/pos/lib;
  3. Now modified the jpos.xml file, under /ofbiz/applications/pos/config; I post a sample here:
    It uses a TM-U220D on COM1 port, please remember to keep the jpos182 or 180 same as the file you using under ./pos/lib;
        <JposEntry logicalName="TM-U220D">
            <creation factoryClass="jp.co.epson.jpos182.util.EpsonJposServiceInstanceFactory"
                serviceClass="jp.co.epson.jpos182.ptr.U220D"/>
            <vendor name="SEIKO EPSON" url="http://www.epson.co.jp"/>
            <jpos category="POSPrinter" version="1.8"/>
        <product description="EPSON TM-U220D Printer Device Service"
            name="EPSON Services for JavaPOS(TM) Standard" url="http://www.epson.co.jp"/>
            <!-Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )->
            <prop name="dataBits" type="String" value="8"/>
            <prop name="Parity" type="String" value="0"/>
            <prop name="portName" type="String" value="COM1"/>
            <prop name="U375Compatible" type="String" value="0"/>
            <prop name="deviceBus" type="String" value="RS232"/>
            <prop name="DataLen" type="String" value="1"/>
            <prop name="UsedJAI" type="String" value="0"/>
            <prop name="TimeoutTime" type="String" value="5000"/>
            <prop name="baudRate" type="String" value="9600"/>
            <prop name="TwoColor" type="String" value="0"/>
            <prop name="PortType" type="String" value="0"/>
            <prop name="UsedNVRAM" type="String" value="0"/>
            <prop name="StopBit" type="String" value="1"/>
            <prop name="RetryTime" type="String" value="100"/>
            <prop name="ErrorOption" type="String" value="1"/>
            <prop name="ReverseEject" type="String" value="0"/>
            <prop name="SerialPowerWaitTime" type="String" value="500"/>
            <prop name="InputWait" type="String" value="1"/>
            <prop name="AnalysisLevel" type="String" value="1"/>
            <prop name="BufferSize" type="String" value="2"/>
            <prop name="DeviceDesc" type="String" value="EPSON TM-U220D Printer"/>
            <prop name="OutputLength" type="String" value="10"/>
            <prop name="parity" type="String" value="None"/>
            <prop name="stopBits" type="String" value="1"/>
            <prop name="PortName" type="String" value="COM1"/> <!- Windows ->
            <!-prop name="PortName" type="String" value="/dev/ttyS0"/> <!- Linux -->
            <prop name="ReceiveTimeout" type="String" value="10"/>
            <prop name="TwoByteCharacter" type="String" value="0"/>
            <prop name="Page254UseCode" type="String" value="0"/>
            <prop name="PhysicalDevice" type="String" value="TM-U220D"/>
            <prop name="PaperSize" type="String" value="80"/>
            <prop name="BaudRate" type="String" value="6"/>
            <prop name="Page255UseCode" type="String" value="0"/>
            <prop name="ServiceVersion" type="String" value="1.80"/>
            <prop name="flowControl" type="String" value="None"/>
            <prop name="FlowControl" type="String" value="1"/>
        </JposEntry>
  4. Install Java CommAPI 2.0, copy the comm.jar to j2se or j2re 's /lib/ext folder.
    and copy the javax.comm.properties to j2se or j2re's /lib folder;
    and copy the win32com.dll to /windows/system32.
  5. Modifiy the pos-containers.xml, which under /framework/base/config:
    to make the <property name="Receipt" value="TM-U220D" /> value same as you defined in jpos.xml file.

Now launch with java -jar ofbiz.jar -pos, and enjoy it!

Successful TCP / Ethernet Epson printer implementation

...

...

Epson JavaPOS ADK 1.82 support these product

DM-D110 DM-D210 DM-D500 DM-Z460/DM-Z461

TM-H5000II TM-H5200 TM-H6000 TM-H6000II TM-H6000II Photo ID TM-H6000II Validation
TM-H6000II with Scanner TM-H6000III TM-J2000/TM-J2100

TM-J7000/TM-J7100 TM-J7500/TM-J7600

TM-L90 TM-P60 TM-T88II TM-T88III TM-T88IIR TM-T90
TM-U210A TM-U220 w/Black Mark Sensor TM-U220A TM-U220B TM-U220D TM-U230 TM-U950

Advice

Never load/mix 2 instances of ADK (eg 1.8x and 1.92) on the same machine

Areas for thought/investigation

For UK receipts the VAT needs to be shown as the amount made up in the gross price. The system can handle multiple VAT codes/values i.e. books have 0% VAT and books with tapes have 13% and pretty much everything else has 17.5%. The till functions correctly in applying the different amounts when the data is configured but need to look into the receipt reporting as we need a sub total listing the amounts for each VAT code separately. Plus if we store gross amounts then the VAT should not be added, just show how much it is!
How to run the POS terminal at the same time as an instance of OFBiz on the same machine? It's a real pain shutting down POS and starting OFBiz and vice-versa to make changes!

You must launch 2 instances with different port numbers. I did not did it yet but I think it's the only way. Jacques Le Roux 18/5/5

Success, just needed to turn off the BeanShell ports in the ofbiz-containers.xml file. I haven't tried but you might be able to overide this port on the command line, in which case you should be able to continue to run the BeanShell access on different ports. Ray Barlow 25/05/05

There is even a better way to do that. Running it in 2 Java instances is fine but just not as efficient because (depending on your JVM) Java won't be able to share resources that are sharable, like jar file in memory and such. You can run both in the same instance. The easiest way to do this is to add the catalina section of ofbiz-containers.xml to the pos-container.xml
Jacques Le Roux 28/8/5, thanks to David and Andy recommendations.

...

Individual stores require control of "their" product database in terms of store X can add and sell a product that store Y doesn't. Also store X should be able to add and sell a product that store Y might take on later, so the product data should also be transferable if desired. Again individual stores require control of pricing for a product although it will be standard for 95% of products. Ditto promotions!

...

Can you park customer transactions for later recall? If yes and using a central store database it should allow you to pick up again from any till (wink) Just seen on the screen the save/restore buttons are ghosted so there is positive intent but time has not permitted completion yet. Note : This is now in the POS, I (Jacques Le Roux) add it, Ray (Barlow) sponsored it.Unfortunately the keyword "POS" is often found in other words and this wiki search engine does not search by whole word so it is quite possible to get results about postgresSQL and proposed proposals etc rather than achieve the positive result for a "POS" keyword search. Many people postulate that only the apostles of higher beings can have a positive influence on search engines, but we all like to think we can achieve the impossible and challenge such statements as preposterous!

...

Ray Barlow 13/07/05 Attached is the document we have written for users of the POS system (Till Manual_V2.0). It may be a little bit specific to us in areas and it does have a little customisation i.e. we have added two functional buttons that we thought useful, you can see them on the screenshots.
1) DEL : If you are typing a number on screen and you make a typo this saves pulling the keyboard out to correct it.
2) - (minus) : We use this for quantity corrections, price mods etc.