From 240d191ba302e6df200f7c91898c83c08ced758a Mon Sep 17 00:00:00 2001 From: Haresh Shyara Date: Mon, 12 Nov 2018 12:32:29 +0000 Subject: [PATCH] [IMP] stock: add company_id field on stock_move_line There is no company_id field on stock.move.line and it is so impossible to restrict easily the access rights on move lines (except by passing through stock.move, but all stock move line don't always have a stock.move) To resolve this we've added a field company_id on stock.move.line, and a constraint to force it having the same company_id than the one on stock move. Task ID : 1905232 closes odoo/odoo#28575 --- addons/stock/models/stock_move_line.py | 7 +++++++ addons/stock/security/stock_security.xml | 7 +++++++ 2 files changed, 14 insertions(+) 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