Enable Dark Mode!
By: Ayisha Sumayya K

How to Create Barcode in Odoo 17

Technical Odoo 17

Barcode use is one technique to improve sales and inventory management systems' efficiency. Barcodes expedite data entry, lower mistake rates, and conserve time. The procedure of incorporating barcodes is simple if you're running Odoo 17. In this blog post, we'll guide you through the steps to create barcodes in Odoo 17. 

Take a look at an example of creating a barcode for the corresponding sale order.

Step 1: Create a module that contains a barcode field and a Python function to create a barcode based on the sale order date and reference number.

class SaleOrder(models.Model):
   _inherit = 'sale.order'
   barcode = fields.Char(string="Barcode")
   def create(self, vals):
       res = super(SaleOrder, self).create(vals)
       res.barcode = res.date_order.date().strftime("%Y%m%d") + res.name
       return res

Step 2: Inherit the sale order from view and add the barcode field in it. 

<?xml version="1.0" encoding="utf-8"?>
   <record id="sale_order_form_inherit" model="ir.ui.view">
       <field name="name">blog.sale.order.form</field>
       <field name="model">sale.order</field>
       <field name="inherit_id" ref="sale.view_order_form"/>
       <field name="arch" type="xml">
           <xpath expr="//field[@name='payment_term_id']" position="after">
               <field name="barcode"/>

Output of the above code will be:

How to Create Barcode in Odoo 17-cybrosys

Here, the barcode field contains the combination of order date and the sale order reference number. 

Let's print this barcode number. For this, we need to create an action for printing the barcode and a template. 

Step 3: Create an XML file and add the action for printing the report

   <record id="action_report_sale_barcode" model="ir.actions.report">
       <field name="name">Sale Order Barcode</field>
       <field name="model">sale.order</field>
       <field name="report_type">qweb-pdf</field>
       <field name="report_name">blog1.barcode_template</field>
       <field name="report_file">blog1.barcode_template</field>
       <field name="print_report_name">'Sale Order Barcode (PDF)'</field>
       <field name="binding_model_id" ref="sale_management.model_sale_order"/>
       <field name="binding_type">report</field>

Which will create a report action as shown in the figure.

How to Create Barcode in Odoo 17-cybrosys

Step 4:  Add a template for printing the barcode.

   <template id="barcode_template">
       <t t-call="web.html_container">
           <t t-foreach="docs" t-as="doc">
               <t t-call="web.external_layout">
                   <div class="page">
                       <div class="oe_structure"/>
                           <div class="col-5">
                               <h2><span t-field="doc.name"/></h2><br/>
                               <span style="margin-left:-60px;">
                                   <img t-if="doc.barcode"
                               <div style="margin-left:100px" t-field="doc.barcode"/>

It will print the barcode as shown in the figure,

How to Create Barcode in Odoo 17-cybrosys

In conclusion, barcodes have the potential to greatly improve the effectiveness of your company's operations. These instructions allow Odoo 17 users to easily add barcode capabilities to their system, providing a workable way to cut down on errors, expedite procedures, and save time in the ever-changing world of corporate operations. Consequently, companies can streamline their operations, raise the correctness of their work, and eventually add to increased overall productivity.

Refer to our previous blog on how to Create a barcode in odoo 16 to read more about how to create a barcode in odoo.

If you need any assistance in odoo, we are online, please chat with us.


Leave a comment




Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message