Openbravo POS Administrator's Guide


Managing authentication and authorization

Editing roles and permissions

Go to Maintenance under Administration and Select Roles.

For editing the permissions you would have to create a new role and edit the permissions in there. The format used is an XML file which describes the forms to which the role has permission to access.

By default the administrator role has access to all the application, which can serve as base for new roles.

This is the application's list of options you can grant access to roles:

Sales panels


Sales panel buttons


Payment methods


Customer panels

Stock management panels


Sales management panels


Maintenance panels


Go to Maintenance under Administration and Select Users.

To create a new user click on the button new. Type the name under Name, and then select their role. You want them to be visible, so leave that alone.

Setting up the stock


Go to Stock under Administration and Select Taxes.

Here you can set up tax bands that will later be associated with products. This allows taxation calculations to be performed automatically.

To create a new tax band click on the button new, edit the name and set the rate value. After you are done, save using the save button.


Go to Stock under Administration and Select Categories.

Managing the catalog consists of setting up categories and adding products to those categories. Note that products must belong to one category.

You will notice that the interface is very much alike to that of the taxes screen. Here you can define several categories under which you can fit your products.

Categories are organized hierarchically. Edit the parent category of the category you are editing selecting it in the drop down list Category.

Optionally you can add a picture for each category editing the Image field. To do this press the button with the folder, browse your files and select the desired image.

You can also add all the products that belong to one category pressing the button Add to catalog and also remove all of them pressing the button Remove from catalog.


Go to Stock under Administration and Select Products.

The barcode field is the value that will be used to search products when using the barcode reader.

You must set the buy price and the sell price. This can be done just writing the selected sell price with or without taxes included, or editing the desired percent margin per unit.

Note that every product must belong to one category and must have its tax band.

Optionally you can add a picture for each product editing the Image field. To do this press the button with the folder, browse your files and select the desired image.

In the tab Stock you can edit the Stock cost by year and Stock volume values for report purposes.

In the tab Properties you can select if the product must be visible in the catalog panel of the sales panel, if it is an auxiliary product and if it is a product that is sold by weight.


Currently setting then warehouse from which inventory items will be taken for sale is awkward, you have to go to your database, look for rows in table locations and write down the value for the id column of the warehouse, then get in OpenBravo as Administrator, go to Maintenance->Resources->(station)properties (where station is the machine name or hostname of the cash you are configuring) and edit the resource, so that the xml element location's content is the id you write down before. This should be done for each cash and reinit OpenBravo to see the effect.

Change the default receipt layout

Edit the receipt

In Openbravo POS much of the advanced configuration is managed from the resources panel rather than with a GUI. Such is the case for the receipts

To change the default ticket you must go to the Resources panel and edit the resource with the name Printer.Ticket. For the ticket layout printed from the Sales screen print button as specified in Ticket.Buttons, edit Printer.TicketPreview

Openbravo POS uses Apache Velocity to parse the XML templates. The reference to Velocity contains further information for the syntax used.


The resources are used at various times during the print process. This is the default behavior in 2.30, but it can be amended.

Output to the pole display is mixed in with the Printer resources, so can be a bit confusing at first.

  • Printer.Start - At login and application initialization
  • Printer.Ticket - When ticket is closed as payment screen is ok'd , after ticket is saved to database and ticket number allocated. Only runs if printer button is latched down in payment window.
  • Printer.Ticket2 - Same time as Ticket, but only fires if printer button in payment screen is not latched, so Ticket does not fire.
  • Printer.PrintPreview - Only when the print button is pressed in the sales screen. printId will be empty, as the ticket number has not been allocated yet.
  • Printer.TicketTotal - When commencing close ticket, after pressing = or space to leave the sales items screen.
  • Printer.OpenDrawer - Only when open drawer button is pressed on sales screen. Only opens the drawer on printer 1.
  • Printer.Ticket.Logo - Not in the main logic flow. Only referenced by other resources, CustomerPaid, Partial Cash, CloseCash, Ticket, TicketPreview, Inventory.
  • Printer.TicketLine - When a new line is added or amended on the sales screen.

So listing these in the order you might use them in your workflow for a printer

  • Printer.PrintPreview - Print a draft ticket so the customer can check off the items rung up so far.
  • Printer.Ticket - Print ticket to paper if print button latched down. Often left latched off for small value sales. When off, Ticket2 runs. If on, Ticket2 will not run.
  • Printer.Ticket2 - Print ticket to screen printer. If a paper ticket is not printed, this virtual printer will record output. The operator can quickly go back to a summary of the previous few sales by selecting System.Printer. If Ticket2 has an opendrawer statement, the drawer on printer 1 will still open.

Logic for a customer display screen or panel, with nodes in these resources.

  • Printer.Start - Welcome to application or new operator
  • Ticket.Line - Show each item as added to the ticket, and the subtotal so far.
  • Printer.TicketTotal - Show total amount due for the sale, and taxes if relevant.
  • Printer.Ticket - Show total amount, tendered (given) and change.
  • Printer.Ticket2 - Same as Ticket

