I'm not sure how I can help you.
I'm a .net programmer mid-way through the development of a pos system. We've finished the database design and see the following issues as critical design issues prior to starting to code.
Installation Simplicity : This is our third pos system and having been burned by beautiful features which are tough to install and customize to each user site, we are approaching this product with quick/unattended install as a major goal.
Upgrade Simplicity : Again, avoiding nightmare's from our past, my company is looking to write a system which can upgrade itself over the internet with no human intervention. We looked at a .net feature which allows new versions of modules to be downloaded from a remote server, but decided to code our own. Therefore the software will be created in two parts... A thin wafer which when executed, checks for and downloads upgrades, before launching the second part which is the actual POS Software.
Peripheral Abstraction : our customers use a variety of cashdrawers, receipt printers, label printers and pole displays. We are standardizing on the bar code reader, mag-swipe reader and touch screens as quality in these areas cannot be not assumed between vendors.
As you can see, the pos-specific design issues are less significant in my project than more general issues of distribution and maintenance. My team and I have written several POS systems and what needs to go into them is pretty much intuitive now. I would be happy to answer specific questions if you have any. Post them here and I will get back to you.
Peace,
Colt