Offline shop, online shop + point of sale

I’ve been thinking lately about EPOS system for stocktaking for this scenario;

– offline retail shop in the high street
– online shop

The need is there to ensure that we don’t oversell in the online shop. To this end, what is needed is some type of EPOS (point of sale) system that simply allows to scan the barcode of the product which reduces the stock by 1 in the online shop.

There are LOADS of suppliers of EPOS systems, but getting to speak with someone technical is really difficult – it’s all about the BS salesmen, then once you’ve bought they allow you to get more technical. No thanks.


So, I had the thought to make a “home made” EPOS system (solely for stocktaking), and here is my initial thoughts;

1. Have a notebook or similar computer hooked up in the shop (perhaps under the desk of the checkout).
This computer would be online all the time in shop hours, and have open a page.

2. Plug a USB hand held scanner into the computer
These are very cheap to buy, and should be able to work by inserting the barcode into a input box
Barcode scanners can be programmed to “enter” after the scan.

3. The page that is open would be the “reduce stock” page
This page is a simple form where the input box is populated by the barcode scanner, which also “enter”‘s to action the form

4. Logic then takes over and reduced the available quantity in the online shop by 1.
If the available quantity hits zero, the product is placed “out of stock”.

In thoery, what can go wrong? Would be pleased to hear any comments.

Also, it would be easily possible to add stock by making a “add stock” page. Same system as the reduce stock page pretty much but instead of reducing stock by 1, it increases stock by 1.

Of course this all depends on the product already being in the database, with the correct bar code number – which would have to be a manual task. I suggest using the products_model for this, or better, perhaps use a new input field entirely.

Grouping together products for easy purchasing

Imagine for example that you owned a gift shop running osCommerce, and your gifts are in categories…fairly straighforward shop setup, right?

Now imagine that it is a month or so away from Valentines day, and you want to make a new page in your shop on which you will add some products from “this” category and some from “that” category and some from “another” category. How would you do that?

You could simply create a new category in your shop called “Valentines Gifts” and duplicate/copy the chosen products into it. That would work, wouldn’t it?

How about this for an idea…a system where the shop owner can;

1. make new pages via admin (eg; Valentines, Mothers Day, Fathers Day etc), including title, description and image
2. assign products to one or more of these new pages
3. have each new pages show ALL of the products assigned to it in one display – each product showing “image”, “price”, “quantity input”, “attributes”
4. have one overall BUY button for the whole page

Any products where the quantity input box is greater than 0, get added to the cart in one shot. So, if the page has 10 products, and the buyer wanted 5 of them, they would update the quantity to “1” for each of the 5, and press the buy button. All 5 get added to the cart, at the correct quantity, and with the chosen attributes.

What have I described? A “multi product add to cart” page that can be configured to showcase products based on events throughout the year. Wouldn’t it be an awesome add to any osCommerce site?

Now go further and say that the shopowner decided he wanted to only show the assigned products as part of the page, and have no “product_info.php” page for the particular assigned product. This way he could create a page that contained a “range” of buyable products, where the only way to purchase is by looking at the whole set of products in the range, rather than each product individually on product_info.php – an example of this might be something like a beginners fish aquarium where the buyer can say “I want 2 moollys, 2 angelfish, 0 black sharks, 5 loaches, 20 tetra, 3 packs of fishfood, 0 rainbowfish” and not have to visit the product_info for each! Wouldn’t that make the system even more awesome?

Video In Action

This video shows how to add a new page, assign products to the page(s). Also shows the “multiple buy” facility on the shop selection page. Let me know what you think ?

Quality Templates for osCommerce 2.3.x for FREE ?

I have a good offer on at the moment whereby anyone who purchases the “Designing osCommerce 2.3.x” eBook on or before 31 January 2013 can choose a quality coded theme/template for FREE.


So, if you have been umming and aahing about buying my eBook, now is the ideal time to go ahead and spend a few $$. In the eBook I show how to build a theme from scratch and you need no experience in PHP or HTML or CSS (or anything technical). So long as you can copy and paste you’ll be fine.

The choice of templates are listed here – at the price I am charging for the eBook you’ll be able to choose 1 of these 3 templates at no extra cost!!


After the 31st January, I will create one template per month and any buyers (of the eBook) during that month will get free if they so choose.

Of course, I have no problem with buyers waiting to choose a free template if they do not like any of the ones on offer. Note that choices cannot be backdated, so if you buy in February, you will not be able to choose from template created prior to February. So the sooner you purchase, the more choice you will have.

Making a simple “similar products” module

By “similar products” module, I mean s similar products to the product you are already looking at. What do we need to show;

1. products name (linked to it’s own product page).
2. products price

These need to be shown in the product info page. The “similar”ness feature will be simple list of the products in the same category as the product being looked at. We need to exclude the product being looked at from the list.

So, the SQL goes like Pastebin (including comments):

Next up is to take the “upcoming_products.php” module and:

1. Find the line of code (it’s line 13) that starts:

$expected_query = tep_db_query(

Change that full line of code to the $similar_query that I pastebin’d.

2. Change EVERY instance of $expected to $similar throughout the file.

3. Find the line that starts (line 29):

‘ <td align=”right”>

In that line, change tep_date_short($expected[‘date_expected’]) to $currencies->format($expected[‘products_price’],tep_get_tax_rate($product_info[‘products_tax_class_id’]))

Save the file as “link_products.php” in the /includes/modules/ folder.

Open up “product_info.php” file and:

1. Find the line of code like this:

if ($product_info[‘manufacturers_id’] > 0) {

Right above that line of code add:

include(DIR_WS_MODULES . ‘like_products.php’);

Save the file.

Open up “includes/languages/english/product_info.php” file and:

1. Add the following line of code

define(‘TABLE_HEADING_LIKE_PRODUCTS’, ‘Other products you might like’);

Save the file.

Reload the page in your browser. If the product you are looking at has fellow products in its category, you will see a new box that looks like this:


If there is any demand I might package it up as a addon or more likely github it for easy reference.