From badc4ace0dcc1833b00dc5e313e5491d894405e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cao=20=C4=90=C3=ACnh=20Trung?= <caodinhtrung2k@gmail.com>
Date: Thu, 22 Sep 2022 06:20:08 +0000
Subject: [PATCH] [FIX] maintenance: avoid empty close_date in done stage

Steps to reproduce the error:
- Install 'Maintenance'
- Select 'Maintenance' -> 'Request Maintenance'
- Create a maintenance request:
          + TH1: Save > Change stage to Repaired > 'Close date' =
Date.Today()
          + TH2: Don't Save > Change stage to Repaired > Save > 'Close
date' = blank

closes odoo/odoo#100777

Problem: App will show 'Close Date' blank
Expected: App will display 'Close Date' as Date.Today()
Solution: When Click on Save button -> Automatically get current date as end date
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
---
 addons/maintenance/models/maintenance.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/addons/maintenance/models/maintenance.py b/addons/maintenance/models/maintenance.py
index da5782d3cac7..06bb6318631e 100644
--- a/addons/maintenance/models/maintenance.py
+++ b/addons/maintenance/models/maintenance.py
@@ -345,6 +345,10 @@ class MaintenanceRequest(models.Model):
             request._add_followers()
         if request.equipment_id and not request.maintenance_team_id:
             request.maintenance_team_id = request.equipment_id.maintenance_team_id
+        if not request.stage_id.done:
+            request.close_date = False
+        elif request.stage_id.done and not request.close_date:
+            request.close_date = fields.Date.today()
         request.activity_update()
         return request
 
@@ -358,7 +362,9 @@ class MaintenanceRequest(models.Model):
             self._add_followers()
         if 'stage_id' in vals:
             self.filtered(lambda m: m.stage_id.done).write({'close_date': fields.Date.today()})
+            self.filtered(lambda m: not m.stage_id.done).write({'close_date': False})
             self.activity_feedback(['maintenance.mail_act_maintenance_request'])
+            self.activity_update()
         if vals.get('user_id') or vals.get('schedule_date'):
             self.activity_update()
         if vals.get('equipment_id'):
-- 
GitLab