v 15.0 Third Party 1237
Download for v 15.0 Deploy on Odoo.sh
Odoo Online
On Premise
Odoo Apps Dependencies Inventory (stock)
Discuss (mail)
Community Apps Dependencies
Lines of code 5044
Technical Name stock_barcodes
Versions 15.0 12.0 13.0 14.0
You bought this module and need support? Click here!

Stock Barcodes

Beta License: AGPL-3 OCA/stock-logistics-barcode Translate me on Weblate Try me on Runboat

This module provides a barcode reader interface for stock module.

This module contains a base wizard read barcode that can be extended by other modules.

This module also makes use of this wizard for providing barcode support for doing inventories and picking operations.

Table of contents


Barcode interface for inventory operations

To use the barcode interface on inventory:

  1. Go to Inventory > operations > Inventory Adjustments.
  2. Create new inventory with “Select products manually” option.
  3. Start inventory.
  4. Click to “Scan barcodes” smart button.
  5. Start reading barcodes.

Barcode interface for picking operations

You can use the barcode interface in a picking or an operation type, the main difference is that if you open the barcode interface from a picking, this picking is locked and you read products for it.

To use the barcode interface on picking operations:

  1. Go to Inventory.
  2. Click on scanner button on any operation type.
  3. Start reading barcodes.

To use the barcode interface on a picking:

  1. Go to Inventory > Transfers.
  2. Click to “Scan barcodes” smart button.
  3. Start reading barcodes.

The barcode scanner interface has two operation modes. In both of them user can scan:

  1. Warehouse locations with barcode.
  2. Product packaging with barcode.
  3. Product with barcode.
  4. Product Lots (The barcode is name field in this case).

Automatic operation mode

This is the default mode, all screen controls are locked to avoid scan into fields.

The user only has to scan barcode in physical warehouse locations with a scanner hardward, the interface read the barcode and do operations in this order:

  1. Try search a product, if found, is assigned to product_id field and creates or update inventory line with 1.0 unit. (If product has tracking by lots the interface wait for a lot to be scanned).
  2. Try search a product packaging, if found, the product_id related is set, product quantities are updated and create or update inventory line with product quantities defined in the product packaging.
  3. Try search a lot (The product is mandatory in this case so you first scan a product and then scann a lot), this lot field is not erased until that product change, so for each product scann the interface add or update a inventory line with this lot.
  4. Try to search a location, if found the field location is set and next scan action will be done with this warehouse location.

If barcode has not found, when message is displayed you can create this lot scanning the product.

Manual entry mode

You can change to “manual entry” to allow to select data without scanner hardware, but hardward scanner still active on, so a use case would be when user wants set quantities manually instead increment 1.0 unit peer scan action.

Scan logs

All scanned barcodes are saved into model. Barcode scanning interface display 10 last records linked to model, the goal of this log is show to user other reads with the same product and location done by other users. User can remove the last read scan.

Known issues / Roadmap

  • Excute action_done() method outside onchange environment.
  • Allow create product when a barcode has not been found.
  • Allow to select picking reading its barcode.
  • Allow to select multiple pickings to process scanned products.

Changelog (2019-09-24)

  • [ADD] New feature. User can uses barcode interface in picking operations. (2021-02-06)

  • [ADD] New feature. Add option to get lots automatically based on removal strategy in inventory. (2021-04-05)

  • [ADD] New feature. Add security for users.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.



  • Tecnativa


  • Tecnativa:
    • Sergio Teruel
    • Carlos Dauden
    • Pedro M. Baeza
    • Alexandre D. Díaz
  • Onestein:
    • Andrea Stirpe
  • InitOS:
    • Foram Shah
  • ForgeFlow:
    • Lois Rilo
  • Enric Tobella


This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

This module is part of the OCA/stock-logistics-barcode project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.