diff --git a/hr_employee_medical_examination/README.rst b/hr_employee_medical_examination/README.rst new file mode 100644 index 00000000000..bfc6a1253c2 --- /dev/null +++ b/hr_employee_medical_examination/README.rst @@ -0,0 +1,91 @@ +=============================== +Hr Employee Medical Examination +=============================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github + :target: https://github.com/OCA/hr/tree/11.0/hr_employee_medical_examination + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-11-0/hr-11-0-hr_employee_medical_examination + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/116/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds information about employee's medical examinations + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +This module adds a wizard to generate medical examinations for employees and an +action to see them. + +The idea is to generate all the examinations using the wizard and then manage them +individually even though the usage of the wizard is not mandatory. + +For generating the medical examinations: + +#. Go to the menu *Employees > Medical Examinations > Generate Medical Examinations*. +#. Select a name and the employees and generate it. + +To see all the medical examinations: + +#. Go to the menu *Employees > Medical Examinations > View Medical Examinations*. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Jaime Arroyo + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/hr `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_employee_medical_examination/__init__.py b/hr_employee_medical_examination/__init__.py new file mode 100644 index 00000000000..aee8895e7a3 --- /dev/null +++ b/hr_employee_medical_examination/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/hr_employee_medical_examination/__manifest__.py b/hr_employee_medical_examination/__manifest__.py new file mode 100644 index 00000000000..f3bf2d67394 --- /dev/null +++ b/hr_employee_medical_examination/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Hr Employee Medical Examination', + 'summary': """ + Adds information about employee's medical examinations""", + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Creu Blanca,Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/hr', + 'depends': [ + 'hr', + ], + 'data': [ + 'views/hr_employee_medical_examination_views.xml', + 'wizards/wizard_generate_medical_examination.xml', + 'views/hr_employee_views.xml', + 'security/ir.model.access.csv', + 'security/hr_employee_medical_examination_security.xml', + ], +} diff --git a/hr_employee_medical_examination/i18n/es.po b/hr_employee_medical_examination/i18n/es.po new file mode 100644 index 00000000000..d1d1526861d --- /dev/null +++ b/hr_employee_medical_examination/i18n/es.po @@ -0,0 +1,220 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_medical_examination +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-10-15 14:31+0000\n" +"Last-Translator: Jaime Arroyo \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: hr_employee_medical_examination +#: code:addons/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py:52 +#, python-format +msgid "%s on %s" +msgstr "%s en %s" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Filters:" +msgstr "Filtros:" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_can_see_examinations_button +msgid "Can See Examinations Button" +msgstr "Puede ver el Boton de Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +msgid "Cancelled" +msgstr "Cancelado" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_create_uid +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_create_date +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_create_date +msgid "Created on" +msgstr "Creado el" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_department_id +msgid "Department" +msgstr "Departamento" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_display_name +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +msgid "Done" +msgstr "Hecho" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_hr_employee +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_employee_id +msgid "Employee" +msgstr "Empleado" + +#. module: hr_employee_medical_examination +#: model:ir.actions.act_window,name:hr_employee_medical_examination.hr_employee_medical_examination_act_window +msgid "Employee Medical Examinations" +msgstr "Exámenes Médicos de Empleados" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_form_view +msgid "Employee's Name" +msgstr "Nombre del Empleado" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_employee_ids +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Employees" +msgstr "Empleados" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_date +msgid "Examination Date" +msgstr "Fecha de examinación" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_name +msgid "Examination Name" +msgstr "Nombre del Exámen Médico" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,result:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Failed" +msgstr "Suspendido" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Generate" +msgstr "Generar" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Generate Medical Examination" +msgstr "Generar Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: code:addons/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py:40 +#: model:ir.actions.act_window,name:hr_employee_medical_examination.wizard_generate_medical_examination_act_window +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_generate_wizard +#, python-format +msgid "Generate Medical Examinations" +msgstr "Generar Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_hr_employee_medical_examination +msgid "Hr Employee Medical Examination" +msgstr "Hr Employee Medical Examination" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_id +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_id +msgid "ID" +msgstr "ID" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_job_id +msgid "Job" +msgstr "Puesto de Trabajo" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination___last_update +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination___last_update +msgid "Last Modified on" +msgstr "Última Modificación" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_write_uid +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_write_uid +msgid "Last Updated by" +msgstr "Actualizado por última vez por" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_write_date +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_write_date +msgid "Last Updated on" +msgstr "Última Actualización en" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_ids +msgid "Medical Examination" +msgstr "Exámen Médico" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_count +msgid "Medical Examination Count" +msgstr "Número de Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: model:ir.actions.act_window,name:hr_employee_medical_examination.act_medical_examination_employee +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_menu +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.view_employee_form +msgid "Medical Examinations" +msgstr "Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_name +msgid "Name" +msgstr "Nombre" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,result:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Passed" +msgstr "Aprobado" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Pending" +msgstr "Pendiente" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Populate" +msgstr "Buscar" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_result +msgid "Result" +msgstr "Resultado" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_state +msgid "State" +msgstr "Estado" + +#. module: hr_employee_medical_examination +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_all +msgid "View Medical Examinations" +msgstr "Ver Exámenes Médicos" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_wizard_generate_medical_examination +msgid "wizard.generate.medical.examination" +msgstr "wizardgenerate.medical.examination" diff --git a/hr_employee_medical_examination/i18n/hr_employee_medical_examination.pot b/hr_employee_medical_examination/i18n/hr_employee_medical_examination.pot new file mode 100644 index 00000000000..08e504c03e3 --- /dev/null +++ b/hr_employee_medical_examination/i18n/hr_employee_medical_examination.pot @@ -0,0 +1,218 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_medical_examination +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_employee_medical_examination +#: code:addons/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py:52 +#, python-format +msgid "%s on %s" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Filters:" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_can_see_examinations_button +msgid "Can See Examinations Button" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Cancel" +msgstr "" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +msgid "Cancelled" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_create_uid +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_create_uid +msgid "Created by" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_create_date +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_create_date +msgid "Created on" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_department_id +msgid "Department" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_display_name +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_display_name +msgid "Display Name" +msgstr "" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +msgid "Done" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_hr_employee +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_employee_id +msgid "Employee" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.actions.act_window,name:hr_employee_medical_examination.hr_employee_medical_examination_act_window +msgid "Employee Medical Examinations" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_form_view +msgid "Employee's Name" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_employee_ids +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Employees" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_date +msgid "Examination Date" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_name +msgid "Examination Name" +msgstr "" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,result:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Failed" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Generate" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Generate Medical Examination" +msgstr "" + +#. module: hr_employee_medical_examination +#: code:addons/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py:40 +#: model:ir.actions.act_window,name:hr_employee_medical_examination.wizard_generate_medical_examination_act_window +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_generate_wizard +#, python-format +msgid "Generate Medical Examinations" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_hr_employee_medical_examination +msgid "Hr Employee Medical Examination" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_id +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_id +msgid "ID" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_job_id +msgid "Job" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination___last_update +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination___last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_write_uid +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_write_date +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_wizard_generate_medical_examination_write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_ids +msgid "Medical Examination" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_count +msgid "Medical Examination Count" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.actions.act_window,name:hr_employee_medical_examination.act_medical_examination_employee +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_menu +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.view_employee_form +msgid "Medical Examinations" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_name +msgid "Name" +msgstr "" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,result:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Passed" +msgstr "" + +#. module: hr_employee_medical_examination +#: selection:hr.employee.medical.examination,state:0 +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.hr_employee_medical_examination_search_view +msgid "Pending" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.view,arch_db:hr_employee_medical_examination.wizard_generate_medical_examination_form_view +msgid "Populate" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_result +msgid "Result" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model.fields,field_description:hr_employee_medical_examination.field_hr_employee_medical_examination_state +msgid "State" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.ui.menu,name:hr_employee_medical_examination.hr_employee_medical_examination_all +msgid "View Medical Examinations" +msgstr "" + +#. module: hr_employee_medical_examination +#: model:ir.model,name:hr_employee_medical_examination.model_wizard_generate_medical_examination +msgid "wizard.generate.medical.examination" +msgstr "" + diff --git a/hr_employee_medical_examination/models/__init__.py b/hr_employee_medical_examination/models/__init__.py new file mode 100644 index 00000000000..89956e06f43 --- /dev/null +++ b/hr_employee_medical_examination/models/__init__.py @@ -0,0 +1,2 @@ +from . import hr_employee_medical_examination +from . import hr_employee diff --git a/hr_employee_medical_examination/models/hr_employee.py b/hr_employee_medical_examination/models/hr_employee.py new file mode 100644 index 00000000000..f1717f38626 --- /dev/null +++ b/hr_employee_medical_examination/models/hr_employee.py @@ -0,0 +1,37 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class HrEmployee(models.Model): + + _inherit = 'hr.employee' + + medical_examination_ids = fields.One2many( + comodel_name='hr.employee.medical.examination', + inverse_name='employee_id', + ) + + medical_examination_count = fields.Integer( + compute='_compute_medical_examination_count', + ) + + can_see_examinations_button = fields.Boolean( + compute='_compute_can_see_examinations_button', + ) + + @api.depends('medical_examination_ids') + def _compute_medical_examination_count(self): + for record in self: + record.medical_examination_count = len( + record.medical_examination_ids + ) + + @api.multi + def _compute_can_see_examinations_button(self): + for record in self: + record.can_see_examinations_button = ( + self.env.uid == record.user_id.id or + self.env.user.has_group('hr.group_hr_manager') + ) diff --git a/hr_employee_medical_examination/models/hr_employee_medical_examination.py b/hr_employee_medical_examination/models/hr_employee_medical_examination.py new file mode 100644 index 00000000000..a1f002668e4 --- /dev/null +++ b/hr_employee_medical_examination/models/hr_employee_medical_examination.py @@ -0,0 +1,42 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HrEmployeeMedicalExamination(models.Model): + + _name = 'hr.employee.medical.examination' + _description = 'Hr Employee Medical Examination' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char( + required=True, + track_visibility='onchange', + ) + + state = fields.Selection( + selection=[ + ('pending', 'Pending'), + ('done', 'Done'), + ('cancelled', 'Cancelled'), + ], default='pending', + track_visibility='onchange', + ) + + date = fields.Date( + string='Examination Date', + track_visibility='onchange', + ) + result = fields.Selection( + selection=[ + ('failed', 'Failed'), + ('passed', 'Passed'), + ], + track_visibility='onchange', + ) + + employee_id = fields.Many2one( + 'hr.employee', string='Employee', required=True, + track_visibility='onchange', + ) diff --git a/hr_employee_medical_examination/readme/CONTRIBUTORS.rst b/hr_employee_medical_examination/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..e59d51045c8 --- /dev/null +++ b/hr_employee_medical_examination/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Jaime Arroyo diff --git a/hr_employee_medical_examination/readme/DESCRIPTION.rst b/hr_employee_medical_examination/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..2728c228e1b --- /dev/null +++ b/hr_employee_medical_examination/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Adds information about employee's medical examinations diff --git a/hr_employee_medical_examination/readme/USAGE.rst b/hr_employee_medical_examination/readme/USAGE.rst new file mode 100644 index 00000000000..62cdafad200 --- /dev/null +++ b/hr_employee_medical_examination/readme/USAGE.rst @@ -0,0 +1,14 @@ +This module adds a wizard to generate medical examinations for employees and an +action to see them. + +The idea is to generate all the examinations using the wizard and then manage them +individually even though the usage of the wizard is not mandatory. + +For generating the medical examinations: + +#. Go to the menu *Employees > Medical Examinations > Generate Medical Examinations*. +#. Select a name and the employees and generate it. + +To see all the medical examinations: + +#. Go to the menu *Employees > Medical Examinations > View Medical Examinations*. diff --git a/hr_employee_medical_examination/security/hr_employee_medical_examination_security.xml b/hr_employee_medical_examination/security/hr_employee_medical_examination_security.xml new file mode 100644 index 00000000000..28d90a8fd91 --- /dev/null +++ b/hr_employee_medical_examination/security/hr_employee_medical_examination_security.xml @@ -0,0 +1,17 @@ + + + + + Base User: Only own examinations + + [('employee_id.user_id','=',user.id)] + + + + Manager: All Examinations + + [(1,'=',1)] + + + + diff --git a/hr_employee_medical_examination/security/ir.model.access.csv b/hr_employee_medical_examination/security/ir.model.access.csv new file mode 100644 index 00000000000..ca9b2ea26f4 --- /dev/null +++ b/hr_employee_medical_examination/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_hr_employee_medical_examination,access_hr_employee_medical_examination,model_hr_employee_medical_examination,base.group_user,1,0,0,0 +access_hr_employee_medical_examination_manager,access_hr_employee_medical_examination_manager,model_hr_employee_medical_examination,hr.group_hr_manager,1,1,1,1 diff --git a/hr_employee_medical_examination/static/description/icon.png b/hr_employee_medical_examination/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/hr_employee_medical_examination/static/description/icon.png differ diff --git a/hr_employee_medical_examination/static/description/index.html b/hr_employee_medical_examination/static/description/index.html new file mode 100644 index 00000000000..a57e2c9c8ab --- /dev/null +++ b/hr_employee_medical_examination/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Hr Employee Medical Examination + + + +
+

