From c8d1042d332a4071da954622fed7a8f4e0031736 Mon Sep 17 00:00:00 2001 From: yhu-odoo Date: Thu, 17 Sep 2020 12:17:57 +0000 Subject: [PATCH] [IMP] mrp: search bom by reference When select a BOM in the field, now we only search by the finished product name. In this commit, we will also match the reference of the BOM. Task 2326786 PR #57945 Signed-off-by: Arnold Moyaux --- addons/mrp/models/mrp_bom.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/addons/mrp/models/mrp_bom.py b/addons/mrp/models/mrp_bom.py index fc01dfb1ade..941e67c8355 100644 --- a/addons/mrp/models/mrp_bom.py +++ b/addons/mrp/models/mrp_bom.py @@ -3,6 +3,7 @@ from odoo import api, fields, models, _ from odoo.exceptions import UserError, ValidationError +from odoo.osv.expression import AND, NEGATIVE_TERM_OPERATORS from odoo.tools import float_round from itertools import groupby @@ -149,6 +150,16 @@ class MrpBom(models.Model): raise UserError(_('You can not delete a Bill of Material with running manufacturing orders.\nPlease close or cancel it first.')) return super(MrpBom, self).unlink() + @api.model + def _name_search(self, name='', args=None, operator='ilike', limit=100, name_get_uid=None): + args = args or [] + domain = [] + if (name or '').strip(): + domain = ['|', (self._rec_name, operator, name), ('code', operator, name)] + if operator in NEGATIVE_TERM_OPERATORS: + domain = domain[1:] + return self._search(AND([domain, args]), limit=limit, access_rights_uid=name_get_uid) + @api.model def _bom_find_domain(self, product_tmpl=None, product=None, picking_type=None, company_id=False, bom_type=False): if product: