diff --git a/odex25_project/project_base/models/project_task.py b/odex25_project/project_base/models/project_task.py index 01f6f83c0..695c62aef 100644 --- a/odex25_project/project_base/models/project_task.py +++ b/odex25_project/project_base/models/project_task.py @@ -56,40 +56,21 @@ class ProjectTask(models.Model): _("Total planned hours for all tasks in stage %s must not exceed Total stage hours %s") % ( record.phase_id.display_name, record.phase_hours)) - @api.depends('stage_id', 'stage_id.is_closed') + @api.onchange('stage_id', 'stage_id.is_closed') def _compute_stage(self): - self.isdone = False - for rec in self: - if rec.stage_id.is_closed: - # Get users from both groups - manager_users = self.env.ref('project.group_project_manager').users - department_manager_users = self.env.ref('project_base.group_project_department_manager').users - - # Combine both user sets - user_ids = manager_users | department_manager_users - - # Ensure project exists and is valid - if rec.project_id: - project_no = rec.project_id.project_no or "Unknown Project No" - else: - project_no = "Unknown Project" - - # Create a mail notification for users in both groups - rec.env['mail.message'].create({ - 'message_type': "notification", - 'body': _("Task %s is done for project %s and needs your action") % (rec.name, project_no), - 'subject': _("Done Task"), - 'partner_ids': [(6, 0, user_ids.mapped('partner_id').ids)], - 'notification_ids': [(0, 0, { - 'res_partner_id': user.partner_id.id, - 'notification_type': 'inbox' - }) for user in user_ids if user.partner_id], - 'model': rec._name, - 'res_id': rec.id if rec.id else False, # Ensure res_id exists - 'author_id': rec.env.user.partner_id.id if rec.env.user.partner_id else False, - 'email_from': rec.env.user.partner_id.email if rec.env.user.partner_id else 'noreply@company.com' - }) - - - + manager_users = self.env.ref('project.group_project_manager').users + department_manager_users = self.env.ref('project_base.group_project_department_manager').users + # Combine both user sets + user_ids = manager_users | department_manager_users + self.env['mail.message'].create({ + 'message_type': "notification", + 'body': _("Task %s is done for project %s and needs your action") % (self.name, self.project_id.project_no or ""), + 'subject': _("Done Task"), + 'partner_ids': [(6, 0, user_ids.mapped('partner_id').ids)], + 'notification_ids': [(0, 0, {'res_partner_id': user.partner_id.id, 'notification_type': 'inbox'}) + for user in user_ids if user_ids], + 'model': self._name, + 'res_id': self.id, + 'author_id': self.env.user.partner_id and self.env.user.partner_id.id + })