From a684372fdd4247553978d893a354eec01dfad288 Mon Sep 17 00:00:00 2001 From: Arnold Moyaux Date: Wed, 14 Aug 2019 13:55:00 +0000 Subject: [PATCH] [IMP] mrp_subcontracting: subcontractors required Force to set subcontractors on subcontracting BoM since it's always used in order to determine if a subcontracting should be apply on a receipt or not. Also there is not magical behavior has 'if there is no subcontractor on the BoM then it means all partners...' --- addons/mrp_subcontracting/models/mrp_bom.py | 6 ++---- addons/mrp_subcontracting/tests/common.py | 1 + addons/mrp_subcontracting/tests/test_subcontracting.py | 1 + addons/mrp_subcontracting/views/mrp_bom_views.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/mrp_subcontracting/models/mrp_bom.py b/addons/mrp_subcontracting/models/mrp_bom.py index b848ec854d1..a0a1d054cb9 100644 --- a/addons/mrp_subcontracting/models/mrp_bom.py +++ b/addons/mrp_subcontracting/models/mrp_bom.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import fields, models - +from odoo.osv.expression import AND class MrpBom(models.Model): _inherit = 'mrp.bom' @@ -13,7 +13,5 @@ class MrpBom(models.Model): def _bom_subcontract_find(self, product_tmpl=None, product=None, picking_type=None, company_id=False, bom_type='subcontract', subcontractor=False): domain = self._bom_find_domain(product_tmpl=product_tmpl, product=product, picking_type=picking_type, company_id=company_id, bom_type=bom_type) if subcontractor: - domain += ['|', ('subcontractor_ids', 'in', subcontractor.id), ('subcontractor_ids', '=', False)] - else: - domain += [('subcontractor_ids', '=', False)] + domain = AND([domain, [('subcontractor_ids', 'in', subcontractor.id)]]) return self.search(domain, order='subcontractor_ids, sequence, product_id', limit=1) diff --git a/addons/mrp_subcontracting/tests/common.py b/addons/mrp_subcontracting/tests/common.py index f72e2f4923a..224dfa08504 100644 --- a/addons/mrp_subcontracting/tests/common.py +++ b/addons/mrp_subcontracting/tests/common.py @@ -35,6 +35,7 @@ class TestMrpSubcontractingCommon(SavepointCase): bom_form = Form(cls.env['mrp.bom']) bom_form.type = 'subcontract' bom_form.product_tmpl_id = cls.finished.product_tmpl_id + bom_form.subcontractor_ids.add(cls.subcontractor_partner1) with bom_form.bom_line_ids.new() as bom_line: bom_line.product_id = cls.comp1 bom_line.product_qty = 1 diff --git a/addons/mrp_subcontracting/tests/test_subcontracting.py b/addons/mrp_subcontracting/tests/test_subcontracting.py index 24066aefb38..deb09fb29f1 100644 --- a/addons/mrp_subcontracting/tests/test_subcontracting.py +++ b/addons/mrp_subcontracting/tests/test_subcontracting.py @@ -530,6 +530,7 @@ class TestSubcontractingTracking(TransactionCase): }) bom_form = Form(self.env['mrp.bom']) bom_form.type = 'subcontract' + bom_form.subcontractor_ids.add(self.subcontractor_partner1) bom_form.product_tmpl_id = self.finished_lot.product_tmpl_id with bom_form.bom_line_ids.new() as bom_line: bom_line.product_id = self.comp1_sn diff --git a/addons/mrp_subcontracting/views/mrp_bom_views.xml b/addons/mrp_subcontracting/views/mrp_bom_views.xml index d384f1ab4ea..6f7ab944e13 100644 --- a/addons/mrp_subcontracting/views/mrp_bom_views.xml +++ b/addons/mrp_subcontracting/views/mrp_bom_views.xml @@ -6,7 +6,7 @@ - +