X-Cart:POS system for X-Cart

From X-Cart 4 Classic
Revision as of 18:30, 26 February 2014 by Admin (talk | contribs)
Jump to: navigation, search


POS system for X-Cart is a module that allows you to use your X-Cart store both as an interface for web sales and a Point of Sale system. With this module, you can sell offline and online using the same software, which means you get a single inventory tracking and order management system for both your online and retail stores. Update inventory and product properties by using a barcode scanner that finds the product instantly. Got a new product? Add it to the database and decide if it should be available in the online storefront, or if you want to sell it in your retail store only. Scan the barcodes, accept payments, print receipts and barcode labels via X-Cart. It has never been so easy!

System requirements and installation

See POS system module system requirements and installation

Getting started

To start using the X-Cart POS module on your system, do the following:

  1. Ensure that your system meets the software and hardware requirements, then install and enable the module.
  2. Configure the module. First, connect the module with the printers that you intend to use for printing barcodes and receipts and set up your printing preferences in the module's configuration settings:
  3. To get a feel of how your X-Cart store works with the POS system module installed, try using the module features in both the store's Admin/Provider back end and Customer area. To begin with, while being logged in to the store as administrator (in X-Cart PLATINUM edition - as provider), add some products to your store's catalog (or edit your existing products) and add UPC codes for them. You can provide your own UPC codes or scan the existing barcode labels of your products so the UPC codes are "scanned" into the system from these barcodes. In the long run, all the products that you are going to sell via POS will need unique UPC codes.
  4. Make sure that all the product items that you are going to sell via POS have barcode labels attached to them. For product items that do not yet have barcode labels, print your own barcode labels based on UPC codes.
  5. Set up a "POS operator" customer membership, create a customer account for the user or employee who will accept customer orders at POS terminal and assign the "POS operator" membership to this account.
  6. In the Customer area, log in as POS operator and edit your user profile to add the POS location address to your address book (This address will be used by default as the address of the customer checking out via POS). Then try adding some products to cart via the "Checkout POS" section (Make sure you can add products to cart both by scanning their barcodes and by entering their UPC codes manually).
  7. Try creating a POS order by checking out with the products contained in your shopping cart. The first time you do it, go to checkout using X-Cart's standard Checkout button and finish creating the order using X-Cart's regular checkout flow. During checkout, use the address you configured in your POS operator user profile and select the payment method that you want to be used in future for all POS orders created using this POS operator account. Your payment method selection will be saved as default, and, later on, when creating POS orders using this account, you will be able to use the simplified order creation flow (via the Process order button) where you will not have to select a payment method again. If at some point in the future you will need to switch to a different payment method for orders of this POS operator, simply use the Checkout button again and select a different payment method.
  8. Try printing a receipt for the order that has been created.

Once you've made sure everything works as expected, you should be ready to go live with your POS-enabled X-Cart store.

Configuring the module

POS system module configuration settings

After installing the module, you must adjust the module's configuration settings. Do the following:

  1. In the Modules section of your X-Cart store’s Admin area (Settings -> Modules), click the Configure button next to the name of the previously installed and enabled POS system module:
    POS configure.png
    The Pos system for X-Cart module settings page opens.
  2. Once the module settings page is fully loaded, allow a few seconds for the QZ Print applet to load (See Notes on the QZ Print applet for more info). Here the applet is employed to detect locally installed printers. We need this information so we can select which of the printers will be used to print barcodes and receipts for the POS system module. Once the applet discovers the presence of installed printers, the QZ Print Plugin status on the module settings page changes to "Printers are found", and the list of printers installed in the system is loaded in the Barcode printer name and Receipt printer name drop-down boxes:
    POS config settings.png
  3. Use the Barcode printer name and Receipt printer name drop-down boxes to select the printers that will be used to print out, respectively, barcodes and receipts. Failure to specify any of the said two printers will render the respective functionality (i.e., the buttons and sections of the user interface that control the respective printing operations) unavailable. For example, if you do not select a Receipt printer, you will not be able to print receipts.
  4. Use the Barcode line width (in dots) field to set the minimum line width in a printed barcode. The smaller this value is, the more lines of the barcode can be printed on a barcode label. The number of barcode lines depends on the number of characters in the product's UPC, a code added on the product details page (The greater the length of UPC, the longer the barcode). The recommended value for the ‘Barcode line width (in dots)’ field is "1" or "2", but, regardless of the value you specify, please make sure that your barcode scanner can recognize the barcodes printed with this line width. The images below demonstrate a barcode printed with two different values of the minimum barcode line width parameter:
    Barcode line width1.png      Barcode line width2.png
  5. Click Submit to save the changes.
