[IMP] website_crm_score: add new field to specify the minimum score that a lead need to be allocated. Merge duplicated lead before to assign them to a salesman

This commit is contained in:
Jeremy Kersten
2015-01-19 09:45:58 +01:00
parent 9ba31b513e
commit b08cb60384
+18 -7
View File
@@ -69,7 +69,7 @@ class crm_case_section(osv.osv):
unassigned_leads = fields.Integer(compute='_unassigned_leads')
capacity = fields.Integer(compute='_capacity')
section_user_ids = fields.One2many('section.user', 'section_id', string='Salesman')
min_for_assign = fields.Integer("Minimum score", help="Minimum Score for a lead to be automatically assign (>=)")
min_for_assign = fields.Integer("Minimum score", help="Minimum Score for a lead to be automatically assign (>=)", default=0, required=True)
@api.model
def score_and_assign_leads(self):
@@ -95,16 +95,27 @@ class crm_case_section(osv.osv):
for salesteam in all_salesteams:
domain = safe_eval(salesteam['score_section_domain'], evaluation_context)
domain.extend([('section_id', '=', False), ('user_id', '=', False)])
lead_fits = self.env["crm.lead"].search(domain, limit=50)
haslead = haslead or (len(lead_fits) == 50 and not dry)
leads = self.env["crm.lead"].search(domain, limit=50)
haslead = haslead or (len(leads) == 50 and not dry)
if dry:
for lead_fit in lead_fits:
values = {'lead_id': lead_fit.id, 'section_id': salesteam['id']}
for lead in leads:
values = {'lead_id': lead.id, 'section_id': salesteam['id']}
self.env['leads.dry.run'].create(values)
else:
lead_fits.write({'section_id': salesteam['id']})
spams = map(lambda x: x.id, filter(lambda x: x.email_from and not checkmail(x.email_from), lead_fits))
leads.write({'section_id': salesteam['id']})
# Erase fake/false email
spams = map(lambda x: x.id, filter(lambda x: x.email_from and not checkmail(x.email_from), leads))
self.env["crm.lead"].browse(spams).write({'email_from': False})
# Merge duplicated lead
leads_done = []
for lead in leads:
if lead.id not in leads_done:
leads_duplicated = lead.get_duplicated_leads(False)
if len(leads_duplicated) > 1:
self.env["crm.lead"].browse(leads_duplicated).merge_opportunity(False, False)
leads_done += leads_duplicated
self._cr.commit()
@api.model