From 1eaaae4cf9773b13fcea27ceb2f1069c588d7ce7 Mon Sep 17 00:00:00 2001 From: Adam Heinz Date: Tue, 4 Jun 2024 14:16:47 -0400 Subject: [PATCH] [IMP] Allow su to set crm.lead date_closed manually. This aids import from external systems. --- addons/crm/models/crm_lead.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 2ba9cd39316c3f..b01bf88c968361 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -709,13 +709,14 @@ def write(self, vals): vals.update({'probability': 100, 'automated_probability': 100}) stage_is_won = True - # stage change with new stage: update probability and date_closed - if vals.get('probability', 0) >= 100 or not vals.get('active', True): - vals['date_closed'] = fields.Datetime.now() - elif vals.get('probability', 0) > 0: - vals['date_closed'] = False - elif stage_updated and not stage_is_won and not 'probability' in vals: - vals['date_closed'] = False + if 'date_closed' not in vals or not self.env.su: + # stage change with new stage: update date_closed + if vals.get('probability', 0) >= 100 or not vals.get('active', True): + vals['date_closed'] = fields.Datetime.now() + elif vals.get('probability', 0) > 0: + vals['date_closed'] = False + elif stage_updated and not stage_is_won and not 'probability' in vals: + vals['date_closed'] = False if any(field in ['active', 'stage_id'] for field in vals): self._handle_won_lost(vals)