Files
odoo_source/addons/project_timesheet_holidays/__init__.py
T
Abderraouf Ghrissi (abgh) e8824a3a55 [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) <xbo@odoo.com>
2023-11-22 13:24:50 +00:00

19 lines
933 B
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
def post_init(env):
""" Set the timesheet project and task on existing leave type. Do it in post_init to
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), ('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': project_id.id,
'timesheet_task_id': default_task_id.id if default_task_id and default_task_id.project_id == project_id else False,
})