From 87fde093d67ee23786d064cce47f6160199b7e8f Mon Sep 17 00:00:00 2001 From: Arnold Moyaux Date: Fri, 17 Jan 2020 15:29:54 +0000 Subject: [PATCH] [IMP] mrp_subcontracting: filter on partner and product Allow to easily find product and partners related to subcontracting closes odoo/odoo#43046 Task: 2158126 Signed-off-by: Simon Lejeune (sle) --- addons/mrp_subcontracting/__manifest__.py | 1 + addons/mrp_subcontracting/models/res_partner.py | 12 ++++++++++++ .../mrp_subcontracting/views/product_views.xml | 17 +++++++++++++++++ .../views/res_partner_views.xml | 11 +++++++++++ 4 files changed, 41 insertions(+) create mode 100644 addons/mrp_subcontracting/views/product_views.xml diff --git a/addons/mrp_subcontracting/__manifest__.py b/addons/mrp_subcontracting/__manifest__.py index 277229315a5..e40a4ced61f 100644 --- a/addons/mrp_subcontracting/__manifest__.py +++ b/addons/mrp_subcontracting/__manifest__.py @@ -17,6 +17,7 @@ 'views/stock_move_views.xml', 'views/stock_picking_views.xml', 'views/supplier_info_views.xml', + 'views/product_views.xml', 'wizard/stock_picking_return_views.xml', ], 'demo': [ diff --git a/addons/mrp_subcontracting/models/res_partner.py b/addons/mrp_subcontracting/models/res_partner.py index 603d5dbbe93..67756a80175 100644 --- a/addons/mrp_subcontracting/models/res_partner.py +++ b/addons/mrp_subcontracting/models/res_partner.py @@ -11,3 +11,15 @@ class ResPartner(models.Model): 'stock.location', string="Subcontractor Location", company_dependent=True, help="The stock location used as source and destination when sending\ goods to this contact during a subcontracting process.") + is_subcontractor = fields.Boolean( + string="Subcontractor", store=False, search="_search_is_subcontractor") + + def _search_is_subcontractor(self, operator, value): + assert operator in ('=', '!=', '<>') and value in (True, False), 'Operation not supported' + subcontractor_ids = self.env['mrp.bom'].search( + [('type', '=', 'subcontract')]).subcontractor_ids.ids + if (operator == '=' and value is True) or (operator in ('<>', '!=') and value is False): + search_operator = 'in' + else: + search_operator = 'not in' + return [('id', search_operator, subcontractor_ids)] diff --git a/addons/mrp_subcontracting/views/product_views.xml b/addons/mrp_subcontracting/views/product_views.xml new file mode 100644 index 00000000000..6ef4b32107e --- /dev/null +++ b/addons/mrp_subcontracting/views/product_views.xml @@ -0,0 +1,17 @@ + + + + + mrp.subcontracting.product.template.search + product.template + + + + + + + + + + + diff --git a/addons/mrp_subcontracting/views/res_partner_views.xml b/addons/mrp_subcontracting/views/res_partner_views.xml index ad54ee15c0e..5a94fc48fac 100644 --- a/addons/mrp_subcontracting/views/res_partner_views.xml +++ b/addons/mrp_subcontracting/views/res_partner_views.xml @@ -10,4 +10,15 @@ + + res.partner.select.inherit + res.partner + + + + + + + +