A build-to-order Odoo module that lets a single product carry many barcodes — supplier packs, legacy SKUs, unit and case codes — all resolving to the same product across POS, Sales, and Inventory. ECOSIRE builds, installs, and supports it after you request a quotation. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
Manifesto do app
Feito em torno do seu fluxo de trabalho
A build-to-order Odoo module that lets a single product carry many barcodes — supplier packs, legacy SKUs, unit and case codes — all resolving to the same product across POS, Sales, and Inventory. ECOSIRE builds, installs, and supports it after you request a quotation.
Sem configuração por conta própria — um app funcional criado, instalado e com suporte da ECOSIRE.
Comece com um preço único de desenvolvimento. Definimos o escopo com você no início.
A ECOSIRE cria, configura e instala no seu Odoo.
Você entra no ar em cerca de 2–4 semanas, com um período de suporte pós-lançamento.
Odoo core ties each product variant to exactly one barcode field on product.product. In the real world a single item arrives with several codes: the manufacturer's EAN-13, an old internal SKU from your previous system, a distributor's own label, a case or inner-pack code, and sometimes a weighed-item prefix. When a cashier scans any code other than the one you happened to store, the POS throws "product not found", the picker can't confirm a stock move, and staff fall back to manual search — slowing every checkout and every receipt. Native Odoo has no supported place to record more than one code per product, and the barcode.rule / barcode.nomenclature machinery only governs how a scanned string is parsed (price-embedded, weight-embedded, aliases), not which product a plain code belongs to. That is exactly where Odoo runs out of road.
We build a dedicated product.barcode model (a one-to-many off product.template and product.product) so each product owns an unlimited list of alternate barcodes, each with its own optional label, pack quantity, and active flag. A database-level unique SQL constraint plus an @api.constrains guard prevents the same code from resolving to two different products, and a stored compute keeps the core barcode field in sync with the designated primary so nothing in stock reporting, invoicing, or e-commerce breaks. The heart of the work is the lookup layer: we extend the POS load_product_from_scan / _get_product_by_barcode path so the point-of-sale UI resolves any registered alternate to the right product.product and adds the correct line, and we extend server-side name/barcode search (_name_search and the Sales/Inventory barcode handlers) so the same codes work when creating a quotation, receiving a purchase, or picking a delivery.
Technically the module ships as a proper Odoo addon: a versioned __manifest__.py declaring dependencies on point_of_sale, sale_management, and stock; OWL/JS overrides loaded through the POS assets bundle so scanning is instant at the till; XML and inherited form views adding a "Barcodes" tab on the product form; and ir.model.access.csv plus record rules so only the right roles can add or edit codes. Optional extras we scope on request include pack-quantity handling (scanning a case code adds the case quantity), an import wizard to load thousands of legacy codes from CSV, exposure of alternate barcodes over the XML-RPC / JSON-RPC API for external scanners or middleware, and a QWeb label report to print any of a product's codes. It runs on Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise (the POS overrides differ slightly between Community and Enterprise POS, which we account for during scoping).
Because this is a build-to-order product, nothing ships the instant you pay. After you request a quotation we hold a short scoping call, confirm the exact Odoo version, edition, and which barcode sources you need, then build against your requirements and deliver on staging for UAT before go-live — typically 2 to 4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company barcode isolation, high-volume legacy-code data migration, or extra integrations such as external scanner middleware and custom label reports increase the quoted scope. You receive a fixed quote after the scoping call, never a surprise invoice.
Shops and chains whose products arrive with a manufacturer EAN plus their own shelf-label SKU. They need any of those codes to ring up the same product instantly at the till without cashiers hunting by name.
Businesses that sell the same item as a unit, an inner pack, and a case — each with its own barcode. They need scans to resolve to the right product and, ideally, the right quantity across sales and inventory.
Teams carrying thousands of old internal barcodes from a previous ERP or POS. They need those historical codes to keep working in Odoo so existing labels, shelves, and scan guns don't have to be reprinted overnight.
In-house Odoo admins or partners who want a clean, upgrade-safe addon with proper constraints, access rules, and API exposure rather than an unmaintained one-off patch to the core barcode field.
| Critério | ECOSIRE | Construção personalizada | Concorrente | Odoo nativo |
|---|---|---|---|---|
| Multiple codes per product | Purpose-built `product.barcode` model, unlimited codes with labels | Possible but you design and maintain the model yourself | Usually a fixed extra-barcodes list, limited labelling | |
| POS scan resolution | All codes resolve to the right product line at the till | Depends on how well the POS override is written | Often POS-only, may miss Sales or Inventory | |
| Works across Sales and Inventory | Same codes work in quotations, receipts, and pickings | Extra effort to cover every module | Frequently scoped to POS alone | |
| Duplicate protection | DB unique constraint plus `@api.constrains` guard | Only if you implement it | Varies; not always enforced at DB level | |
| Fit to your Odoo version and edition | Built for your exact 17/18/19 and Community or Enterprise | Fully tailored but built from zero | Generic build; edition quirks left to you | |
| Support and ownership | Support window, source code, and git repo handover | You own everything and all maintenance | Vendor support varies; upgrades not guaranteed | |
| Cost and timeline | From $249 indicative, fixed quote after scoping, 2–4 weeks | Typically higher; open-ended developer time | Low sticker price, but integration gaps cost time | |
| Optional extras | Import wizard, pack quantities, API exposure, label report | Anything, at additional build cost | Rarely all in one module |
No. This is a build-to-order Odoo module. After you request a quotation we scope it to your Odoo version and edition, build it against your requirements, and deliver it installed and tested. You receive the full source code and git repository at handover.
Typically 2 to 4 weeks from confirmed scope. The timeline depends on your Odoo version, edition, how many barcode sources you need, and whether legacy data migration is involved. We agree the schedule with you on the scoping call before any work starts.
Pricing starts from $249 as an indicative single-company base-scope figure. After a short scoping call we send a fixed quote. Drivers such as multi-company isolation, high-volume legacy-code migration, pack-quantity logic, or extra integrations increase the quoted scope — but the number you approve is fixed, not an open-ended estimate.
Every build includes a post-go-live support window for defect fixes. Because you receive the source and git repo, you can maintain it yourself or engage us for upgrades. We can quote a migration when you move to a newer Odoo major version, since POS overrides change between releases.
Yes, on Odoo 17.0, 18.0, and 19.0. The POS override points differ slightly between Community and Enterprise POS, so we confirm your edition during scoping and build the appropriate variant. We do not present one build as universal across editions without checking.
No. We keep the core `barcode` field synced to a designated primary code, so stock reporting, invoicing, and website product lookups that rely on the standard field keep working. The alternate codes are additive and enforced unique across products.
Yes, as an in-scope option. Each barcode line can carry a pack quantity, so scanning a case code can add the case quantity automatically at POS or on a stock move. We confirm this behaviour during scoping since it affects the POS and inventory logic.

A build-to-order Odoo localization that loads Algeria's full wilaya and commune hierarchy with bilingual French and Arabic names, wired into partner addresses and reporting. ECOSIRE builds, installs, and supports it after your quotation.

A build-to-order 2Checkout (Verifone) payment integration for ERPNext, giving global digital-goods sellers card acceptance, 45+ local payment methods, multi-currency checkout, and reconciled invoices. ECOSIRE scopes, builds, installs, and supports it on your ERPNext v15/v16 instance.

A build-to-order 2Checkout / Verifone payment gateway for Magento 2 and Adobe Commerce: localized checkout in 12 languages, iDEAL, Giropay and regional methods, multi-currency global selling, subscription billing and tax/invoicing automation — engineered, installed and supported by ECOSIRE.
A build-to-order Odoo module that lets a single product carry many barcodes — supplier packs, legacy SKUs, unit and case codes — all resolving to the same product across POS, Sales, and Inventory. ECOSIRE builds, installs, and supports it after you request a quotation.