Other reports that print to the receipt printer, and are defined with resources, but are not related to the sales logic flow

  • Printer.CloseCash
  • Printer.PartialCash
  • Printer.Inventory
  • Printer.CustomerPaid
  • Printer.CustomerPaid2

Serial Control

If the serial port /dev/ttyS0 is locked by another program (minicom, apcupsd, another instance of Openbravo) the receipt will not print, and no warning is posted to the user.


In the receipt there are available all of the public methods of the com.openbravo.pos.ticket.TicketInfo class in the $ticket variable.


The public methods of the com.openbravo.pos.ticket.TicketLineInfo class populates the $ticketlines variable. Download the current source from the forge area for more detail on what each property returns.


The public methods of the com.openbravo.pos.payment.PaymentInfo class populates the $paymentline variable, but you must iterate all the payment lines.

#foreach ($paymentline in $ticket.payments)
  #if ($ == "magcard")


Openbravo POS defines a new language based on XML to print receipts and set a customer display that is independent of the model of printer used. This language supports one customer display and several printers.


Ticket prints a receipt. When it finishes, it cuts the paper off. Ticket can contains a printer attribute which sets the printer.

 ...  - printer 2 will print the receipt.

Hint: When testing your layout, put a version tag in one of your static text lines, and increment it each time you make a change, otherwise you can loose track of which piece of paper just came out of the printer.

Multiple Original Copies

To print multiple copies of a receipt, simply repeat the entire ticket node.

You might choose to make slight variations to the second (or third) copies, adding text like 'till copy' or 'pickup copy'.

Put a comment at the start of the first ticket to remind maintainers that there are multiple copies, so they replicate any future changes downwards.

For example


  Pickup Copy

  Till Copy


The following elements can be used in ticket nodes


This sets a text line in a receipt. It can contain a parameter size setting the size of the text. Possible values are:

0 - Normal size (by default)
1 - Double height
2 - Double weight
3 - Double height and weight

Between line tags to print text tag is required. The text tag can contain the following parameters:

align - defines the alignment of the text string. The available values are
left - align text to the left. The default value.
right - align text to the right.
center - sets the text in the center.
length - defines the length in characters used to fit the text strings.
bold - defines whether if the text is bold or not. By default false.
underline - defines whether if the text is underlined or not. By default false
Some text

Note that the alignment attribute applies to the text tag, not the line tag. That means the alignment is within the text box, not across the whole line. For center alignment across the whole line, set the text length to the full number of columns on the line, and specify align="center".

References to the ticket or ticketline variables public properties can be displayed inline with the ${ } variable substitution construct. For example, to display the line item unit price including taxes


An image in the receipt. It contains the resource name that contains the image file. The image is converted to B/W before sending it to the printer.

Your image

A barcode. It contains a number of the barcode in EAN-13 format.

the number

Opens the cash drawer attached to the receipt printer.

The default ticket template can serve as a good starting point.

Paper Length

The paper width and length settings are adjusted from a different location, not from the Resources panel.

In file (edit with a text editor like nano), locate these entries

paper.receipt.x = ### paper.receipt.y = ###

Amend them to suit.


A text line in the display. Between line tags to display text tag is required. The text tag can contain the following parameters:

align - defines the alignment of the text string. The available values are
left - align text to the left. The default value.
right - align text to the right.
center - sets the text in the center.
length - defines the length in characters used to fit the text strings.

Editing the image

The default image can be changed editing the resource Printer.Ticket.Logo The image types supported vary by printer. Most thermal printers support them, and most dot-matrix ones don't. The image must be 256 px wide at most.

To remove the image from the ticket you have to edit the Printer.Ticket resource and remove the references to the Printer.Ticket.Logo resource.

Clearing Data

Clearing transaction data can be achieved with this SQL.

This may be desirable in a new deployment when all products are loaded, staff have been trained and test runs are complete. This step would be taken when going live.

This will clear out all transactions and tickets, ready to being trading.

See database model to visualize table relationships.


Product and customer master data will not be affected.

Use a raw database admin tool, such as Derby command line ij or MySQL's command line mysql.

/* This sql deletes all transactions in Openbravo POS */
/* Delete ticketlines before tickets for consistent constraints */
delete from ticketlines;
delete from tickets;
delete from payments;  /* payments must be deleted before receipts */
delete from receipts;
delete from taxlines;
delete from closedcash;
delete from stockdiary;
delete from stockcurrent;
delete from reservation_customers;
delete from reservations;
/* update ticketsnum set ID = 1;  Attempt to modify an identity column ID */
update products set stockcost=0, stockvolume=0;
update customers set curdebt=0, curdate=null;

/* Kingspa Specific tables */
delete from audit_table;
delete from sharedtickets;
delete from rock_free_status;
delete from tag_checker;
delete from time_clock;
delete from tips;

/* Tables that need to be retained */
Privacy Notice    |    Conditions of Use    |    Shipping & Returns    |    Sitemap

Copyright All rights reserved.