diff --git a/addons/hr_timesheet/tests/test_timesheet.py b/addons/hr_timesheet/tests/test_timesheet.py index 7aa62b88893..c23d4766d0c 100644 --- a/addons/hr_timesheet/tests/test_timesheet.py +++ b/addons/hr_timesheet/tests/test_timesheet.py @@ -703,3 +703,20 @@ class TestTimesheet(TestCommonTimesheet): }, ]) self.assertEqual(self.task1.progress, 100, 'The percentage of allocated hours should be 100%.') + + def test_analytic_plan_setting(self): + self.env['ir.config_parameter'].set_param('analytic.analytic_plan_projects', 1) + project_1 = self.env['project.project'].create({ + 'name': "Project with plan setting 1", + 'allow_timesheets': True, + 'partner_id': self.partner.id, + }) + self.assertEqual(project_1.analytic_account_id.plan_id.id, 1) + + self.env['ir.config_parameter'].set_param('analytic.analytic_plan_projects', 2) + project_2 = self.env['project.project'].create({ + 'name': "Project with plan setting 2", + 'allow_timesheets': True, + 'partner_id': self.partner.id, + }) + self.assertEqual(project_2.analytic_account_id.plan_id.id, 2) diff --git a/addons/project/models/project_project.py b/addons/project/models/project_project.py index a9db70cc62c..b42283eee6c 100644 --- a/addons/project/models/project_project.py +++ b/addons/project/models/project_project.py @@ -893,27 +893,27 @@ class Project(models.Model): @api.model def _create_analytic_account_from_values(self, values): company = self.env['res.company'].browse(values.get('company_id', False)) - project_plan, _other_plans = self.env['account.analytic.plan']._get_all_plans() + project_plan_id = int(self.env['ir.config_parameter'].sudo().get_param('analytic.analytic_plan_projects')) + + if not project_plan_id: + project_plan, _other_plans = self.env['account.analytic.plan']._get_all_plans() + project_plan_id = project_plan.id + analytic_account = self.env['account.analytic.account'].create({ 'name': values.get('name', _('Unknown Analytic Account')), 'company_id': company.id, 'partner_id': values.get('partner_id'), - 'plan_id': project_plan.id, + 'plan_id': project_plan_id, }) return analytic_account def _create_analytic_account(self): for project in self: - company_id = project.company_id.id - project_plan, _other_plans = self.env['account.analytic.plan']._get_all_plans() - analytic_account = self.env['account.analytic.account'].create({ + project.analytic_account_id = self._create_analytic_account_from_values({ + 'company_id': project.company_id.id, 'name': project.name, - 'company_id': company_id, - 'partner_id': project.partner_id.id, - 'plan_id': project_plan.id, - 'active': True, + 'partner_id': project.partner_id.id }) - project.write({'analytic_account_id': analytic_account.id}) def _get_projects_to_make_billable_domain(self): return [('partner_id', '!=', False)]