diff --git a/hr_course/README.rst b/hr_course/README.rst new file mode 100644 index 00000000000..ccb381b0ed2 --- /dev/null +++ b/hr_course/README.rst @@ -0,0 +1,92 @@ +========= +HR Course +========= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:afb58c2dc404fff2cfb92338804f77298b639869c6b05a8f95c6a94a9870bdd3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/17.0/hr_course + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-17-0/hr-17-0-hr_course + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/hr&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows your to manage employee's training courses, course +dates and all its validation process. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To create a Course go to Employees -> Courses. + +To create a Training Schedule go to Employees -> Courses Schedule. + +Fill the information and click assign attendees to continue. Assign them +and then start the course session. + +One it has finished you must enter the results and finish the course +session. + +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 to smash 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 +------------ + +- Enric Tobella +- Jaime Arroyo +- Manish Bohra + +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_course/__init__.py b/hr_course/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/hr_course/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_course/__manifest__.py b/hr_course/__manifest__.py new file mode 100644 index 00000000000..a6bc38aab4f --- /dev/null +++ b/hr_course/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "HR Course", + "summary": """ + This module allows your to manage employee's training courses""", + "version": "17.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/hr", + "depends": ["hr", "mail"], + "data": [ + "security/course_security.xml", + "security/ir.model.access.csv", + "views/hr_course_category_views.xml", + "views/hr_course_views.xml", + "views/hr_course_schedule_views.xml", + "views/hr_employee_views.xml", + ], + "demo": ["demo/hr_course.xml"], +} diff --git a/hr_course/demo/hr_course.xml b/hr_course/demo/hr_course.xml new file mode 100644 index 00000000000..606cd3b8e86 --- /dev/null +++ b/hr_course/demo/hr_course.xml @@ -0,0 +1,33 @@ + + + + Department IT + + + Languages + + + Qualified Security Assessor Training (QSA) + + + + Internal Security Assessor Training (ISA) + + + + QSA October + + 2021-10-21 + 2021-10-21 + 100 + + + + QSA November + + 2021-11-29 + 2021-11-29 + 100 + + + diff --git a/hr_course/i18n/de.po b/hr_course/i18n/de.po new file mode 100644 index 00000000000..73b5286781f --- /dev/null +++ b/hr_course/i18n/de.po @@ -0,0 +1,511 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: de\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" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__absent +msgid "Absent" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_attachment_count +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__authorized_by +msgid "Authorized By" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Back to Draft" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancel Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancelled Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__category_id +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Category" +msgstr "" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__content +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Content" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_id +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_attendee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_attendee_ids +msgid "Course Attendee" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.open_view_course_category_form +#: model:ir.ui.menu,name:hr_course.menu_view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Course Categories" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_schedule +#: model:ir.model.fields,field_description:hr_course.field_hr_course__course_schedule_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_schedule_id +msgid "Course Schedule" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course +#: model:ir.actions.act_window,name:hr_course.action_view_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__courses_ids +#: model:ir.ui.menu,name:hr_course.menu_hr_course +#: model:ir.ui.menu,name:hr_course.menu_hr_course_courses +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.view_hr_employee_form +msgid "Courses" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course_schedule +#: model:ir.ui.menu,name:hr_course.menu_hr_course_schedule +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Courses Schedule" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_uid +msgid "Created by" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_date +msgid "Created on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_employee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__employee_id +msgid "Employee" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_end +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__end_date +msgid "End Date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_follower_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_partner_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__has_message +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__has_message +msgid "Has Message" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__id +msgid "ID" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Internal notes" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_is_follower +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_ids +msgid "Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__name +msgid "Name" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__note +msgid "Note" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__count_courses +msgid "Number of courses" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__objective +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Objective" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Pass everybody" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence Time" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__result +msgid "Result" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Schedules" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_start +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__start_date +msgid "Start Date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__state +msgid "State" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "The start date cannot be later than the end date." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "" +"You should set a course back to draft only if you cancelled it by mistake or " +"if some of its information is incorrect. Do you want to continue?" +msgstr "" diff --git a/hr_course/i18n/es.po b/hr_course/i18n/es.po new file mode 100644 index 00000000000..47f85cf0832 --- /dev/null +++ b/hr_course/i18n/es.po @@ -0,0 +1,565 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-03-21 09:30+0000\n" +"PO-Revision-Date: 2023-09-05 21:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__absent +msgid "Absent" +msgstr "Ausente" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction +msgid "Action Needed" +msgstr "Acción necesaria" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "Activo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "Asignar asistentes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_attachment_count +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_attachment_count +msgid "Attachment Count" +msgstr "Recuento de archivos adjuntos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "Asistente" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "Asistentes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__authorized_by +msgid "Authorized By" +msgstr "Autorizado por" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Back to Draft" +msgstr "Devolver a borrador" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancel Course" +msgstr "Cancelar curso" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__cancelled +msgid "Cancelled" +msgstr "Cancelado" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancelled Course" +msgstr "Curso cancelado" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__category_id +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Category" +msgstr "Categoría" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "Esta categoría ya existe !" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "Comentario" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "Curso finalizado" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "Finalizado" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__content +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Content" +msgstr "Contenido" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "Convocatoria" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_id +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course" +msgstr "Curso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_attendee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_attendee_ids +msgid "Course Attendee" +msgstr "Asistente al curso" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.open_view_course_category_form +#: model:ir.ui.menu,name:hr_course.menu_view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Course Categories" +msgstr "Tipos de cursos" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "Tipo de curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "Coste del curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "Nombre del curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "Resultado del curso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_schedule +#: model:ir.model.fields,field_description:hr_course.field_hr_course__course_schedule_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_schedule_id +msgid "Course Schedule" +msgstr "Calendario de cursos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "Tipo del curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "Nombre del curso" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course +#: model:ir.actions.act_window,name:hr_course.action_view_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__courses_ids +#: model:ir.ui.menu,name:hr_course.menu_hr_course +#: model:ir.ui.menu,name:hr_course.menu_hr_course_courses +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.view_hr_employee_form +msgid "Courses" +msgstr "Cursos" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course_schedule +#: model:ir.ui.menu,name:hr_course.menu_hr_course_schedule +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Courses Schedule" +msgstr "Calendario de cursos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "Moneda" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "Borrador" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "Curso en borrador" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_employee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__employee_id +msgid "Employee" +msgstr "Empleado" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "Empleados eliminados de este curso:

%s" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_end +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__end_date +msgid "End Date" +msgstr "Fecha final" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "Criterios de evaluación" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "Criterios de evaluación" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "Suspendido" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_follower_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_partner_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Socios)" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__has_message +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__has_message +msgid "Has Message" +msgstr "Tiene mensaje" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "Tiene permanencia" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está marcado, los nuevos mensajes requieren su atención." + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está marcado, algunos mensajes tienen un error de entrega." + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "En progreso" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "En corrección" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "Instructor" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Internal notes" +msgstr "Notas internas" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_is_follower +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_is_follower +msgid "Is Follower" +msgstr "Es Seguidor" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_main_attachment_id +msgid "Main Attachment" +msgstr "Archivo adjunto principal" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error +msgid "Message Delivery error" +msgstr "Error de entrega de mensajes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__name +msgid "Name" +msgstr "Nombre" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__note +msgid "Note" +msgstr "Nota" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de acciones" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__count_courses +msgid "Number of courses" +msgstr "Número de cursos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren una acción" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__objective +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Objective" +msgstr "Objetivo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Pass everybody" +msgstr "Todos aprobados" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "Aprobado" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "Pendiente" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence Time" +msgstr "Tiempo de permanencia" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "Lugar" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "Corregir curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__result +msgid "Result" +msgstr "Resultado" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Schedules" +msgstr "Horarios" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "Empezar curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_start +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__start_date +msgid "Start Date" +msgstr "Fecha de inicio" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__state +msgid "State" +msgstr "Estado" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "The start date cannot be later than the end date." +msgstr "La fecha de inicio no puede ser posterior a la de fin." + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "Empresa de formación" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "Esperando asistentes" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "No se puede finalizar el curso con resultados pendientes" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "" +"You should set a course back to draft only if you cancelled it by mistake or " +"if some of its information is incorrect. Do you want to continue?" +msgstr "" +"Solo deberías devolver un curso a borrador si se ha cancelado por error o si " +"alguna de su información es incorrecta. Quieres continuar?" + +#~ msgid "SMS Delivery error" +#~ msgstr "Error de entrega de SMS" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Número de mensajes que requieren una acción" + +#~ msgid "Authorized by" +#~ msgstr "Autorizado por" + +#, python-format +#~ msgid "Employees removed from this course:

" +#~ msgstr "Empleados eliminados de este curso:

" + +#~ msgid "End date" +#~ msgstr "Fecha final" + +#~ msgid "Followers (Channels)" +#~ msgstr "Seguidores (Canales)" + +#~ msgid "Number of unread messages" +#~ msgstr "Número de mensajes no leídos" + +#~ msgid "Permanence time" +#~ msgstr "Tiempo de permanencia" + +#~ msgid "Start date" +#~ msgstr "Fecha de inicio" + +#~ msgid "Unread Messages" +#~ msgstr "Mensajes sin leer" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Contador de mensajes no leídos" + +#~ msgid "Website Messages" +#~ msgstr "Mensajes del sitio web" + +#~ msgid "Website communication history" +#~ msgstr "Historial de comunicación del sitio web" + +#~ msgid "hr.course" +#~ msgstr "hr.course" + +#~ msgid "hr.course.attendee" +#~ msgstr "hr.course.attendee" + +#~ msgid "hr.course.result" +#~ msgstr "hr.course.result" diff --git a/hr_course/i18n/hr_course.pot b/hr_course/i18n/hr_course.pot new file mode 100644 index 00000000000..e4e8429f82e --- /dev/null +++ b/hr_course/i18n/hr_course.pot @@ -0,0 +1,510 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__absent +msgid "Absent" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_attachment_count +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__authorized_by +msgid "Authorized By" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Back to Draft" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancel Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancelled Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__category_id +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Category" +msgstr "" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__content +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Content" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_id +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_attendee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_attendee_ids +msgid "Course Attendee" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.open_view_course_category_form +#: model:ir.ui.menu,name:hr_course.menu_view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Course Categories" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_schedule +#: model:ir.model.fields,field_description:hr_course.field_hr_course__course_schedule_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_schedule_id +msgid "Course Schedule" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course +#: model:ir.actions.act_window,name:hr_course.action_view_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__courses_ids +#: model:ir.ui.menu,name:hr_course.menu_hr_course +#: model:ir.ui.menu,name:hr_course.menu_hr_course_courses +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.view_hr_employee_form +msgid "Courses" +msgstr "" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course_schedule +#: model:ir.ui.menu,name:hr_course.menu_hr_course_schedule +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Courses Schedule" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_uid +msgid "Created by" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_date +msgid "Created on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_employee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__employee_id +msgid "Employee" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_end +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__end_date +msgid "End Date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_follower_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_partner_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__has_message +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__has_message +msgid "Has Message" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__id +msgid "ID" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Internal notes" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_is_follower +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_ids +msgid "Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__name +msgid "Name" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__note +msgid "Note" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__count_courses +msgid "Number of courses" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__objective +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Objective" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Pass everybody" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence Time" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__result +msgid "Result" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Schedules" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_start +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__start_date +msgid "Start Date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__state +msgid "State" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "The start date cannot be later than the end date." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "" +"You should set a course back to draft only if you cancelled it by mistake or" +" if some of its information is incorrect. Do you want to continue?" +msgstr "" diff --git a/hr_course/i18n/it.po b/hr_course/i18n/it.po new file mode 100644 index 00000000000..0945a97c640 --- /dev/null +++ b/hr_course/i18n/it.po @@ -0,0 +1,521 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-04 18:38+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\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 4.17\n" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__absent +msgid "Absent" +msgstr "Assente" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "Attivo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "Assegna partecipanti" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_attachment_count +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "Partecipante" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "Partecipanti" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__authorized_by +msgid "Authorized By" +msgstr "Autorizzato da" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Back to Draft" +msgstr "Ritorna a bozza" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancel Course" +msgstr "Annulla corso" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__cancelled +msgid "Cancelled" +msgstr "Annullato" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancelled Course" +msgstr "Corso annullato" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__category_id +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Category" +msgstr "Categoria" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "Categoria già esistente !" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "Commento" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "Completa corso" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "Completato" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__content +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Content" +msgstr "Contenuto" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "Convocazione" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_id +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course" +msgstr "Corso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_attendee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_attendee_ids +msgid "Course Attendee" +msgstr "Partecipante al corso" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.open_view_course_category_form +#: model:ir.ui.menu,name:hr_course.menu_view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_course_category_search +msgid "Course Categories" +msgstr "Categorie corso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "Categoria corso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "Costo corso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "Nome corso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "Risultati corso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_schedule +#: model:ir.model.fields,field_description:hr_course.field_hr_course__course_schedule_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_schedule_id +msgid "Course Schedule" +msgstr "Calendario corso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "Categoria corso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "Nome corso" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course +#: model:ir.actions.act_window,name:hr_course.action_view_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__courses_ids +#: model:ir.ui.menu,name:hr_course.menu_hr_course +#: model:ir.ui.menu,name:hr_course.menu_hr_course_courses +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +#: model_terms:ir.ui.view,arch_db:hr_course.view_hr_employee_form +msgid "Courses" +msgstr "Corsi" + +#. module: hr_course +#: model:ir.actions.act_window,name:hr_course.action_hr_course_schedule +#: model:ir.ui.menu,name:hr_course.menu_hr_course_schedule +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Courses Schedule" +msgstr "Calendario corsi" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__create_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__display_name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "Bozza" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "Corso bozza" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_employee +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__employee_id +msgid "Employee" +msgstr "Dipendente" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "Dipendenti rimossi da questo corso:

%s" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_end +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__end_date +msgid "End Date" +msgstr "Data fine" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "Criteri di valutazione" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "Criteri di valutazione" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "Non superato" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_follower_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_partner_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__has_message +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "Ha frequenza" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "In corso" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "In validazione" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "Docente" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Internal notes" +msgstr "Note interne" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_is_follower +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category____last_update +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_uid +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__write_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_main_attachment_id +msgid "Main Attachment" +msgstr "Allegato principale" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__name +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__name +msgid "Name" +msgstr "Nome" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__note +msgid "Note" +msgstr "Nota" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__count_courses +msgid "Number of courses" +msgstr "Numero di corsi" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_needaction_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_has_error_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__objective +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Objective" +msgstr "Obbiettivo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Pass everybody" +msgstr "Promuovi tutti" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "Superato" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "In attesa" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence Time" +msgstr "Tempo frequenza" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "Luogo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "Valuta il corso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__result +msgid "Result" +msgstr "Risultato" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Schedules" +msgstr "Calendari" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "Inizia corso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_start +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__start_date +msgid "Start Date" +msgstr "Data inizio" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__state +msgid "State" +msgstr "Stato" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "The start date cannot be later than the end date." +msgstr "La data di inizio non può essere successiva alla data di fine." + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "Azienda formatrice" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "Partecipanti in attesa" + +#. module: hr_course +#. odoo-python +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "Non puoi completare il corso con risultati in sospeso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "" +"You should set a course back to draft only if you cancelled it by mistake or " +"if some of its information is incorrect. Do you want to continue?" +msgstr "" +"Si dovrebbe reimpostare un corso come bozza solo se lo si è cancellato per " +"errore o se alcune sue informazioni non sono corrette. Continuare?" + +#~ msgid "SMS Delivery error" +#~ msgstr "Errore consegna SMS" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Numero di messaggi che richiedono un'azione" diff --git a/hr_course/models/__init__.py b/hr_course/models/__init__.py new file mode 100644 index 00000000000..40b990b6c6d --- /dev/null +++ b/hr_course/models/__init__.py @@ -0,0 +1,3 @@ +from . import hr_employee +from . import hr_course +from . import hr_course_schedule diff --git a/hr_course/models/hr_course.py b/hr_course/models/hr_course.py new file mode 100644 index 00000000000..7856f2df0e7 --- /dev/null +++ b/hr_course/models/hr_course.py @@ -0,0 +1,67 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class HRCourseAttendee(models.Model): + _name = "hr.course.attendee" + _description = "Course Attendee" + + course_schedule_id = fields.Many2one( + "hr.course.schedule", ondelete="cascade", readonly=True, required=True + ) + name = fields.Char(related="course_schedule_id.name", readonly=True) + employee_id = fields.Many2one("hr.employee", readonly=True) + course_start = fields.Date(related="course_schedule_id.start_date", readonly=True) + course_end = fields.Date(related="course_schedule_id.end_date", readonly=True) + state = fields.Selection(related="course_schedule_id.state", readonly=True) + result = fields.Selection( + [ + ("passed", "Passed"), + ("failed", "Failed"), + ("absent", "Absent"), + ("pending", "Pending"), + ], + default="pending", + ) + active = fields.Boolean(default=True, readonly=True) + + def _remove_from_course(self): + return [(1, self.id, {"active": False})] + + +class HrCourse(models.Model): + _name = "hr.course" + _description = "Course" + _inherit = "mail.thread" + + name = fields.Char(required=True, tracking=True) + category_id = fields.Many2one( + "hr.course.category", string="Category", required=True + ) + + permanence = fields.Boolean(string="Has Permanence", default=False, tracking=True) + permanence_time = fields.Char(tracking=True) + + content = fields.Html() + objective = fields.Html() + + evaluation_criteria = fields.Html() + + course_schedule_ids = fields.One2many( + "hr.course.schedule", inverse_name="course_id" + ) + + @api.onchange("permanence") + def _onchange_permanence(self): + self.permanence_time = False + + +class HRCourseCategory(models.Model): + _name = "hr.course.category" + _description = "Course Category" + + name = fields.Char(string="Course category", required=True) + + _sql_constraints = [("name_uniq", "unique (name)", "Category already exists !")] diff --git a/hr_course/models/hr_course_schedule.py b/hr_course/models/hr_course_schedule.py new file mode 100644 index 00000000000..bfa8bb35c7a --- /dev/null +++ b/hr_course/models/hr_course_schedule.py @@ -0,0 +1,137 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class HrCourseSchedule(models.Model): + _name = "hr.course.schedule" + _description = "Course Schedule" + _inherit = "mail.thread" + + name = fields.Char(required=True, tracking=True) + course_id = fields.Many2one("hr.course", string="Course", required=True) + + start_date = fields.Date( + tracking=True, + ) + end_date = fields.Date( + tracking=True, + ) + currency_id = fields.Many2one( + "res.currency", + string="Currency", + default=lambda self: self.env.user.company_id.currency_id, + ) + cost = fields.Monetary(string="Course Cost", required=True, tracking=True) + authorized_by = fields.Many2one( + comodel_name="hr.employee", + required=True, + tracking=True, + ) + state = fields.Selection( + [ + ("draft", "Draft"), + ("waiting_attendees", "Waiting attendees"), + ("in_progress", "In progress"), + ("in_validation", "In validation"), + ("completed", "Completed"), + ("cancelled", "Cancelled"), + ], + required=True, + readonly=True, + default="draft", + tracking=True, + ) + + comment = fields.Text() + training_company_id = fields.Many2one("res.partner", string="Training company") + instructor_ids = fields.Many2many("res.partner", string="Instructor") + place = fields.Char() + + attendant_ids = fields.Many2many("hr.employee") + course_attendee_ids = fields.One2many( + "hr.course.attendee", inverse_name="course_schedule_id" + ) + note = fields.Text() + + @api.constrains("start_date", "end_date") + def _check_start_end_dates(self): + self.ensure_one() + if self.start_date and self.end_date and (self.start_date > self.end_date): + raise ValidationError( + _("The start date cannot be later than the end date.") + ) + + def all_passed(self): + for attendee in self.course_attendee_ids: + attendee.result = "passed" + + def _draft2waiting_values(self): + return {"state": "waiting_attendees"} + + def _attendee_values(self, attendee): + return {"employee_id": attendee.id, "course_schedule_id": self.id} + + def _waiting2inprogress_values(self): + attendants = [] + employee_attendants = self.course_attendee_ids.mapped("employee_id") + for attendee in self.attendant_ids.filtered( + lambda r: r not in employee_attendants + ): + attendants.append((0, 0, self._attendee_values(attendee))) + deleted_attendees = "" + for course_attendee in self.course_attendee_ids.filtered( + lambda r: r.employee_id not in self.attendant_ids + ): + attendants += course_attendee._remove_from_course() + deleted_attendees += "- %s

" % course_attendee.employee_id.name + if deleted_attendees != "": + message = ( + _("Employees removed from this course:

%s") % deleted_attendees + ) + self.message_post(body=message) + return {"state": "in_progress", "course_attendee_ids": attendants} + + def _inprogress2validation_values(self): + return {"state": "in_validation"} + + def _validation2complete_values(self): + return {"state": "completed"} + + def _back2draft_values(self): + return {"state": "draft"} + + def _cancel_course_values(self): + return {"state": "cancelled"} + + def draft2waiting(self): + for record in self: + record.write(record._draft2waiting_values()) + + def waiting2inprogress(self): + for record in self: + record.write(record._waiting2inprogress_values()) + + def inprogress2validation(self): + for record in self: + record.write(record._inprogress2validation_values()) + + def validation2complete(self): + for record in self: + if self.course_attendee_ids.filtered( + lambda r: r.result == "pending" and r.active + ): + raise ValidationError( + _("You cannot complete the course with pending results") + ) + else: + record.write(record._validation2complete_values()) + + def back2draft(self): + for record in self: + record.write(record._back2draft_values()) + + def cancel_course(self): + for record in self: + record.write(record._cancel_course_values()) diff --git a/hr_course/models/hr_employee.py b/hr_course/models/hr_employee.py new file mode 100644 index 00000000000..9b0526cb541 --- /dev/null +++ b/hr_course/models/hr_employee.py @@ -0,0 +1,27 @@ +from odoo import api, fields, models + + +class HrEmployee(models.Model): + _inherit = "hr.employee" + + count_courses = fields.Integer( + "Number of courses", compute="_compute_count_courses" + ) + + courses_ids = fields.One2many( + "hr.course.attendee", + "employee_id", + string="Courses", + readonly=True, + ) + + @api.depends("courses_ids") + def _compute_count_courses(self): + for r in self: + r.count_courses = len(r.courses_ids) + + def action_view_course(self): + action = self.env.ref("hr_course.action_view_course") + result = action.read()[0] + result["domain"] = [("employee_id", "=", self.id)] + return result diff --git a/hr_course/pyproject.toml b/hr_course/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/hr_course/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/hr_course/readme/CONTRIBUTORS.md b/hr_course/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..50be9560b60 --- /dev/null +++ b/hr_course/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- Enric Tobella \<\> +- Jaime Arroyo \<\> +- Manish Bohra diff --git a/hr_course/readme/DESCRIPTION.md b/hr_course/readme/DESCRIPTION.md new file mode 100644 index 00000000000..a46defc90f6 --- /dev/null +++ b/hr_course/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module allows your to manage employee's training courses, course +dates and all its validation process. diff --git a/hr_course/readme/USAGE.md b/hr_course/readme/USAGE.md new file mode 100644 index 00000000000..2e926b21a3f --- /dev/null +++ b/hr_course/readme/USAGE.md @@ -0,0 +1,9 @@ +To create a Course go to Employees -\> Courses. + +To create a Training Schedule go to Employees -\> Courses Schedule. + +Fill the information and click assign attendees to continue. Assign them +and then start the course session. + +One it has finished you must enter the results and finish the course +session. diff --git a/hr_course/security/course_security.xml b/hr_course/security/course_security.xml new file mode 100644 index 00000000000..c454be80819 --- /dev/null +++ b/hr_course/security/course_security.xml @@ -0,0 +1,35 @@ + + + + hr.employee.course.rule + + [('attendant_ids', 'in', user.employee_ids.ids)] + + + + + hr.employee.course.rule + + [(1, '=', 1)] + + + + + hr.employee.attendee.course.rule + + [('employee_id', 'in', user.employee_ids.ids)] + + + + + hr.employee.attendee.course.rule + + [(1, '=', 1)] + + + + diff --git a/hr_course/security/ir.model.access.csv b/hr_course/security/ir.model.access.csv new file mode 100644 index 00000000000..f383bda61a9 --- /dev/null +++ b/hr_course/security/ir.model.access.csv @@ -0,0 +1,9 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_hr_course,access_hr_course,model_hr_course,base.group_user,1,0,0,0 +access_hr_course_manager,access_hr_course_manager,model_hr_course,hr.group_hr_manager,1,1,1,1 +access_hr_course_schedule,access_hr_course_schedule,model_hr_course_schedule,base.group_user,1,0,0,0 +access_hr_course_schedule_manager,access_hr_course_schedule_manager,model_hr_course_schedule,hr.group_hr_manager,1,1,1,1 +access_hr_course_attendee,access_hr_course_attendee,model_hr_course_attendee,base.group_user,1,0,0,0 +access_hr_course_attendee_manager,access_hr_course_attendee_manager,model_hr_course_attendee,hr.group_hr_manager,1,1,1,1 +access_hr_course_category,access_hr_course_category,model_hr_course_category,base.group_user,1,0,0,0 +access_hr_course_category_manager,access_hr_course_category_manager,model_hr_course_category,hr.group_hr_manager,1,1,1,1 diff --git a/hr_course/static/description/icon.png b/hr_course/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/hr_course/static/description/icon.png differ diff --git a/hr_course/static/description/index.html b/hr_course/static/description/index.html new file mode 100644 index 00000000000..fc97d2a9cdd --- /dev/null +++ b/hr_course/static/description/index.html @@ -0,0 +1,433 @@ + + + + + + +HR Course + + + +
+

HR Course

+ + +

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

+

This module allows your to manage employee’s training courses, course +dates and all its validation process.

+

Table of contents

+ +
+

Usage

+

To create a Course go to Employees -> Courses.

+

To create a Training Schedule go to Employees -> Courses Schedule.

+

Fill the information and click assign attendees to continue. Assign them +and then start the course session.

+

One it has finished you must enter the results and finish the course +session.

+
+
+

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 to smash 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

+ +
+
+

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_course/tests/__init__.py b/hr_course/tests/__init__.py new file mode 100644 index 00000000000..208b53bcdbb --- /dev/null +++ b/hr_course/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_course diff --git a/hr_course/tests/test_hr_course.py b/hr_course/tests/test_hr_course.py new file mode 100644 index 00000000000..b692a1cfb51 --- /dev/null +++ b/hr_course/tests/test_hr_course.py @@ -0,0 +1,77 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import odoo.tests.common as common +from odoo.exceptions import ValidationError + + +class TestHrCourse(common.TransactionCase): + def setUp(self): + super().setUp() + self.course_categ = self.env["hr.course.category"].create( + {"name": "Category 1"} + ) + self.employee1 = self.env["hr.employee"].create({"name": "Employee 1"}) + self.employee2 = self.env["hr.employee"].create({"name": "Employee 2"}) + self.course_id = self.env["hr.course"].create( + { + "name": "Course name", + "category_id": self.course_categ.id, + "permanence": True, + "permanence_time": "1 month", + } + ) + self.course_schedule_id = self.env["hr.course.schedule"].create( + { + "name": "Convocatory", + "course_id": self.course_id.id, + "cost": 100, + "authorized_by": self.employee1.id, + "start_date": "2019-02-15", + "end_date": "2019-02-20", + } + ) + + def test_hr_course(self): + self.course_id.permanence = False + self.course_id._onchange_permanence() + self.assertFalse(self.course_id.permanence_time) + + def test_hr_course_schedule(self): + with self.assertRaises(ValidationError): + self.course_schedule_id.write({"end_date": "2019-02-10"}) + + self.assertEqual(self.course_schedule_id.state, "draft") + self.course_schedule_id.cancel_course() + self.assertEqual(self.course_schedule_id.state, "cancelled") + self.course_schedule_id.back2draft() + + self.course_schedule_id.draft2waiting() + self.assertEqual(self.course_schedule_id.state, "waiting_attendees") + self.course_schedule_id.attendant_ids = [ + (6, 0, [self.employee1.id, self.employee2.id]) + ] + self.assertTrue(self.course_schedule_id.attendant_ids) + self.assertEqual(len(self.course_schedule_id.attendant_ids), 2) + + self.course_schedule_id.waiting2inprogress() + self.assertEqual(self.course_schedule_id.state, "in_progress") + self.assertEqual(len(self.course_schedule_id.course_attendee_ids), 2) + self.course_schedule_id.attendant_ids = [(2, self.employee2.id, 0)] + self.course_schedule_id.waiting2inprogress() + self.assertEqual(len(self.course_schedule_id.attendant_ids), 1) + self.assertEqual(len(self.course_schedule_id.course_attendee_ids), 1) + self.employee1._compute_count_courses() + self.assertEqual(self.employee1.count_courses, 1) + self.employee1.action_view_course() + + self.course_schedule_id.inprogress2validation() + self.assertEqual(self.course_schedule_id.state, "in_validation") + with self.assertRaises(ValidationError): + self.course_schedule_id.validation2complete() + self.course_schedule_id.all_passed() + self.assertEqual( + self.course_schedule_id.course_attendee_ids[0].result, "passed" + ) + self.course_schedule_id.validation2complete() + self.assertEqual(self.course_schedule_id.state, "completed") diff --git a/hr_course/views/hr_course_category_views.xml b/hr_course/views/hr_course_category_views.xml new file mode 100644 index 00000000000..be2b913c642 --- /dev/null +++ b/hr_course/views/hr_course_category_views.xml @@ -0,0 +1,44 @@ + + + + hr.course.category.form + hr.course.category + +
+ + + +
+
+
+ + hr.course.category.search + hr.course.category + + + + + + + + hr.course.category.list + hr.course.category + + + + + + + + + Course Categories + hr.course.category + tree,form + + +
diff --git a/hr_course/views/hr_course_schedule_views.xml b/hr_course/views/hr_course_schedule_views.xml new file mode 100644 index 00000000000..9c3378f3a14 --- /dev/null +++ b/hr_course/views/hr_course_schedule_views.xml @@ -0,0 +1,232 @@ + + + + + hr.course.schedule.form + hr.course.schedule + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ + + +
+
+
+ + +
+
+
+
+ + hr.course.schedule.search + hr.course.schedule + + + + + + + + + hr.course.schedule.tree + hr.course.schedule + + + + + + + + + + + hr.course.attendee.tree + hr.course.attendee + 30 + + + + + + + + + hr.course.attendee.form + hr.course.attendee + +
+ + + + + + + + + + +
+
+
+ + Courses Schedule + hr.course.schedule + tree,form + + +
diff --git a/hr_course/views/hr_course_views.xml b/hr_course/views/hr_course_views.xml new file mode 100644 index 00000000000..4045db58c40 --- /dev/null +++ b/hr_course/views/hr_course_views.xml @@ -0,0 +1,88 @@ + + + + + hr.course.form + hr.course + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + hr.course.tree + hr.course + + + + + + + + + + + Courses + hr.course + tree,form + + + +
diff --git a/hr_course/views/hr_employee_views.xml b/hr_course/views/hr_employee_views.xml new file mode 100644 index 00000000000..2ca31690022 --- /dev/null +++ b/hr_course/views/hr_employee_views.xml @@ -0,0 +1,52 @@ + + + + hr.employee.course.form + hr.employee + + +
+ +
+
+
+ + hr.course.attendee.tree.employee + hr.course.attendee + 100 + + + + + + + + + + + + Courses + hr.course.attendee + tree,form + + +