From 186b5120237b6e9b3dae12f074f9e48d2a2236ad Mon Sep 17 00:00:00 2001 From: Arnold Moyaux Date: Thu, 5 Sep 2019 07:54:42 +0000 Subject: [PATCH] [FIX] mrp_subcontracting: allow to return to subcontractor --- .../wizard/stock_picking_return.py | 24 +++++++++++++++---- .../wizard/stock_picking_return_views.xml | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) 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)