[IMP] crm: improve lead company computation performance

# Purpose
Avoid unnecessary steps to compute/assign lead company.

Task-2824913
See odoo/odoo#97136

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Florian Charlier
2022-08-16 09:18:56 +02:00
parent 6f81b5e0a8
commit 6d28b10bb5
+9 -13
View File
@@ -293,34 +293,30 @@ class Lead(models.Model):
if lead.user_id and proposal not in lead.user_id.company_ids:
proposal = False
# inconsistent
if lead.team_id.company_id and proposal != lead.team_id.company_id:
elif lead.team_id.company_id and proposal != lead.team_id.company_id:
proposal = False
# void company on team and no assignee
if lead.team_id and not lead.team_id.company_id and not lead.user_id:
elif lead.team_id and not lead.team_id.company_id and not lead.user_id:
proposal = False
# no user and no team -> void company and let assignment do its job
# unless customer has a company
if not lead.team_id and not lead.user_id and \
(not lead.partner_id or lead.partner_id.company_id != proposal):
elif not lead.team_id and not lead.user_id and \
(not lead.partner_id or lead.partner_id.company_id != proposal):
proposal = False
# propose a new company based on team > user (respecting context) > partner
if not proposal:
if lead.team_id.company_id:
proposal = lead.team_id.company_id
lead.company_id = lead.team_id.company_id
elif lead.user_id:
if self.env.company in lead.user_id.company_ids:
proposal = self.env.company
lead.company_id = self.env.company
else:
proposal = lead.user_id.company_id & self.env.companies
lead.company_id = lead.user_id.company_id & self.env.companies
elif lead.partner_id:
proposal = lead.partner_id.company_id
lead.company_id = lead.partner_id.company_id
else:
proposal = False
# set a new company
if lead.company_id != proposal:
lead.company_id = proposal
lead.company_id = False
@api.depends('team_id', 'type')
def _compute_stage_id(self):