diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index b70ff1354c9..064584db81b 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -661,8 +661,10 @@ class StockMove(models.Model): domain = [('location_src_id', '=', move.location_dest_id.id), ('action', 'in', ('push', 'pull_push'))] # first priority goes to the preferred routes defined on the move itself (e.g. coming from a SO line) warehouse_id = move.warehouse_id or move.picking_id.picking_type_id.warehouse_id - rules = self.env['procurement.group']._search_rule(move.route_ids, move.product_id, warehouse_id, domain) - + if not self.env.context.get('force_company', False) and move.location_dest_id.company_id == self.env.user.company_id: + rules = self.env['procurement.group']._search_rule(move.route_ids, move.product_id, warehouse_id, domain) + else: + rules = self.sudo().env['procurement.group']._search_rule(move.route_ids, move.product_id, warehouse_id, domain) # Make sure it is not returning the return if rules and (not move.origin_returned_move_id or move.origin_returned_move_id.location_dest_id.id != rules.location_id.id): rules._run_push(move) diff --git a/addons/stock/models/stock_rule.py b/addons/stock/models/stock_rule.py index c82fcc603ad..d810c2655f4 100644 --- a/addons/stock/models/stock_rule.py +++ b/addons/stock/models/stock_rule.py @@ -169,18 +169,21 @@ class StockRule(models.Model): move._push_apply() else: new_move_vals = self._push_prepare_move_copy_values(move, new_date) - new_move = move.copy(new_move_vals) + new_move = move.sudo().copy(new_move_vals) move.write({'move_dest_ids': [(4, new_move.id)]}) new_move._action_confirm() def _push_prepare_move_copy_values(self, move_to_copy, new_date): + company_id = self.company_id.id + if not company_id: + company_id = self.sudo().warehouse_id and self.sudo().warehouse_id.company_id.id or self.sudo().picking_type_id.warehouse_id.company_id.id new_move_vals = { 'origin': move_to_copy.origin or move_to_copy.picking_id.name or "/", 'location_id': move_to_copy.location_dest_id.id, 'location_dest_id': self.location_id.id, 'date': new_date, 'date_expected': new_date, - 'company_id': self.company_id.id, + 'company_id': company_id, 'picking_id': False, 'picking_type_id': self.picking_type_id.id, 'propagate_cancel': self.propagate_cancel,