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>
19 lines
933 B
Python
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,
|
|
})
|