From 08a5bf761fffcc05b633149de4d9021251d4f587 Mon Sep 17 00:00:00 2001 From: Philippe Wauthy Date: Wed, 19 Jan 2022 16:32:46 +0000 Subject: [PATCH] [IMP] hr_*, sms: improve ux Reorder smart buttons on the hr_employee to have them in the following order: 1. Documents 2. Holiday status 3. Time Off 4. Planning 5. Timesheets 6. Equipments 7. Cars 8. Contracts 9. Appraisal 10. Work Entries 11. Payroll 12. Attendance 13. Extra Hours - Log in the chatter the name of the plan that has been started via the button "Launch Plan" - When on mobile, open the Time Off Calendar in month view - When sending a sms without any message, only display Message once in the invalid fields - Avoid the sms-help info disappearing when clicking on it and there are characters in the body of the message - Update the tooltip of phone number in the send sms wizard - Avoid the employee name to be displayed on two lines on mobile if the name is too long. Reduce the font size instead task-2735679 closes odoo/odoo#83745 Related: odoo/enterprise#23886 Signed-off-by: Kevin Baptiste --- addons/hr/__manifest__.py | 4 + addons/hr/models/hr_employee.py | 6 +- addons/hr/static/src/js/work_permit_upload.js | 10 ++ addons/hr/static/src/scss/hr.scss | 5 + .../hr/static/src/xml/work_permit_upload.xml | 8 ++ addons/hr/views/hr_employee_views.xml | 134 +++++++++--------- addons/hr/wizard/hr_plan_wizard.py | 5 +- .../hr_attendance/views/hr_employee_view.xml | 27 +--- .../hr_contract/views/hr_contract_views.xml | 1 + addons/hr_fleet/views/employee_views.xml | 1 + .../time_off_calendar_views.js | 11 ++ addons/hr_holidays/views/hr_views.xml | 7 +- .../views/hr_employee_views.xml | 15 +- addons/hr_maintenance/views/hr_views.xml | 1 + .../static/src/xml/resume_templates.xml | 5 +- addons/hr_skills/views/hr_views.xml | 3 +- addons/hr_timesheet/views/hr_views.xml | 5 +- .../hr_work_entry/views/hr_employee_views.xml | 1 + addons/sms/static/src/js/fields_sms_widget.js | 1 - addons/sms/wizard/sms_composer.py | 2 +- addons/sms/wizard/sms_composer_views.xml | 5 +- 21 files changed, 134 insertions(+), 123 deletions(-) create mode 100644 addons/hr/static/src/js/work_permit_upload.js create mode 100644 addons/hr/static/src/xml/work_permit_upload.xml diff --git a/addons/hr/__manifest__.py b/addons/hr/__manifest__.py index 93a3cdc8197..a243ee70e60 100644 --- a/addons/hr/__manifest__.py +++ b/addons/hr/__manifest__.py @@ -60,8 +60,12 @@ 'hr/static/src/js/m2x_avatar_employee.js', 'hr/static/src/js/standalone_m2o_avatar_employee.js', 'hr/static/src/js/user_menu.js', + 'hr/static/src/js/work_permit_upload.js', 'hr/static/src/models/*/*.js', ], + 'web.assets_qweb': [ + 'hr/static/src/xml/*.xml', + ], 'web.qunit_suite_tests': [ 'hr/static/tests/helpers/*.js', 'hr/static/tests/m2x_avatar_employee_tests.js', diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index fcc0fc7a4d9..857a3927f32 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -66,7 +66,7 @@ class HrEmployeePrivate(models.Model): ], string='Marital Status', groups="hr.group_hr_user", default='single', tracking=True) spouse_complete_name = fields.Char(string="Spouse Complete Name", groups="hr.group_hr_user", tracking=True) spouse_birthdate = fields.Date(string="Spouse Birthdate", groups="hr.group_hr_user", tracking=True) - children = fields.Integer(string='Number of Children', groups="hr.group_hr_user", tracking=True) + children = fields.Integer(string='Number of Dependant Children', groups="hr.group_hr_user", tracking=True) place_of_birth = fields.Char('Place of Birth', groups="hr.group_hr_user", tracking=True) country_of_birth = fields.Many2one('res.country', string="Country of Birth", groups="hr.group_hr_user", tracking=True) birthday = fields.Date('Date of Birth', groups="hr.group_hr_user", tracking=True) @@ -96,8 +96,8 @@ class HrEmployeePrivate(models.Model): ], 'Certificate Level', default='other', groups="hr.group_hr_user", tracking=True) study_field = fields.Char("Field of Study", groups="hr.group_hr_user", tracking=True) study_school = fields.Char("School", groups="hr.group_hr_user", tracking=True) - emergency_contact = fields.Char("Emergency Contact", groups="hr.group_hr_user", tracking=True) - emergency_phone = fields.Char("Emergency Phone", groups="hr.group_hr_user", tracking=True) + emergency_contact = fields.Char("Contact Name", groups="hr.group_hr_user", tracking=True) + emergency_phone = fields.Char("Contact Phone", groups="hr.group_hr_user", tracking=True) km_home_work = fields.Integer(string="Home-Work Distance", groups="hr.group_hr_user", tracking=True) job_id = fields.Many2one(tracking=True) diff --git a/addons/hr/static/src/js/work_permit_upload.js b/addons/hr/static/src/js/work_permit_upload.js new file mode 100644 index 00000000000..2d065c4371d --- /dev/null +++ b/addons/hr/static/src/js/work_permit_upload.js @@ -0,0 +1,10 @@ +/** @odoo-module **/ + +import basicFields from 'web.basic_fields'; +import fieldRegistry from 'web.field_registry'; + +const WorkPermitUpload = basicFields.FieldBinaryFile.extend({ + template: "hr.WorkPermitUpload", +}); + +fieldRegistry.add('work_permit_upload', WorkPermitUpload); diff --git a/addons/hr/static/src/scss/hr.scss b/addons/hr/static/src/scss/hr.scss index d114757d5e7..4fdb4e01f5e 100644 --- a/addons/hr/static/src/scss/hr.scss +++ b/addons/hr/static/src/scss/hr.scss @@ -58,3 +58,8 @@ .o_form_label.o_hr_form_label { cursor: default; } + +.hr_presence { + font-size: 0.75em; + vertical-align: middle; +} diff --git a/addons/hr/static/src/xml/work_permit_upload.xml b/addons/hr/static/src/xml/work_permit_upload.xml new file mode 100644 index 00000000000..28a18a93b37 --- /dev/null +++ b/addons/hr/static/src/xml/work_permit_upload.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml index b4d71a8cb6f..7078a75a1b1 100644 --- a/addons/hr/views/hr_employee_views.xml +++ b/addons/hr/views/hr_employee_views.xml @@ -53,37 +53,20 @@
-

