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