Important: If the system name of your Barcode printer or Receipt printer changes after the respective printer has been selected for use with the POS system module in the module settings, you will need to reload the module settings page in your browser, allow the QZ Print applet to obtain the new printer name, select the new printer name in the module settings and save the changes.

QZ Print applet related configuration

As QZ Print Plugin belongs to the type of applets which - in theory - may gain full access to the system of the computer on which it is run, and Java takes steps to protect end users from the security risks that may be posed by running such applets, while using the module, you may encounter some security warnings from Java. More information about it is available here: http://qzindustries.com/j7u45 To disable such warnings, you can install a self-signed certificate as described here: http://qzindustries.com/CertNotValid Alternatively, you can manually allow the applet to run every time you open or refresh the page that contains the applet. The certificate can be downloaded here: https://code.google.com/p/jzebra/downloads/detail?name=qz-free%20certs.zip&can=2&q=

Notes on the QZ Print applet

The module POS system for X-Cart employs a Java based web applet named QZ Print (https://code.google.com/p/jzebra/) to connect with the printers used to print barcodes and receipts. After the module has been installed, the applet files qz-print.jar and qz-print_jnlp.jnlp can be found in the skin\common_files\modules\POS_System\lib directory on the server where your X-Cart installation is running. Being a Java based applet, QZ Print operates on the client side: from the said directory on the server, the applet is loaded via the web browser onto the computer of the POS system module user where it is employed to discover the printers installed on the system and to send raw commands directly to these printers. The loading of the applet in the client browser happens every time the user opens or refreshes a page that involves connecting to the Barcode or Receipt printers. This includes:

  • Pos system for X-Cart module settings page (Here the applet is needed to detect all the printers installed in the system and to tie in the Barcode printer name and Receipt printer name settings with specific printers);
  • Pages where you can print out barcodes for specific UPCs (Here the applet is used to find a specific printer in the system by the name associated with the Barcode printer name field as provided in the module settings and to send print commands to it);
  • Order details page in the store's back end /Invoice page in the Customer area where the user can print out a receipt (Here the applet is used to find the receipt printer by the name provided in the Receipt printer name field in the module settings and to send print commands to it).

The applet download size is rather small (around 100 kB); however, it takes some time to be found, downloaded and run. For most users this means a noticeable lapse (normally, a few seconds) between opening/refreshing a page on which the applet is embedded and being able to perform the action involving communtication with printers on that page. For example, on the Pos system for X-Cart module settings page, there is no way a user can select a printer for use with the module before the applet is loaded and obtains a list of printer names from which the printer can be selected; this means the user has to wait a couple of seconds for the applet to be found, loaded and do its work. The Pos system for X-Cart module settings page and pages for printing barcodes keep the user informed on the applet’s progress by displaying its current status at the top of the page. Normally, one can see the following consecutive statuses:

  1. Initial state:
    QZprint wait.png

  2. Applet has been found and is being loaded:
    QZprint loading.png

  3. Applet has been loaded; searching for printers:
    QZprint search printers.png

  4. One or more printers have been found:
    QZprint printers found.png
    (The status shown above is used for the Pos system for X-Cart module settings page; the status displayed on the Barcode page uses the actual name of the barcode printer).

On the Order details page in the store's back end and on the Invoice page in Customer area, the applet loading status is not visible to users; however, the page functions in a similar way, and the Print receipt (jZebra) button only becomes available after the applet is fully loaded.

Setting up an account for "POS operator" user

Such POS-related tasks as adding UPC codes for products that will be sold via POS, printing barcode labels for them and printing receipts for POS orders can be performed by any user with full access to the store's Admin or Provider area (In X-Cart PLATINUM, providers, of course, can access only their own products and orders).

However, there is a number of POS-related tasks that need to be performed in the Customer area. These are all the tasks related to accepting orders from visitors shopping at your POS location, such as:

  • adding items to cart by scanning their barcode labels,
  • placing and processing the order,
  • printing the receipt.

The user who will perform the above named tasks at your store will need a customer account with a special type of membership: "POS operator". As a POS operator, this user will have access to some sections and controls in your store's Customer area that will not be accessible to customer users without such a membership. This includes:

  • a special form for adding products to cart by UPC;
  • a separate simplified checkout flow that does not involve entering the customer's address and payment method, but uses information stored in the customer's profile and creates a new order as Processed;
  • a button allowing to print receipts using a special receipt printer.

To create a special membership level for the user who will act as POS operator, go to the Edit Membership levels page (Users menu -> Membership levels) in the Admin area and create a new customer membership level as provided by the article User Memberships:Creating membership levels . The POS operator membership does not have to be called "POS operator"; you can use a different name. However, you must specify that this membership is your "POS operator" membership by selecting the respective check box:

Membership pos operator.png

Using the POS system module (Admin area)

Adding UPC codes for products

To create a barcode for a product, X-Cart's POS system module uses the value of the UPC (Universal Product Code) field in the product's details. This means that, before generating a barcode for any of the products in your store, you must add a UPC for this product. A UPC code for a product can be added via the product's details page:

UPC field.png

If the product you are editing does not already have a barcode provided by the manufacturer, you will have to create your own UPC for it. To do so, type in the desired UPC code manually into the UPC field and save the product details. If the product already has a barcode that you want to use in your store, you can automate the process: simply place the cursor inside the UPC box and scan the product's barcode label with your Barcode scanner. The scanner will read the UPC code from the barcode, and it will appear in the UPC field. After this you will only need to save the product details.

Important: UPC codes must be unique per product.

Once a UPC code is added for a product, a new link - "Barcode" - appears in the section menu:

Barcode link.png

Printing barcodes

The POS system for X-Cart module allows you to print barcodes for each product in your store individually or for multiple products at once. A prerequisite for printing barcodes is that the products for which you are going to print barcodes have been provided with UPC codes.

To print a barcode for a single product:

  1. In the Products management section of your store's Admin area (Catalog -> Products), find the product for which you need to print a barcode and open it for editing.
  2. Click on the "Barcode" link in the section menu to access the page where you can print the product's barcode and wait for the QZ Print applet to load:
    Barcode section.png

  3. Use the N items input box to specify the number of barcode labels that needs to be printed, and click Print barcodes.
    The Barcode printer will print the specified number of labels.

To mass-print barcodes for multiple products:

  1. In the Products management section of your store's Admin area (Catalog -> Products), find the products for which you need to print barcodes and select them by putting tick marks in the check boxes opposite their names.
  2. Click the Print barcodes button below the products list to access the page where you will be able to print barcodes for the products that have been selected:
    Print barcodes button.png

  3. Once the QZ Print applet has loaded, you will see a page like following:
    Barcodes multiple.png

  4. Use the N items input box to specify the number of copies that need to be printed, and click Print barcodes.
    The Barcode printer will print the specified number of labels for each of the selected products.

Printing receipts (Admin area)

To print a receipt for an order via the store's Admin area, you must find the order, open its details page and click Print receipt (jZebra):

Order details print receipt jzebra.png

Using the POS system module (Customer area)

Adding products to cart by UPC

When a user acting as POS operator is logged in to their user account, they can see a "Checkout POS" link in the store's "Special" menu:

Checkout POS link.png

This link allows the POS operator to access the cart page with a special form through which they can add products to the shopping cart by UPC. The form for adding products by UPC appears at the top of the page - above the cart contents:

Add product by UPC.png

The default method for adding products to cart by UPC is with the help of a Barcode scanner. When the scanner "reads" the barcode into the POS system, the UPC code represented by this barcode is displayed in the UPC field, and the form is automatically submitted. The form also allows the user to enter UPC codes manually. To switch to manual mode, the user should click the link "Manually" at the top of the form. In manual mode, the user must submit the form by hand using the Submit button provided next to the UPC field:

Add by UPC manually.png

If the store's database contains a product with the UPC that was submitted, the product is added to cart; otherwise, an error message like the following is displayed:

UPC not found.png

Creating a POS order

After the product has been added to cart, a new button - Process order - appears next to X-Cart's standard Checkout button:

Process order button.png

By using this button the user can create the order at once - without having to provide information about the customers' address or payment method.


  1. A prerequisite for successfully creating an order via the Process order button is that the profile of the user acting as POS operator must be properly configured (i.e. it must contain information about the user's address and payment method).
  2. For orders created by users with the "POS operator" membership, no shipping information is provided in the order details, since the goods are deemed to be sold at a POS location, without any shiping service involved.

Printing receipts (Customer area)

After a POS order has been created, on the Invoice page - next to the Print receipt button - there appears a button titled Print receipt (jZebra):

Print receipt invoice page.png

The Print receipt (jZebra) button allows the user to print the receipt for the order using the Receipt printer installed in the system.

To print a receipt for an order created earlier, the user must go to the Order history page, find the order for which the receipt needs to be printed, click on it to open the order details, and then, on the Order invoice page that will be opened, click the Print receipt (jZebra) button:

Order details print receipt customer.png