Product barcode generator and Avery label printing — EAN13, EAN8, UPCA, Code128, QR with GS1 check digit verified. 14 label sheet templates: Avery L7160 L7163 L7651 L7654 L7161, HERMA 4346, Dymo roll, US Letter. Warns when Odoo silently downgrades a barcode to Code128. Start mid-sheet.
Overview
Product barcodes
Label modules print without ever checking what they print. Free generators render a barcode but do not print it. Nobody does both — and Odoo itself accepts, without a word, an EAN-13 whose last digit is wrong.
You only find out at the checkout, once the labels have been printed and stuck on.
This module generates codes, rejects an invalid code at entry, manages the number range, and prints.
Also searched as: barcode generator Odoo, EAN13 Odoo, product labels Odoo, barcode printing Odoo, GS1 Odoo, EAN check digit.
The check digit is calculated and verified
EAN-13, EAN-8 and UPC-A carry a GS1 check digit. It is calculated at generation and verified on save: a code whose check digit does not match is rejected, and the message gives the corrected code.
Internal alphanumeric codes and in-house Code 128 barcodes pass through without being judged — there is nothing to check on them.
A number range that never repeats
Declare the company prefix issued to you by GS1 and the number range. Bulk assignment draws from it, the counter advances, and a number already carried by a product — even an archived one — is skipped, never reassigned. An exhausted range says so before assigning, not halfway through the batch.
On variants as much as on product templates: two sizes of the same item are two items at the checkout, and therefore two codes.
From labels to box measurements
Odoo offers four fixed formats. Here a sheet is described by its actual measurements: number per row, margins, gap between labels. Avery templates provided (L7160, L7163, L7651, L7871) as well as 57 × 32 and 100 × 50 mm thermal rolls. A partially used sheet can be reused by skipping the labels already peeled off.
Checking a code you have in front of you
A wizard tells you about a code: its type, whether the check digit is correct, what the check digit should be, which GS1 organization issued the prefix, whether the prefix is reserved for internal use — and which product already carries it.
No additional dependencies
Codes are drawn using the library your Odoo already uses for its own barcodes. Nothing to install on the server.
What the module does not do
It is not a graphical label designer: you describe a sheet by its measurements, you do not drag blocks around with the mouse. It does not handle GS1-128 barcodes with application identifiers (lot, use-by date), nor regulatory DataMatrix codes.
Uniqueness across products is the one built into Odoo 19, which already names conflicting products. This module adds the check before assignment, so that a bulk assignment never goes out on a number already in use.
What was verified, and what was not
64 automated tests: check digits are tested against real codes — official GS1 examples, ISBN-13s of existing books, mass-retail items — and each of the nine other possible check digits is verified as rejected. Label sheets are actually rendered to PDF and inspected.
Alignment on a physical printer has not been tested. The measurements provided are those from Avery's technical data sheets, but every printer drifts by half a millimeter or two. Print a test sheet on plain paper before starting a box: the template can be adjusted to a tenth of a millimeter, and it is the template you correct, never the printer driver.
Specifications
| Price | €99 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_codebarres |
| Domain | Purchase, inventory and logistics |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.