diff --git a/addons/mrp_subcontracting/wizard/stock_picking_return.py b/addons/mrp_subcontracting/wizard/stock_picking_return.py index 2e55861c950..cb242839b80 100644 --- a/addons/mrp_subcontracting/wizard/stock_picking_return.py +++ b/addons/mrp_subcontracting/wizard/stock_picking_return.py @@ -1,14 +1,30 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models - +from odoo import api, models +from odoo.osv.expression import OR class ReturnPicking(models.TransientModel): _inherit = 'stock.return.picking' + @api.onchange('picking_id') + def _onchange_picking_id(self): + res = super(ReturnPicking, self)._onchange_picking_id() + if not any(self.product_return_moves.filtered(lambda r: r.quantity > 0).move_id.mapped('is_subcontract')): + return res + subcontract_location = self.picking_id.partner_id.property_stock_subcontractor + self.location_id = subcontract_location.id + domain_location = OR([ + ['|', ('id', '=', self.original_location_id.id), ('return_location', '=', True)], + [('id', '=', subcontract_location.id)] + ]) + if not res: + res = {'domain': {'location_id': domain_location}} + else: + res['domain'] = {'location_id': domain_location} + return res + def _prepare_move_default_values(self, return_line, new_picking): vals = super(ReturnPicking, self)._prepare_move_default_values(return_line, new_picking) - if return_line.move_id.is_subcontract: - vals['location_dest_id'] = self.picking_id.partner_id.property_stock_subcontractor.id + vals['is_subcontract'] = False return vals diff --git a/addons/stock/wizard/stock_picking_return_views.xml b/addons/stock/wizard/stock_picking_return_views.xml index c9417f2bdf5..6e50eba34ce 100644 --- a/addons/stock/wizard/stock_picking_return_views.xml +++ b/addons/stock/wizard/stock_picking_return_views.xml @@ -10,7 +10,7 @@
- +

This picking appears to be chained with another operation. Later, if you receive the goods you are returning now, make sure to reverse the returned picking in order to avoid logistic rules to be applied again (which would create duplicated operations)