diff --git a/addons/hr/models/res_config_settings.py b/addons/hr/models/res_config_settings.py index bdc865cf3af..562e9328115 100644 --- a/addons/hr/models/res_config_settings.py +++ b/addons/hr/models/res_config_settings.py @@ -13,7 +13,7 @@ class ResConfigSettings(models.TransientModel): related='company_id.resource_calendar_id', readonly=False) module_hr_presence = fields.Boolean(string="Advanced Presence Control") module_hr_skills = fields.Boolean(string="Skills Management") - module_hr_homeworking = fields.Boolean(string="Homeworking") + module_hr_homeworking = fields.Boolean(string="Remote Work") hr_presence_control_login = fields.Boolean(string="Based on user status in system", config_parameter='hr.hr_presence_control_login') hr_presence_control_email = fields.Boolean(string="Based on number of emails sent", config_parameter='hr_presence.hr_presence_control_email') hr_presence_control_ip = fields.Boolean(string="Based on IP Address", config_parameter='hr_presence.hr_presence_control_ip') diff --git a/addons/hr/views/res_config_settings_views.xml b/addons/hr/views/res_config_settings_views.xml index c9b21d5490c..443db0317ad 100644 --- a/addons/hr/views/res_config_settings_views.xml +++ b/addons/hr/views/res_config_settings_views.xml @@ -43,6 +43,9 @@ + + + diff --git a/addons/hr_homeworking/__manifest__.py b/addons/hr_homeworking/__manifest__.py index 7856dd7f016..784dc21f788 100644 --- a/addons/hr_homeworking/__manifest__.py +++ b/addons/hr_homeworking/__manifest__.py @@ -2,9 +2,9 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. { - 'name': 'Homeworking', + 'name': 'Remote Work', 'version': '1.0', - 'category': 'Human Resources/Homeworking', + 'category': 'Human Resources/Remote Work', 'depends': ['hr', 'calendar'], 'data': [ 'security/security.xml', diff --git a/addons/hr_homeworking/models/__init__.py b/addons/hr_homeworking/models/__init__.py index f4dc23efd03..0230ca54e6d 100644 --- a/addons/hr_homeworking/models/__init__.py +++ b/addons/hr_homeworking/models/__init__.py @@ -4,3 +4,4 @@ from . import hr_employee from . import res_partner from . import res_users from . import hr_homeworking +from . import hr_work_location diff --git a/addons/hr_homeworking/models/hr_employee.py b/addons/hr_homeworking/models/hr_employee.py index 65111460824..95f208e4f7c 100644 --- a/addons/hr_homeworking/models/hr_employee.py +++ b/addons/hr_homeworking/models/hr_employee.py @@ -13,7 +13,7 @@ class HrEmployeeBase(models.AbstractModel): @api.model def _default_location_id(self): - return self.env.ref('hr.home_work_office') + return self.env.ref('hr.home_work_office', raise_if_not_found=False) monday_location_id = fields.Many2one('hr.work.location', string='Monday', default=lambda self: self._default_location_id()) tuesday_location_id = fields.Many2one('hr.work.location', string='Tuesday', default=lambda self: self._default_location_id()) @@ -81,9 +81,9 @@ class HrEmployeeBase(models.AbstractModel): def _get_worklocation(self, start_date, end_date): work_locations_by_employee = defaultdict(dict) for employee in self: - work_locations_by_employee[employee.id]["user_id"] = employee["user_id"].id + work_locations_by_employee[employee.id]["user_id"] = employee.user_id.id work_locations_by_employee[employee.id]["employee_id"] = employee.id - work_locations_by_employee[employee.id]["partner_id"] = employee["user_partner_id"].id + work_locations_by_employee[employee.id]["partner_id"] = employee.user_partner_id.id work_locations_by_employee[employee.id]["employee_name"] = employee.name for day in DAYS: diff --git a/addons/hr_homeworking/models/hr_work_location.py b/addons/hr_homeworking/models/hr_work_location.py new file mode 100644 index 00000000000..49e6f104207 --- /dev/null +++ b/addons/hr_homeworking/models/hr_work_location.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import _, api, models +from odoo.exceptions import UserError +from odoo.addons.hr_homeworking.models.hr_homeworking import DAYS + +class WorkLocation(models.Model): + _inherit = "hr.work.location" + + @api.ondelete(at_uninstall=False) + def _unlink_except_used_by_employee(self): + domains = [(day, 'in', self.ids) for day in DAYS] + employee_uses_location = self.env['hr.employee'].search_count(domains, limit=1) + if employee_uses_location: + raise UserError(_("You cannot delete locations that are being used by your employees")) + exceptions_using_location = self.env['hr.employee.location'].search(('work_location_id', 'in', self.ids)) + exceptions_using_location.unlink() diff --git a/addons/hr_homeworking/views/hr_employee_views.xml b/addons/hr_homeworking/views/hr_employee_views.xml index b14bf6e924d..a950689bd0b 100644 --- a/addons/hr_homeworking/views/hr_employee_views.xml +++ b/addons/hr_homeworking/views/hr_employee_views.xml @@ -20,7 +20,7 @@ 1 - + Specify your default work location for each day of the week. This schedule will repeat itself each week. diff --git a/addons/hr_homeworking/views/res_users.xml b/addons/hr_homeworking/views/res_users.xml index 2c5c8ca70a2..ea7e9b0adfb 100644 --- a/addons/hr_homeworking/views/res_users.xml +++ b/addons/hr_homeworking/views/res_users.xml @@ -7,7 +7,7 @@ - + Specify your default work location for each day of the week. This schedule will repeat itself each week. diff --git a/addons/hr_homeworking/wizard/homework_location_wizard.py b/addons/hr_homeworking/wizard/homework_location_wizard.py index c62924e9a03..b710094a7b9 100644 --- a/addons/hr_homeworking/wizard/homework_location_wizard.py +++ b/addons/hr_homeworking/wizard/homework_location_wizard.py @@ -2,7 +2,6 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import fields, models, api -from odoo.addons.resource.models.utils import string_to_datetime class HomeworkLocationWizard(models.TransientModel): @@ -32,7 +31,7 @@ class HomeworkLocationWizard(models.TransientModel): ('date', '=', self.date), ('employee_id', '=', employee_id.id) ]) - date_week_name = string_to_datetime(self.date).date().strftime("%A").lower() # convert Tuesday to tuesday + date_week_name = self.day_week_string.lower() # convert Tuesday to tuesday default_location_for_current_date = f"{date_week_name}_location_id" if self.weekly: # delete any exceptions on the current date