diff --git a/addons/crm/data/ir_action_data.xml b/addons/crm/data/ir_action_data.xml index b9c81a58f9f..e522a52b5a3 100644 --- a/addons/crm/data/ir_action_data.xml +++ b/addons/crm/data/ir_action_data.xml @@ -4,18 +4,13 @@ - + Mark as lost list code - -if record: - action_values = env.ref('crm.crm_lead_lost_action').sudo().read()[0] - action_values.update({'context': env.context}) - action = action_values - + action = model.action_set_lost_with_reason() diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index d4384efd4c2..e57f58cf522 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -4,6 +4,7 @@ import logging import pytz import threading +from ast import literal_eval from collections import OrderedDict, defaultdict from datetime import date, datetime, timedelta from markupsafe import Markup @@ -997,6 +998,12 @@ class Lead(models.Model): self.write(dict(additional_values)) return res + @api.model + def action_set_lost_with_reason(self): + action = self.env['ir.actions.act_window']._for_xml_id('crm.crm_lead_lost_action') + action.update({'context': {**self.env.context, **literal_eval(action.get('context', '{}'))}}) + return action + def action_set_won(self): """ Won semantic: probability = 100 (active untouched) """ self.action_unarchive()