From e8824a3a554e1d30993aa1d09f16073f523becb4 Mon Sep 17 00:00:00 2001 From: "Abderraouf Ghrissi (abgh)" Date: Tue, 21 Nov 2023 18:55:30 +0100 Subject: [PATCH] [FIX] project_timesheet_holidays: adapt post_init domain Description of the bug: task field is displayed in leave type form when company field is False Steps to reproduce: - install time off app - open a leave type form Source: When installling time off app, _compute_{timesheet_project_id, timesheet_task_id, timesheet_generate} work perfectly, when company = False => project/task = False and timesheet_generate = True Then, the post_init is executed. it will set the project and task according to env.company when company is False. so now project and task can have values even that the leave company is False. Then in the xml, we hide project if company is null and task if project is null, that's why project is not displayed but not task Solution: - In post_init method, we only get leaves types with a company set and stop using env.company to be coherent with the compute methods. closes odoo/odoo#143016 X-original-commit: e647374 Signed-off-by: Xavier Bol (xbo) --- addons/project_timesheet_holidays/__init__.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/project_timesheet_holidays/__init__.py b/addons/project_timesheet_holidays/__init__.py index e0650fcb3fa..decad8be0a0 100644 --- a/addons/project_timesheet_holidays/__init__.py +++ b/addons/project_timesheet_holidays/__init__.py @@ -9,9 +9,10 @@ def post_init(env): be sure the internal project/task of res.company are set. (Since timesheet_generate field is true by default, those 2 fields are required on the leave type). """ - for hr_leave_type in env['hr.leave.type'].search([('timesheet_generate', '=', True), ('timesheet_project_id', '=', False)]): - company = hr_leave_type.company_id or env.company + for hr_leave_type in env['hr.leave.type'].search([('timesheet_generate', '=', True), ('company_id', '!=', False), ('timesheet_project_id', '=', False)]): + project_id = hr_leave_type.company_id.internal_project_id + default_task_id = hr_leave_type.company_id.leave_timesheet_task_id hr_leave_type.write({ - 'timesheet_project_id': company.internal_project_id.id, - 'timesheet_task_id': company.leave_timesheet_task_id.id, + 'timesheet_project_id': project_id.id, + 'timesheet_task_id': default_task_id.id if default_task_id and default_task_id.project_id == project_id else False, })