diff --git a/addons/barcodes/__init__.py b/addons/barcodes/__init__.py
index cde864bae21..dfbc1f52912 100644
--- a/addons/barcodes/__init__.py
+++ b/addons/barcodes/__init__.py
@@ -1,3 +1,18 @@
# -*- coding: utf-8 -*-
from . import models
+
+from odoo import api, SUPERUSER_ID
+
+
+def _assign_default_nomeclature_id(cr, registry):
+ env = api.Environment(cr, SUPERUSER_ID, {})
+ company_ids_without_default_nomenclature_id = env['res.company'].search([
+ ('nomenclature_id', '=', False)
+ ])
+ default_nomenclature_id = env.ref('barcodes.default_barcode_nomenclature', raise_if_not_found=False)
+ if default_nomenclature_id:
+ company_ids_without_default_nomenclature_id.write({
+ 'nomenclature_id': default_nomenclature_id.id,
+ })
+
diff --git a/addons/barcodes/__manifest__.py b/addons/barcodes/__manifest__.py
index f65d24a4316..83419dcd933 100644
--- a/addons/barcodes/__manifest__.py
+++ b/addons/barcodes/__manifest__.py
@@ -9,7 +9,9 @@
'views/barcodes_view.xml',
'security/ir.model.access.csv',
'views/barcodes_templates.xml',
+ 'views/res_company.xml',
],
'installable': True,
'auto_install': False,
+ 'post_init_hook': '_assign_default_nomeclature_id',
}
diff --git a/addons/barcodes/models/__init__.py b/addons/barcodes/models/__init__.py
index e3f49cb14ed..15631161b43 100644
--- a/addons/barcodes/models/__init__.py
+++ b/addons/barcodes/models/__init__.py
@@ -2,3 +2,4 @@
from . import barcodes
from . import barcode_events_mixin
from . import ir_http
+from . import res_company
diff --git a/addons/barcodes/models/res_company.py b/addons/barcodes/models/res_company.py
new file mode 100644
index 00000000000..b510c6e0c1d
--- /dev/null
+++ b/addons/barcodes/models/res_company.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields
+
+
+class ResCompany(models.Model):
+ _inherit = 'res.company'
+
+ def _get_default_nomenclature(self):
+ return self.env.ref('barcodes.default_barcode_nomenclature', raise_if_not_found=False)
+
+ nomenclature_id = fields.Many2one(
+ 'barcode.nomenclature',
+ string="Nomenclature",
+ default=_get_default_nomenclature,
+ )
diff --git a/addons/barcodes/views/res_company.xml b/addons/barcodes/views/res_company.xml
new file mode 100644
index 00000000000..fcf2b6c6eaa
--- /dev/null
+++ b/addons/barcodes/views/res_company.xml
@@ -0,0 +1,13 @@
+
+
+
+ barcode.company.form
+ res.company
+
+
+
+
+
+
+
+
diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py
index ed8e4b24afa..2fdec9782e4 100644
--- a/addons/point_of_sale/models/pos_config.py
+++ b/addons/point_of_sale/models/pos_config.py
@@ -291,7 +291,7 @@ class PosConfig(models.Model):
@api.onchange('barcode_scanner')
def _onchange_barcode_scanner(self):
if self.barcode_scanner:
- self.barcode_nomenclature_id = self.env['barcode.nomenclature'].search([], limit=1)
+ self.barcode_nomenclature_id = self.env.user.company_id.nomenclature_id
else:
self.barcode_nomenclature_id = False
diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py
index fdad76cc124..f1bca879dec 100644
--- a/addons/stock/models/stock_picking.py
+++ b/addons/stock/models/stock_picking.py
@@ -59,9 +59,6 @@ class PickingType(models.Model):
rate_picking_late = fields.Integer(compute='_compute_picking_count')
rate_picking_backorders = fields.Integer(compute='_compute_picking_count')
- barcode_nomenclature_id = fields.Many2one(
- 'barcode.nomenclature', 'Barcode Nomenclature')
-
@api.one
def _compute_last_done_picking(self):
# TDE TODO: true multi
diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml
index 5dbefbd384b..1d852bc3be2 100644
--- a/addons/stock/views/stock_picking_views.xml
+++ b/addons/stock/views/stock_picking_views.xml
@@ -45,7 +45,6 @@
-