- + + + +
+

@@ -135,55 +118,72 @@ - - - + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/addons/hr/wizard/hr_plan_wizard.py b/addons/hr/wizard/hr_plan_wizard.py index 92f0293c0c3..c83dde1e3c8 100644 --- a/addons/hr/wizard/hr_plan_wizard.py +++ b/addons/hr/wizard/hr_plan_wizard.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +from odoo import fields, models, _ class HrPlanWizard(models.TransientModel): @@ -33,6 +33,9 @@ class HrPlanWizard(models.TransientModel): date_deadline=date_deadline ) + for plan in self: + plan.employee_id.message_post(body=_('The plan %s has been started', plan.plan_id.name)) + return { 'type': 'ir.actions.act_window', 'res_model': 'hr.employee', diff --git a/addons/hr_attendance/views/hr_employee_view.xml b/addons/hr_attendance/views/hr_employee_view.xml index 416e65a60ff..ca6c9c41b56 100644 --- a/addons/hr_attendance/views/hr_employee_view.xml +++ b/addons/hr_attendance/views/hr_employee_view.xml @@ -4,39 +4,16 @@ hr.employee hr.employee - 20 + 110 - + {'invisible': ['|', '|', ('user_id', '=', False), ('hr_presence_state', '=', 'absent'), ('attendance_state', '=', 'checked_in')]} - -

+
diff --git a/addons/hr_holidays_attendance/views/hr_employee_views.xml b/addons/hr_holidays_attendance/views/hr_employee_views.xml index 8d7af3d44d5..53af147b958 100644 --- a/addons/hr_holidays_attendance/views/hr_employee_views.xml +++ b/addons/hr_holidays_attendance/views/hr_employee_views.xml @@ -35,6 +35,7 @@ hr.holidays.attendance.employee.view.form.inherit hr.employee + - + diff --git a/addons/hr_work_entry/views/hr_employee_views.xml b/addons/hr_work_entry/views/hr_employee_views.xml index c97f1f2e22a..614f8fc1a55 100644 --- a/addons/hr_work_entry/views/hr_employee_views.xml +++ b/addons/hr_work_entry/views/hr_employee_views.xml @@ -4,6 +4,7 @@ hr.employee.view.form.inherit.hr.work.entry hr.employee +
- - - + +