diff options
| author | Dominik Rubo <dru@odoo.com> | 2020-09-17 06:59:04 +0000 |
|---|---|---|
| committer | Dominik Rubo <dru@odoo.com> | 2020-10-07 08:54:38 +0000 |
| commit | 43db576b7f0efed563ee597ab087e4d7ef5c74d9 (patch) | |
| tree | 38a32d7760800648753a217f10dc49f4dd258399 /addons/hr_timesheet | |
| parent | 6b04dbcd4204a75d6bd68fc0b3010a2297779b32 (diff) | |
[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#58759
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons/hr_timesheet')
| -rw-r--r-- | addons/hr_timesheet/data/hr_timesheet_demo.xml | 16 | ||||
| -rw-r--r-- | addons/hr_timesheet/models/res_config_settings.py | 13 |
2 files changed, 13 insertions, 16 deletions
diff --git a/addons/hr_timesheet/data/hr_timesheet_demo.xml b/addons/hr_timesheet/data/hr_timesheet_demo.xml index 643a064cc68..38d737381e6 100644 --- a/addons/hr_timesheet/data/hr_timesheet_demo.xml +++ b/addons/hr_timesheet/data/hr_timesheet_demo.xml @@ -17,24 +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="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"/> + <field name="allow_timesheets" eval="True"/> </record> <record id="project.project_project_2" model="project.project"> - <field name="analytic_account_id" ref="account_analytic_account_project_2"/> + <field name="allow_timesheets" eval="True"/> </record> <!-- Timesheet Lines --> diff --git a/addons/hr_timesheet/models/res_config_settings.py b/addons/hr_timesheet/models/res_config_settings.py index 68ed5bd2df1..51f2fe5eb8a 100644 --- a/addons/hr_timesheet/models/res_config_settings.py +++ b/addons/hr_timesheet/models/res_config_settings.py @@ -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, + }) |
