diff --git a/addons/hr_timesheet/models/hr_timesheet.py b/addons/hr_timesheet/models/hr_timesheet.py index 2f1de1d4d76..c0cbec9b228 100644 --- a/addons/hr_timesheet/models/hr_timesheet.py +++ b/addons/hr_timesheet/models/hr_timesheet.py @@ -13,9 +13,13 @@ class AccountAnalyticLine(models.Model): _inherit = 'account.analytic.line' @api.model - def _get_favorite_project_id(self): - last_timesheet_ids = self.search([('user_id', '=', self._uid), ('project_id', '!=', False)], limit=5) - if len(last_timesheet_ids) == 5 and len(last_timesheet_ids.project_id) == 1: + def _get_favorite_project_id(self, employee_id=False): + employee_id = employee_id or self.env.user.employee_id.id + last_timesheet_ids = self.search([ + ('employee_id', '=', employee_id), + ('project_id', '!=', False), + ], limit=5) + if len(last_timesheet_ids.project_id) == 1: return last_timesheet_ids.project_id.id return False @@ -27,7 +31,8 @@ class AccountAnalyticLine(models.Model): if not self.env.context.get('default_employee_id') and 'employee_id' in field_list and result.get('user_id'): result['employee_id'] = self.env['hr.employee'].search([('user_id', '=', result['user_id']), ('company_id', '=', result.get('company_id', self.env.company.id))], limit=1).id if not self._context.get('default_project_id') and 'project_id' in field_list: - favorite_project_id = self._get_favorite_project_id() + employee_id = result.get('employee_id', self.env.context.get('default_employee_id', False)) + favorite_project_id = self._get_favorite_project_id(employee_id) if favorite_project_id: result['project_id'] = favorite_project_id return result diff --git a/addons/project/models/project.py b/addons/project/models/project.py index d2429ada036..64f978ecdca 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -1819,8 +1819,9 @@ class Task(models.Model): ) if partner_id: vals['partner_id'] = partner_id - if vals.get('project_id'): - project = self.env['project.project'].browse(vals.get('project_id')) + project_id = vals.get('project_id', self.env.context.get('default_project_id')) + if project_id: + project = self.env['project.project'].browse(project_id) if project.analytic_account_id: vals['analytic_account_id'] = project.analytic_account_id.id if project.analytic_tag_ids: @@ -1902,6 +1903,9 @@ class Task(models.Model): else: for field_name in self._get_recurrence_fields() + ['recurring_task']: vals.pop(field_name, None) + project_id = vals.get('project_id') + if project_id: + self = self.with_context(default_project_id=project_id) return super()._load_records_create(vals_list) @api.model_create_multi