This change allows uninstallation of hr_timesheet from the configuration of Project. Previously, attempting to disable the Timesheets feature from the configuration of Project resulted in a user error that requested the user to first remove tasks in projects that were linked to analytic accounts. This was caused by the removal of demo data during the uninstallation of hr_timesheet, which attempted to unlink analytic accounts before unlinking the projects that were referencing those accounts. The order in which demo data are removed during uninstallation of a module is currently not fixed. This change avoids the problem by instead removing the explicit creation of analytic accounts as demo data. Furthermore, hr_timesheet would be immediately re-installed upon uninstallation through project_timesheet_synchro and project_timesheet_holidays. Disabling those modules along with hr_timesheet fixes this. Task 2339016 closes odoo/odoo#60134 X-original-commit: 43db576b7f0efed563ee597ab087e4d7ef5c74d9 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
39 lines
2.1 KiB
Python
39 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
module_project_timesheet_synchro = fields.Boolean("Awesome Timesheet",
|
|
compute="_compute_timesheet_modules", store=True, readonly=False)
|
|
module_project_timesheet_holidays = fields.Boolean("Record Time Off",
|
|
compute="_compute_timesheet_modules", store=True, readonly=False)
|
|
project_time_mode_id = fields.Many2one(
|
|
'uom.uom', related='company_id.project_time_mode_id', string='Project Time Unit', readonly=False,
|
|
help="This will set the unit of measure used in projects and tasks.\n"
|
|
"If you use the timesheet linked to projects, don't "
|
|
"forget to setup the right unit of measure in your employees.")
|
|
timesheet_encode_uom_id = fields.Many2one('uom.uom', string="Encoding Unit",
|
|
related='company_id.timesheet_encode_uom_id', readonly=False,
|
|
help="""This will set the unit of measure used to encode timesheet. This will simply provide tools
|
|
and widgets to help the encoding. All reporting will still be expressed in hours (default value).""")
|
|
timesheet_min_duration = fields.Integer('Minimal duration', default=15, config_parameter='hr_timesheet.timesheet_min_duration')
|
|
timesheet_rounding = fields.Integer('Rounding up', default=15, config_parameter='hr_timesheet.timesheet_rounding')
|
|
is_encode_uom_days = fields.Boolean(compute='_compute_is_encode_uom_days')
|
|
|
|
@api.depends('timesheet_encode_uom_id')
|
|
def _compute_is_encode_uom_days(self):
|
|
product_uom_day = self.env.ref('uom.product_uom_day')
|
|
for settings in self:
|
|
settings.is_encode_uom_days = settings.timesheet_encode_uom_id == product_uom_day
|
|
|
|
@api.depends('module_hr_timesheet')
|
|
def _compute_timesheet_modules(self):
|
|
self.filtered(lambda config: not config.module_hr_timesheet).update({
|
|
'module_project_timesheet_synchro': False,
|
|
'module_project_timesheet_holidays': False,
|
|
})
|