Hr Employee Medical Examination

+ + +

Beta License: AGPL-3 OCA/hr Translate me on Weblate Try me on Runbot

+

Adds information about employee’s medical examinations

+

Table of contents

+ +
+

Usage

+

This module adds a wizard to generate medical examinations for employees and an +action to see them.

+

The idea is to generate all the examinations using the wizard and then manage them +individually even though the usage of the wizard is not mandatory.

+

For generating the medical examinations:

+
    +
  1. Go to the menu Employees > Medical Examinations > Generate Medical Examinations.
  2. +
  3. Select a name and the employees and generate it.
  4. +
+

To see all the medical examinations:

+
    +
  1. Go to the menu Employees > Medical Examinations > View Medical Examinations.
  2. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Creu Blanca
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/hr project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/hr_employee_medical_examination/tests/__init__.py b/hr_employee_medical_examination/tests/__init__.py new file mode 100644 index 00000000000..f6289510d46 --- /dev/null +++ b/hr_employee_medical_examination/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_employee_medical_examination diff --git a/hr_employee_medical_examination/tests/test_hr_employee_medical_examination.py b/hr_employee_medical_examination/tests/test_hr_employee_medical_examination.py new file mode 100644 index 00000000000..cfce0bb9ac6 --- /dev/null +++ b/hr_employee_medical_examination/tests/test_hr_employee_medical_examination.py @@ -0,0 +1,52 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestHrEmployeeMedicalExamination(TransactionCase): + + def setUp(self): + super(TestHrEmployeeMedicalExamination, self).setUp() + + self.department = self.env['hr.department'].create({ + 'name': 'Department' + }) + + self.job = self.env['hr.job'].create({ + 'name': 'Job' + }) + + self.employee1 = self.env['hr.employee'].create({ + 'name': 'Employee 1', + 'job_id': self.job.id, + 'department_id': self.department.id, + }) + + self.examination = self.env['hr.employee.medical.examination'].create({ + 'name': 'Dummy Exam to test domain', + 'employee_id': self.employee1.id, + }) + + self.wizard = self.env['wizard.generate.medical.examination'].create({ + 'name': 'Examination 2019' + }) + + def test_hr_employee_medical_examination(self): + self.assertFalse(self.wizard.employee_ids) + self.wizard.write({ + 'job_id': self.job.id, + 'department_id': self.department.id, + }) + self.wizard.populate() + self.assertEqual(len(self.wizard.employee_ids), 1) + result = self.wizard.create_medical_examinations() + + examination = self.env['hr.employee.medical.examination'].search( + result['domain'] + ) + self.assertTrue(examination) + self.assertEqual(1, len(examination)) + self.assertEqual(examination.name, 'Examination 2019 on Employee 1') + self.assertEqual(self.employee1.medical_examination_count, 2) + self.assertTrue(self.employee1.can_see_examinations_button) diff --git a/hr_employee_medical_examination/views/hr_employee_medical_examination_views.xml b/hr_employee_medical_examination/views/hr_employee_medical_examination_views.xml new file mode 100644 index 00000000000..8da0dfba74a --- /dev/null +++ b/hr_employee_medical_examination/views/hr_employee_medical_examination_views.xml @@ -0,0 +1,93 @@ + + + + + + + hr.employee.medical.examination.form (in + hr_employee_medical_examination) + + hr.employee.medical.examination + +
+
+ +
+ +
+
+ + + + + + + + + +
+
+ + + +
+
+
+
+ + + hr.employee.medical.examination.search (in + hr_employee_medical_examination) + + hr.employee.medical.examination + + + + + + + + + + + + + + + hr.employee.medical.examination.tree (in + hr_employee_medical_examination) + + hr.employee.medical.examination + + + + + + + + + + + Employee Medical Examinations + hr.employee.medical.examination + tree,form + + + + + + +
diff --git a/hr_employee_medical_examination/views/hr_employee_views.xml b/hr_employee_medical_examination/views/hr_employee_views.xml new file mode 100644 index 00000000000..72d788f5483 --- /dev/null +++ b/hr_employee_medical_examination/views/hr_employee_views.xml @@ -0,0 +1,35 @@ + + + + + + Medical Examinations + hr.employee.medical.examination + form + tree,form + { + 'search_default_employee_id': [active_id], + 'default_employee_id': active_id, + } + + + + hr.employee.form (in hr_employee_medical_examination) + hr.employee + + +
+ + +
+
+
+ +
diff --git a/hr_employee_medical_examination/wizards/__init__.py b/hr_employee_medical_examination/wizards/__init__.py new file mode 100644 index 00000000000..5aa1e085ee4 --- /dev/null +++ b/hr_employee_medical_examination/wizards/__init__.py @@ -0,0 +1 @@ +from . import wizard_generate_medical_examination diff --git a/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py b/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py new file mode 100644 index 00000000000..66fd8a66d1c --- /dev/null +++ b/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.py @@ -0,0 +1,71 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ + + +class WizardGenerateMedicalExamination(models.TransientModel): + + _name = 'wizard.generate.medical.examination' + + name = fields.Char(required=True, string='Examination Name') + + employee_ids = fields.Many2many( + comodel_name='hr.employee', + string='Employees' + ) + department_id = fields.Many2one( + comodel_name='hr.department', + string='Department', + ) + job_id = fields.Many2one( + comodel_name='hr.job', + string='Job', + ) + + def _prepare_employee_domain(self): + res = [] + if self.job_id: + res.append(('job_id', '=', self.job_id.id)) + if self.department_id: + res.append(('department_id', 'child_of', self.department_id.id)) + return res + + @api.multi + def populate(self): + domain = self._prepare_employee_domain() + employees = self.env['hr.employee'].search(domain) + self.employee_ids = employees + action = { + 'name': _('Generate Medical Examinations'), + 'type': 'ir.actions.act_window', + 'res_model': 'wizard.generate.medical.examination', + 'view_mode': 'form', + 'target': 'new', + 'res_id': self.id, + 'context': self._context, + } + return action + + def _create_examination_vals(self, employee): + return { + 'name': _('%s on %s') % (self.name, employee.name), + 'employee_id': employee.id, + } + + @api.multi + def create_medical_examinations(self): + exams = self.env['hr.employee.medical.examination'] + for form in self: + for employee in form.employee_ids: + exams |= self.env['hr.employee.medical.examination'].create( + form._create_examination_vals(employee) + ) + action = self.env.ref( + 'hr_employee_medical_examination.hr_employee' + '_medical_examination_act_window', + False + ) + result = action.read()[0] + result['domain'] = [('id', 'in', exams.ids)] + return result diff --git a/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.xml b/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.xml new file mode 100644 index 00000000000..79e3817bd37 --- /dev/null +++ b/hr_employee_medical_examination/wizards/wizard_generate_medical_examination.xml @@ -0,0 +1,68 @@ + + + + + + + wizard.generate.medical.examination.form (in hr_employee_medical_examination) + wizard.generate.medical.examination + +
+ + + + + +

Filters:

+ + + + + + + + +
+
+ + + + + + + + + + + + +
+
+
+
+
+ + + Generate Medical Examinations + wizard.generate.medical.examination + form + new + + + + +