diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py
index 96f8b4cb05a..5d3c03ed833 100644
--- a/addons/stock/models/stock_move_line.py
+++ b/addons/stock/models/stock_move_line.py
@@ -22,6 +22,7 @@ class StockMoveLine(models.Model):
move_id = fields.Many2one(
'stock.move', 'Stock Move',
help="Change to a better name", index=True)
+ company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env['res.users']._get_company(), readonly=True)
product_id = fields.Many2one('product.product', 'Product', ondelete="cascade")
product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure', required=True)
product_qty = fields.Float(
@@ -74,6 +75,12 @@ class StockMoveLine(models.Model):
if line.lot_id and line.product_id != line.lot_id.product_id:
raise ValidationError(_('This lot %s is incompatible with this product %s' % (line.lot_id.name, line.product_id.display_name)))
+ @api.constrains('company_id', 'move_id')
+ def _check_same_company_id(self):
+ for line in self:
+ if line.move_id and line.move_id.company_id != line.company_id:
+ raise ValidationError(_('The move line a a different company than its move'))
+
@api.one
def _set_product_qty(self):
""" The meaning of product_qty field changed lately and is now a functional field computing the quantity
diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml
index c48b0627077..55b02efc58f 100644
--- a/addons/stock/security/stock_security.xml
+++ b/addons/stock/security/stock_security.xml
@@ -97,6 +97,13 @@
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+
+ stock_move_line multi-company
+
+
+ [('company_id','child_of',[user.company_id.id])]
+
+
stock_quant multi-company