[FIX] hr_timesheet, project: let user disable Timesheets in config
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>
This commit is contained in:
@@ -17,26 +17,12 @@
|
||||
</record>
|
||||
|
||||
<!-- Projects -->
|
||||
<record id="account_analytic_account_project_1" model="account.analytic.account">
|
||||
<field name="name">Office Design</field>
|
||||
<field name="code">OD</field>
|
||||
<field name="active" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="project.project_project_1" model="project.project">
|
||||
<field name="allow_timesheets" eval="True"/>
|
||||
<field name="analytic_account_id" ref="account_analytic_account_project_1"/>
|
||||
</record>
|
||||
|
||||
<record id="account_analytic_account_project_2" model="account.analytic.account">
|
||||
<field name="name">Research & Development Project</field>
|
||||
<field name="code">RD</field>
|
||||
<field name="active" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="project.project_project_2" model="project.project">
|
||||
<field name="allow_timesheets" eval="True"/>
|
||||
<field name="analytic_account_id" ref="account_analytic_account_project_2"/>
|
||||
</record>
|
||||
|
||||
<!-- Timesheet Lines -->
|
||||
|
||||
@@ -7,8 +7,10 @@ from odoo import api, fields, models
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
module_project_timesheet_synchro = fields.Boolean("Awesome Timesheet")
|
||||
module_project_timesheet_holidays = fields.Boolean("Record Time Off")
|
||||
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"
|
||||
@@ -27,3 +29,10 @@ class ResConfigSettings(models.TransientModel):
|
||||
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,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user