From 272482d54969b585a9a7e786a8a07f2a3551b6cf Mon Sep 17 00:00:00 2001 From: expert Date: Mon, 24 Jun 2024 14:24:41 +0300 Subject: [PATCH] Add odex25_survey --- README.md | 2 +- odex25_survey/hr_course/README.rst | 91 +++ odex25_survey/hr_course/__init__.py | 2 + odex25_survey/hr_course/__manifest__.py | 28 + odex25_survey/hr_course/data/ir_cron_data.xml | 17 + odex25_survey/hr_course/data/mail_channel.xml | 6 + .../hr_course/data/mail_template.xml | 20 + odex25_survey/hr_course/demo/hr_course.xml | 33 + odex25_survey/hr_course/i18n/de.po | 711 +++++++++++++++++ odex25_survey/hr_course/i18n/es.po | 744 +++++++++++++++++ odex25_survey/hr_course/i18n/fr.po | 747 ++++++++++++++++++ odex25_survey/hr_course/i18n/it.po | 733 +++++++++++++++++ odex25_survey/hr_course/i18n/pt.po | 718 +++++++++++++++++ odex25_survey/hr_course/i18n/pt_BR.po | 713 +++++++++++++++++ .../14.0.2.0.0/noupdate_changes.xml | 9 + .../migrations/14.0.2.0.0/post-migration.py | 41 + .../migrations/14.0.2.0.0/pre-migration.py | 20 + odex25_survey/hr_course/models/__init__.py | 7 + odex25_survey/hr_course/models/hr_course.py | 31 + .../hr_course/models/hr_course_attendee.py | 40 + .../hr_course/models/hr_course_category.py | 13 + .../hr_course/models/hr_course_schedule.py | 206 +++++ odex25_survey/hr_course/models/hr_employee.py | 28 + odex25_survey/hr_course/models/res_company.py | 19 + .../hr_course/models/res_config_settings.py | 15 + .../hr_course/readme/CONTRIBUTORS.rst | 3 + .../hr_course/readme/DESCRIPTION.rst | 2 + odex25_survey/hr_course/readme/USAGE.rst | 8 + .../hr_course/security/course_security.xml | 35 + .../hr_course/security/ir.model.access.csv | 9 + .../hr_course/static/description/icon.png | Bin 0 -> 9455 bytes .../hr_course/static/description/index.html | 433 ++++++++++ odex25_survey/hr_course/tests/__init__.py | 1 + .../hr_course/tests/test_hr_course.py | 77 ++ .../views/hr_course_category_views.xml | 44 ++ .../views/hr_course_schedule_views.xml | 224 ++++++ .../hr_course/views/hr_course_views.xml | 96 +++ .../hr_course/views/hr_employee_views.xml | 52 ++ odex25_survey/hr_course/views/hr_settings.xml | 29 + odex25_survey/hr_course_survey/README.rst | 94 +++ odex25_survey/hr_course_survey/__init__.py | 1 + .../hr_course_survey/__manifest__.py | 21 + odex25_survey/hr_course_survey/data/mail.xml | 41 + odex25_survey/hr_course_survey/i18n/ca_ES.po | 131 +++ odex25_survey/hr_course_survey/i18n/es.po | 227 ++++++ odex25_survey/hr_course_survey/i18n/es_PA.po | 131 +++ odex25_survey/hr_course_survey/i18n/it.po | 164 ++++ .../hr_course_survey/models/__init__.py | 4 + .../hr_course_survey/models/hr_course.py | 14 + .../models/hr_course_attendee.py | 80 ++ .../models/hr_course_schedule.py | 22 + .../models/survey_user_input.py | 29 + .../hr_course_survey/readme/CONTRIBUTORS.rst | 2 + .../hr_course_survey/readme/DESCRIPTION.rst | 1 + .../hr_course_survey/readme/USAGE.rst | 13 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 433 ++++++++++ .../hr_course_survey/tests/__init__.py | 1 + .../hr_course_survey/tests/test_hr_course.py | 125 +++ .../hr_course_survey/views/hr_course.xml | 15 + .../views/hr_course_attendee.xml | 26 + .../views/hr_course_schedule.xml | 6 + odex25_survey/kw_survey_attachment/README.rst | 1 + .../kw_survey_attachment/__init__.py | 1 + .../kw_survey_attachment/__manifest__.py | 30 + .../migrations/14.0.1.0.5/post-migrate.py | 15 + .../kw_survey_attachment/models/__init__.py | 1 + .../kw_survey_attachment/models/survey.py | 75 ++ .../static/description/1.png | Bin 0 -> 41210 bytes .../static/description/2.png | Bin 0 -> 17923 bytes .../static/description/3.png | Bin 0 -> 40678 bytes .../static/description/cover.png | Bin 0 -> 28020 bytes .../static/description/icon.png | Bin 0 -> 10424 bytes .../static/description/index.html | 58 ++ .../static/src/js/survey_form.js | 90 +++ .../kw_survey_attachment/views/assets.xml | 8 + .../views/survey_template_view.xml | 41 + .../views/survey_user_input_line_view.xml | 31 + .../views/survey_view.xml | 21 + .../survey_conditional_question/README.rst | 70 ++ .../survey_conditional_question/__init__.py | 6 + .../__manifest__.py | 20 + .../controllers/__init__.py | 5 + .../controllers/main.py | 55 ++ .../survey_conditional_question/i18n/en_US.po | 109 +++ .../survey_conditional_question/i18n/es.po | 111 +++ .../survey_conditional_question/i18n/it.po | 113 +++ .../models/__init__.py | 8 + .../models/survey_question.py | 45 ++ .../models/survey_survey.py | 27 + .../models/survey_user_input.py | 31 + .../models/survey_user_input_line.py | 68 ++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../src/js/survey_conditional_questions.js | 35 + .../scss/survey_conditional_questions.scss | 3 + .../tests/__init__.py | 1 + .../test_survey_conditional_questions.py | 89 +++ .../views/survey_question_qweb.xml | 41 + .../views/survey_question_views.xml | 32 + odex25_survey/survey_description/README.rst | 118 +++ odex25_survey/survey_description/__init__.py | 1 + .../survey_description/__manifest__.py | 21 + odex25_survey/survey_description/i18n/it.po | 22 + .../readme/CONTRIBUTORS.rst | 1 + .../survey_description/readme/CREDITS.rst | 6 + .../survey_description/readme/DESCRIPTION.rst | 9 + .../survey_description/readme/ROADMAP.rst | 2 + .../survey_description/readme/USAGE.rst | 6 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/icon.svg | 79 ++ .../static/description/index.html | 460 +++++++++++ .../survey_description/views/survey_views.xml | 18 + .../README.rst | 76 ++ .../__init__.py | 1 + .../__manifest__.py | 21 + .../i18n/it.po | 66 ++ .../models/__init__.py | 1 + .../models/survey_question.py | 52 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 421 ++++++++++ .../tests/__init__.py | 1 + .../tests/test_survey_question.py | 174 ++++ .../views/survey_question.xml | 35 + odex25_survey/survey_qrcode/__init__.py | 3 + odex25_survey/survey_qrcode/__manifest__.py | 24 + .../survey_qrcode/controllers/__init__.py | 1 + .../survey_qrcode/controllers/main.py | 37 + .../survey_qrcode/models/__init__.py | 1 + odex25_survey/survey_qrcode/models/survey.py | 102 +++ .../security/ir.model.access.csv | 2 + .../static/src/css/survey_print.css | 1 + odex25_survey/survey_qrcode/views/assets.xml | 36 + .../survey_qrcode/views/survey_views.xml | 44 ++ .../survey_qrcode/wizards/__init__.py | 1 + .../wizards/survey_result_wizard.py | 24 + .../wizards/survey_result_wizard_view.xml | 44 ++ .../survey_question_duplicator/README.rst | 46 ++ .../survey_question_duplicator/__init__.py | 22 + .../__manifest__.py | 48 ++ .../doc/RELEASE_NOTES.md | 7 + .../models/__init__.py | 21 + .../models/survey_question.py | 39 + .../security/ir.model.access.csv | 2 + .../static/description/assets/icons/check.png | Bin 0 -> 3676 bytes .../static/description/assets/icons/cogs.png | Bin 0 -> 1377 bytes .../description/assets/icons/consultation.png | Bin 0 -> 1458 bytes .../description/assets/icons/ecom-black.png | Bin 0 -> 576 bytes .../assets/icons/education-black.png | Bin 0 -> 733 bytes .../description/assets/icons/hotel-black.png | Bin 0 -> 911 bytes .../description/assets/icons/license.png | Bin 0 -> 1095 bytes .../description/assets/icons/lifebuoy.png | Bin 0 -> 1199 bytes .../static/description/assets/icons/logo.png | Bin 0 -> 3452 bytes .../assets/icons/manufacturing-black.png | Bin 0 -> 673 bytes .../description/assets/icons/pos-black.png | Bin 0 -> 878 bytes .../description/assets/icons/puzzle.png | Bin 0 -> 653 bytes .../assets/icons/restaurant-black.png | Bin 0 -> 905 bytes .../assets/icons/service-black.png | Bin 0 -> 839 bytes .../assets/icons/trading-black.png | Bin 0 -> 427 bytes .../description/assets/icons/training.png | Bin 0 -> 627 bytes .../description/assets/icons/update.png | Bin 0 -> 1225 bytes .../static/description/assets/icons/user.png | Bin 0 -> 988 bytes .../description/assets/icons/wrench.png | Bin 0 -> 1205 bytes .../description/assets/misc/categories.png | Bin 0 -> 1532 bytes .../description/assets/misc/check-box.png | Bin 0 -> 1118 bytes .../description/assets/misc/compass.png | Bin 0 -> 1931 bytes .../description/assets/misc/corporate.png | Bin 0 -> 1177 bytes .../assets/misc/customer-support.png | Bin 0 -> 2136 bytes .../description/assets/misc/cybrosys-logo.png | Bin 0 -> 4496 bytes .../description/assets/misc/features.png | Bin 0 -> 589 bytes .../static/description/assets/misc/logo.png | Bin 0 -> 3452 bytes .../description/assets/misc/pictures.png | Bin 0 -> 1692 bytes .../description/assets/misc/pie-chart.png | Bin 0 -> 2338 bytes .../description/assets/misc/right-arrow.png | Bin 0 -> 967 bytes .../static/description/assets/misc/star.png | Bin 0 -> 1642 bytes .../description/assets/misc/support.png | Bin 0 -> 3892 bytes .../description/assets/misc/whatsapp.png | Bin 0 -> 5097 bytes .../static/description/assets/modules/1.png | Bin 0 -> 70094 bytes .../static/description/assets/modules/2.png | Bin 0 -> 64929 bytes .../static/description/assets/modules/3.gif | Bin 0 -> 1785603 bytes .../static/description/assets/modules/4.png | Bin 0 -> 84244 bytes .../static/description/assets/modules/5.png | Bin 0 -> 72774 bytes .../static/description/assets/modules/6.png | Bin 0 -> 59661 bytes .../assets/screenshots/Screenshot.jpg | Bin 0 -> 58744 bytes .../assets/screenshots/Screenshot1.png | Bin 0 -> 41900 bytes .../assets/screenshots/Screenshot3.png | Bin 0 -> 43845 bytes .../assets/screenshots/Screenshot4.png | Bin 0 -> 150114 bytes .../assets/screenshots/Screenshot5.png | Bin 0 -> 183334 bytes .../assets/screenshots/Screenshot6.png | Bin 0 -> 162534 bytes .../assets/screenshots/Screenshot7.png | Bin 0 -> 107264 bytes .../description/assets/screenshots/hero.gif | Bin 0 -> 218258 bytes .../static/description/banner.jpg | Bin 0 -> 83951 bytes .../static/description/icon.png | Bin 0 -> 7763 bytes .../static/description/index.html | 628 +++++++++++++++ .../views/survey_question_views.xml | 14 + .../wizard/__init__.py | 21 + .../wizard/survey_selector.py | 65 ++ .../wizard/survey_selector_views.xml | 23 + .../survey_question_type_binary/README.rst | 87 ++ .../survey_question_type_binary/__init__.py | 1 + .../__manifest__.py | 20 + .../survey_question_type_binary/i18n/it.po | 225 ++++++ .../models/__init__.py | 4 + .../models/survey_question.py | 84 ++ .../models/survey_user_input.py | 53 ++ .../models/survey_user_input_line.py | 66 ++ .../models/survey_user_input_line_binary.py | 61 ++ .../readme/CONFIGURE.rst | 7 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++ .../static/src/js/survey_form.js | 84 ++ .../templates/survey_template.xml | 72 ++ .../tests/__init__.py | 1 + .../tests/test_survey.py | 185 +++++ .../views/survey_question.xml | 37 + .../views/survey_user_input_line.xml | 106 +++ .../survey_question_type_five_star/README.rst | 77 ++ .../__init__.py | 2 + .../__manifest__.py | 16 + .../survey_question_type_five_star/i18n/it.po | 91 +++ .../models/__init__.py | 2 + .../models/survey_question.py | 58 ++ .../models/survey_user_input_line.py | 53 ++ .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 422 ++++++++++ .../static/src/js/survey.js | 40 + .../static/src/scss/parameters.scss | 2 + .../static/src/scss/survey.scss | 25 + .../templates/survey_template.xml | 96 +++ .../tests/__init__.py | 1 + .../tests/test_survey.py | 108 +++ .../views/survey_question.xml | 22 + .../survey_question_type_nps/README.rst | 76 ++ .../survey_question_type_nps/__init__.py | 1 + .../survey_question_type_nps/__manifest__.py | 16 + .../survey_question_type_nps/i18n/it.po | 113 +++ .../models/__init__.py | 2 + .../models/survey_question.py | 60 ++ .../models/survey_user_input_line.py | 62 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 421 ++++++++++ .../static/src/js/survey.js | 36 + .../static/src/scss/parameters.scss | 3 + .../static/src/scss/survey.scss | 51 ++ .../templates/survey_template.xml | 125 +++ .../tests/__init__.py | 1 + .../tests/test_survey.py | 110 +++ .../views/survey_question.xml | 22 + .../README.rst | 77 ++ .../__init__.py | 1 + .../__manifest__.py | 20 + .../i18n/it.po | 37 + .../models/__init__.py | 1 + .../models/survey_question.py | 28 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 422 ++++++++++ .../tests/__init__.py | 1 + .../tests/test_survey_question.py | 79 ++ .../views/survey_question.xml | 42 + odex25_survey/survey_xlsx/README.rst | 76 ++ odex25_survey/survey_xlsx/__init__.py | 2 + odex25_survey/survey_xlsx/__manifest__.py | 17 + odex25_survey/survey_xlsx/i18n/it.po | 62 ++ odex25_survey/survey_xlsx/models/__init__.py | 1 + .../models/survey_user_input_line.py | 14 + .../survey_xlsx/readme/CONTRIBUTORS.rst | 1 + .../survey_xlsx/readme/DESCRIPTION.rst | 1 + odex25_survey/survey_xlsx/report/__init__.py | 1 + .../survey_xlsx/report/report_survey_xlsx.py | 88 +++ .../survey_xlsx/report/report_survey_xlsx.xml | 14 + .../survey_xlsx/static/description/icon.png | Bin 0 -> 9455 bytes .../survey_xlsx/static/description/index.html | 421 ++++++++++ odex25_survey/survey_xlsx/tests/__init__.py | 1 + .../survey_xlsx/tests/test_report.py | 84 ++ .../web_widget_url_advanced/README.rst | 142 ++++ .../web_widget_url_advanced/__init__.py | 0 .../web_widget_url_advanced/__manifest__.py | 16 + .../web_widget_url_advanced/i18n/es.po | 0 .../web_widget_url_advanced/i18n/zh_CN.po | 0 .../readme/CONTRIBUTORS.rst | 9 + .../readme/DESCRIPTION.rst | 11 + .../readme/ROADMAP.rst | 1 + .../web_widget_url_advanced/readme/USAGE.rst | 39 + .../static/description/after.png | Bin 0 -> 6912 bytes .../static/description/before.png | Bin 0 -> 7637 bytes .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 474 +++++++++++ .../static/src/js/url_widget.js | 48 ++ .../templates/assets.xml | 19 + 299 files changed, 17577 insertions(+), 1 deletion(-) create mode 100644 odex25_survey/hr_course/README.rst create mode 100644 odex25_survey/hr_course/__init__.py create mode 100644 odex25_survey/hr_course/__manifest__.py create mode 100644 odex25_survey/hr_course/data/ir_cron_data.xml create mode 100644 odex25_survey/hr_course/data/mail_channel.xml create mode 100644 odex25_survey/hr_course/data/mail_template.xml create mode 100644 odex25_survey/hr_course/demo/hr_course.xml create mode 100644 odex25_survey/hr_course/i18n/de.po create mode 100644 odex25_survey/hr_course/i18n/es.po create mode 100644 odex25_survey/hr_course/i18n/fr.po create mode 100644 odex25_survey/hr_course/i18n/it.po create mode 100644 odex25_survey/hr_course/i18n/pt.po create mode 100644 odex25_survey/hr_course/i18n/pt_BR.po create mode 100644 odex25_survey/hr_course/migrations/14.0.2.0.0/noupdate_changes.xml create mode 100644 odex25_survey/hr_course/migrations/14.0.2.0.0/post-migration.py create mode 100644 odex25_survey/hr_course/migrations/14.0.2.0.0/pre-migration.py create mode 100644 odex25_survey/hr_course/models/__init__.py create mode 100644 odex25_survey/hr_course/models/hr_course.py create mode 100644 odex25_survey/hr_course/models/hr_course_attendee.py create mode 100644 odex25_survey/hr_course/models/hr_course_category.py create mode 100644 odex25_survey/hr_course/models/hr_course_schedule.py create mode 100644 odex25_survey/hr_course/models/hr_employee.py create mode 100644 odex25_survey/hr_course/models/res_company.py create mode 100644 odex25_survey/hr_course/models/res_config_settings.py create mode 100644 odex25_survey/hr_course/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/hr_course/readme/DESCRIPTION.rst create mode 100644 odex25_survey/hr_course/readme/USAGE.rst create mode 100644 odex25_survey/hr_course/security/course_security.xml create mode 100644 odex25_survey/hr_course/security/ir.model.access.csv create mode 100644 odex25_survey/hr_course/static/description/icon.png create mode 100644 odex25_survey/hr_course/static/description/index.html create mode 100644 odex25_survey/hr_course/tests/__init__.py create mode 100644 odex25_survey/hr_course/tests/test_hr_course.py create mode 100644 odex25_survey/hr_course/views/hr_course_category_views.xml create mode 100644 odex25_survey/hr_course/views/hr_course_schedule_views.xml create mode 100644 odex25_survey/hr_course/views/hr_course_views.xml create mode 100644 odex25_survey/hr_course/views/hr_employee_views.xml create mode 100644 odex25_survey/hr_course/views/hr_settings.xml create mode 100644 odex25_survey/hr_course_survey/README.rst create mode 100644 odex25_survey/hr_course_survey/__init__.py create mode 100644 odex25_survey/hr_course_survey/__manifest__.py create mode 100644 odex25_survey/hr_course_survey/data/mail.xml create mode 100644 odex25_survey/hr_course_survey/i18n/ca_ES.po create mode 100644 odex25_survey/hr_course_survey/i18n/es.po create mode 100644 odex25_survey/hr_course_survey/i18n/es_PA.po create mode 100644 odex25_survey/hr_course_survey/i18n/it.po create mode 100644 odex25_survey/hr_course_survey/models/__init__.py create mode 100644 odex25_survey/hr_course_survey/models/hr_course.py create mode 100644 odex25_survey/hr_course_survey/models/hr_course_attendee.py create mode 100644 odex25_survey/hr_course_survey/models/hr_course_schedule.py create mode 100644 odex25_survey/hr_course_survey/models/survey_user_input.py create mode 100644 odex25_survey/hr_course_survey/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/hr_course_survey/readme/DESCRIPTION.rst create mode 100644 odex25_survey/hr_course_survey/readme/USAGE.rst create mode 100644 odex25_survey/hr_course_survey/static/description/icon.png create mode 100644 odex25_survey/hr_course_survey/static/description/index.html create mode 100644 odex25_survey/hr_course_survey/tests/__init__.py create mode 100644 odex25_survey/hr_course_survey/tests/test_hr_course.py create mode 100644 odex25_survey/hr_course_survey/views/hr_course.xml create mode 100644 odex25_survey/hr_course_survey/views/hr_course_attendee.xml create mode 100644 odex25_survey/hr_course_survey/views/hr_course_schedule.xml create mode 100644 odex25_survey/kw_survey_attachment/README.rst create mode 100644 odex25_survey/kw_survey_attachment/__init__.py create mode 100644 odex25_survey/kw_survey_attachment/__manifest__.py create mode 100644 odex25_survey/kw_survey_attachment/migrations/14.0.1.0.5/post-migrate.py create mode 100644 odex25_survey/kw_survey_attachment/models/__init__.py create mode 100644 odex25_survey/kw_survey_attachment/models/survey.py create mode 100644 odex25_survey/kw_survey_attachment/static/description/1.png create mode 100644 odex25_survey/kw_survey_attachment/static/description/2.png create mode 100644 odex25_survey/kw_survey_attachment/static/description/3.png create mode 100644 odex25_survey/kw_survey_attachment/static/description/cover.png create mode 100644 odex25_survey/kw_survey_attachment/static/description/icon.png create mode 100644 odex25_survey/kw_survey_attachment/static/description/index.html create mode 100644 odex25_survey/kw_survey_attachment/static/src/js/survey_form.js create mode 100644 odex25_survey/kw_survey_attachment/views/assets.xml create mode 100644 odex25_survey/kw_survey_attachment/views/survey_template_view.xml create mode 100644 odex25_survey/kw_survey_attachment/views/survey_user_input_line_view.xml create mode 100644 odex25_survey/kw_survey_attachment/views/survey_view.xml create mode 100644 odex25_survey/survey_conditional_question/README.rst create mode 100644 odex25_survey/survey_conditional_question/__init__.py create mode 100644 odex25_survey/survey_conditional_question/__manifest__.py create mode 100644 odex25_survey/survey_conditional_question/controllers/__init__.py create mode 100644 odex25_survey/survey_conditional_question/controllers/main.py create mode 100644 odex25_survey/survey_conditional_question/i18n/en_US.po create mode 100644 odex25_survey/survey_conditional_question/i18n/es.po create mode 100644 odex25_survey/survey_conditional_question/i18n/it.po create mode 100644 odex25_survey/survey_conditional_question/models/__init__.py create mode 100644 odex25_survey/survey_conditional_question/models/survey_question.py create mode 100644 odex25_survey/survey_conditional_question/models/survey_survey.py create mode 100644 odex25_survey/survey_conditional_question/models/survey_user_input.py create mode 100644 odex25_survey/survey_conditional_question/models/survey_user_input_line.py create mode 100644 odex25_survey/survey_conditional_question/static/description/icon.png create mode 100644 odex25_survey/survey_conditional_question/static/src/js/survey_conditional_questions.js create mode 100644 odex25_survey/survey_conditional_question/static/src/scss/survey_conditional_questions.scss create mode 100644 odex25_survey/survey_conditional_question/tests/__init__.py create mode 100644 odex25_survey/survey_conditional_question/tests/test_survey_conditional_questions.py create mode 100644 odex25_survey/survey_conditional_question/views/survey_question_qweb.xml create mode 100644 odex25_survey/survey_conditional_question/views/survey_question_views.xml create mode 100644 odex25_survey/survey_description/README.rst create mode 100644 odex25_survey/survey_description/__init__.py create mode 100644 odex25_survey/survey_description/__manifest__.py create mode 100644 odex25_survey/survey_description/i18n/it.po create mode 100644 odex25_survey/survey_description/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_description/readme/CREDITS.rst create mode 100644 odex25_survey/survey_description/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_description/readme/ROADMAP.rst create mode 100644 odex25_survey/survey_description/readme/USAGE.rst create mode 100644 odex25_survey/survey_description/static/description/icon.png create mode 100644 odex25_survey/survey_description/static/description/icon.svg create mode 100644 odex25_survey/survey_description/static/description/index.html create mode 100644 odex25_survey/survey_description/views/survey_views.xml create mode 100644 odex25_survey/survey_multiple_choice_max_answer/README.rst create mode 100644 odex25_survey/survey_multiple_choice_max_answer/__init__.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/__manifest__.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/i18n/it.po create mode 100644 odex25_survey/survey_multiple_choice_max_answer/models/__init__.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/models/survey_question.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_multiple_choice_max_answer/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_multiple_choice_max_answer/static/description/icon.png create mode 100644 odex25_survey/survey_multiple_choice_max_answer/static/description/index.html create mode 100644 odex25_survey/survey_multiple_choice_max_answer/tests/__init__.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/tests/test_survey_question.py create mode 100644 odex25_survey/survey_multiple_choice_max_answer/views/survey_question.xml create mode 100644 odex25_survey/survey_qrcode/__init__.py create mode 100644 odex25_survey/survey_qrcode/__manifest__.py create mode 100644 odex25_survey/survey_qrcode/controllers/__init__.py create mode 100644 odex25_survey/survey_qrcode/controllers/main.py create mode 100644 odex25_survey/survey_qrcode/models/__init__.py create mode 100644 odex25_survey/survey_qrcode/models/survey.py create mode 100644 odex25_survey/survey_qrcode/security/ir.model.access.csv create mode 100644 odex25_survey/survey_qrcode/static/src/css/survey_print.css create mode 100644 odex25_survey/survey_qrcode/views/assets.xml create mode 100644 odex25_survey/survey_qrcode/views/survey_views.xml create mode 100644 odex25_survey/survey_qrcode/wizards/__init__.py create mode 100644 odex25_survey/survey_qrcode/wizards/survey_result_wizard.py create mode 100644 odex25_survey/survey_qrcode/wizards/survey_result_wizard_view.xml create mode 100644 odex25_survey/survey_question_duplicator/README.rst create mode 100644 odex25_survey/survey_question_duplicator/__init__.py create mode 100644 odex25_survey/survey_question_duplicator/__manifest__.py create mode 100644 odex25_survey/survey_question_duplicator/doc/RELEASE_NOTES.md create mode 100644 odex25_survey/survey_question_duplicator/models/__init__.py create mode 100644 odex25_survey/survey_question_duplicator/models/survey_question.py create mode 100644 odex25_survey/survey_question_duplicator/security/ir.model.access.csv create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/check.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/cogs.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/consultation.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/ecom-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/education-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/hotel-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/license.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/lifebuoy.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/logo.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/manufacturing-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/pos-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/puzzle.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/restaurant-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/service-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/trading-black.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/training.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/update.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/user.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/icons/wrench.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/categories.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/check-box.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/compass.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/corporate.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/customer-support.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/cybrosys-logo.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/features.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/logo.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/pictures.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/pie-chart.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/right-arrow.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/star.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/support.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/misc/whatsapp.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/1.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/2.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/3.gif create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/4.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/5.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/modules/6.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot.jpg create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot1.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot3.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot4.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot5.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot6.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/Screenshot7.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/assets/screenshots/hero.gif create mode 100644 odex25_survey/survey_question_duplicator/static/description/banner.jpg create mode 100644 odex25_survey/survey_question_duplicator/static/description/icon.png create mode 100644 odex25_survey/survey_question_duplicator/static/description/index.html create mode 100644 odex25_survey/survey_question_duplicator/views/survey_question_views.xml create mode 100644 odex25_survey/survey_question_duplicator/wizard/__init__.py create mode 100644 odex25_survey/survey_question_duplicator/wizard/survey_selector.py create mode 100644 odex25_survey/survey_question_duplicator/wizard/survey_selector_views.xml create mode 100644 odex25_survey/survey_question_type_binary/README.rst create mode 100644 odex25_survey/survey_question_type_binary/__init__.py create mode 100644 odex25_survey/survey_question_type_binary/__manifest__.py create mode 100644 odex25_survey/survey_question_type_binary/i18n/it.po create mode 100644 odex25_survey/survey_question_type_binary/models/__init__.py create mode 100644 odex25_survey/survey_question_type_binary/models/survey_question.py create mode 100644 odex25_survey/survey_question_type_binary/models/survey_user_input.py create mode 100644 odex25_survey/survey_question_type_binary/models/survey_user_input_line.py create mode 100644 odex25_survey/survey_question_type_binary/models/survey_user_input_line_binary.py create mode 100644 odex25_survey/survey_question_type_binary/readme/CONFIGURE.rst create mode 100644 odex25_survey/survey_question_type_binary/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_question_type_binary/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_question_type_binary/security/ir.model.access.csv create mode 100644 odex25_survey/survey_question_type_binary/static/description/icon.png create mode 100644 odex25_survey/survey_question_type_binary/static/description/index.html create mode 100644 odex25_survey/survey_question_type_binary/static/src/js/survey_form.js create mode 100644 odex25_survey/survey_question_type_binary/templates/survey_template.xml create mode 100644 odex25_survey/survey_question_type_binary/tests/__init__.py create mode 100644 odex25_survey/survey_question_type_binary/tests/test_survey.py create mode 100644 odex25_survey/survey_question_type_binary/views/survey_question.xml create mode 100644 odex25_survey/survey_question_type_binary/views/survey_user_input_line.xml create mode 100644 odex25_survey/survey_question_type_five_star/README.rst create mode 100644 odex25_survey/survey_question_type_five_star/__init__.py create mode 100644 odex25_survey/survey_question_type_five_star/__manifest__.py create mode 100644 odex25_survey/survey_question_type_five_star/i18n/it.po create mode 100644 odex25_survey/survey_question_type_five_star/models/__init__.py create mode 100644 odex25_survey/survey_question_type_five_star/models/survey_question.py create mode 100644 odex25_survey/survey_question_type_five_star/models/survey_user_input_line.py create mode 100644 odex25_survey/survey_question_type_five_star/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_question_type_five_star/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_question_type_five_star/static/description/icon.png create mode 100644 odex25_survey/survey_question_type_five_star/static/description/index.html create mode 100644 odex25_survey/survey_question_type_five_star/static/src/js/survey.js create mode 100644 odex25_survey/survey_question_type_five_star/static/src/scss/parameters.scss create mode 100644 odex25_survey/survey_question_type_five_star/static/src/scss/survey.scss create mode 100644 odex25_survey/survey_question_type_five_star/templates/survey_template.xml create mode 100644 odex25_survey/survey_question_type_five_star/tests/__init__.py create mode 100644 odex25_survey/survey_question_type_five_star/tests/test_survey.py create mode 100644 odex25_survey/survey_question_type_five_star/views/survey_question.xml create mode 100644 odex25_survey/survey_question_type_nps/README.rst create mode 100644 odex25_survey/survey_question_type_nps/__init__.py create mode 100644 odex25_survey/survey_question_type_nps/__manifest__.py create mode 100644 odex25_survey/survey_question_type_nps/i18n/it.po create mode 100644 odex25_survey/survey_question_type_nps/models/__init__.py create mode 100644 odex25_survey/survey_question_type_nps/models/survey_question.py create mode 100644 odex25_survey/survey_question_type_nps/models/survey_user_input_line.py create mode 100644 odex25_survey/survey_question_type_nps/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_question_type_nps/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_question_type_nps/static/description/icon.png create mode 100644 odex25_survey/survey_question_type_nps/static/description/index.html create mode 100644 odex25_survey/survey_question_type_nps/static/src/js/survey.js create mode 100644 odex25_survey/survey_question_type_nps/static/src/scss/parameters.scss create mode 100644 odex25_survey/survey_question_type_nps/static/src/scss/survey.scss create mode 100644 odex25_survey/survey_question_type_nps/templates/survey_template.xml create mode 100644 odex25_survey/survey_question_type_nps/tests/__init__.py create mode 100644 odex25_survey/survey_question_type_nps/tests/test_survey.py create mode 100644 odex25_survey/survey_question_type_nps/views/survey_question.xml create mode 100644 odex25_survey/survey_text_question_validation_length/README.rst create mode 100644 odex25_survey/survey_text_question_validation_length/__init__.py create mode 100644 odex25_survey/survey_text_question_validation_length/__manifest__.py create mode 100644 odex25_survey/survey_text_question_validation_length/i18n/it.po create mode 100644 odex25_survey/survey_text_question_validation_length/models/__init__.py create mode 100644 odex25_survey/survey_text_question_validation_length/models/survey_question.py create mode 100644 odex25_survey/survey_text_question_validation_length/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_text_question_validation_length/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_text_question_validation_length/static/description/icon.png create mode 100644 odex25_survey/survey_text_question_validation_length/static/description/index.html create mode 100644 odex25_survey/survey_text_question_validation_length/tests/__init__.py create mode 100644 odex25_survey/survey_text_question_validation_length/tests/test_survey_question.py create mode 100644 odex25_survey/survey_text_question_validation_length/views/survey_question.xml create mode 100644 odex25_survey/survey_xlsx/README.rst create mode 100644 odex25_survey/survey_xlsx/__init__.py create mode 100644 odex25_survey/survey_xlsx/__manifest__.py create mode 100644 odex25_survey/survey_xlsx/i18n/it.po create mode 100644 odex25_survey/survey_xlsx/models/__init__.py create mode 100644 odex25_survey/survey_xlsx/models/survey_user_input_line.py create mode 100644 odex25_survey/survey_xlsx/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/survey_xlsx/readme/DESCRIPTION.rst create mode 100644 odex25_survey/survey_xlsx/report/__init__.py create mode 100644 odex25_survey/survey_xlsx/report/report_survey_xlsx.py create mode 100644 odex25_survey/survey_xlsx/report/report_survey_xlsx.xml create mode 100644 odex25_survey/survey_xlsx/static/description/icon.png create mode 100644 odex25_survey/survey_xlsx/static/description/index.html create mode 100644 odex25_survey/survey_xlsx/tests/__init__.py create mode 100644 odex25_survey/survey_xlsx/tests/test_report.py create mode 100644 odex25_survey/web_widget_url_advanced/README.rst create mode 100644 odex25_survey/web_widget_url_advanced/__init__.py create mode 100644 odex25_survey/web_widget_url_advanced/__manifest__.py create mode 100644 odex25_survey/web_widget_url_advanced/i18n/es.po create mode 100644 odex25_survey/web_widget_url_advanced/i18n/zh_CN.po create mode 100644 odex25_survey/web_widget_url_advanced/readme/CONTRIBUTORS.rst create mode 100644 odex25_survey/web_widget_url_advanced/readme/DESCRIPTION.rst create mode 100644 odex25_survey/web_widget_url_advanced/readme/ROADMAP.rst create mode 100644 odex25_survey/web_widget_url_advanced/readme/USAGE.rst create mode 100644 odex25_survey/web_widget_url_advanced/static/description/after.png create mode 100644 odex25_survey/web_widget_url_advanced/static/description/before.png create mode 100644 odex25_survey/web_widget_url_advanced/static/description/icon.png create mode 100644 odex25_survey/web_widget_url_advanced/static/description/index.html create mode 100644 odex25_survey/web_widget_url_advanced/static/src/js/url_widget.js create mode 100644 odex25_survey/web_widget_url_advanced/templates/assets.xml diff --git a/README.md b/README.md index 8b10e6960..6864725ce 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# odex25-standard-moduless +# odex25-standard-modules This Repo contains general standard modules for all projects. diff --git a/odex25_survey/hr_course/README.rst b/odex25_survey/hr_course/README.rst new file mode 100644 index 000000000..880718abf --- /dev/null +++ b/odex25_survey/hr_course/README.rst @@ -0,0 +1,91 @@ +========= +HR Course +========= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ddeee0d152c5f7cd6896862fed775d928e76cfa9ab645cc1eb716b3f2a055f10 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/14.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-14-0/hr-14-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=14.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 +* Anna Janiszewska + +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/odex25_survey/hr_course/__init__.py b/odex25_survey/hr_course/__init__.py new file mode 100644 index 000000000..0ee8b5073 --- /dev/null +++ b/odex25_survey/hr_course/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import tests diff --git a/odex25_survey/hr_course/__manifest__.py b/odex25_survey/hr_course/__manifest__.py new file mode 100644 index 000000000..1ce437d8f --- /dev/null +++ b/odex25_survey/hr_course/__manifest__.py @@ -0,0 +1,28 @@ +# 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": "14.0.3.1.1", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "category":"Odex25-Survey/Odex25-Survey", + + "website": "https://github.com/OCA/hr", + "depends": ["hr", "mail"], + "data": [ + "security/course_security.xml", + "security/ir.model.access.csv", + "data/ir_cron_data.xml", + "data/mail_template.xml", + "data/mail_channel.xml", + "views/hr_course_category_views.xml", + "views/hr_course_views.xml", + "views/hr_course_schedule_views.xml", + "views/hr_employee_views.xml", + "views/hr_settings.xml", + ], + "demo": ["demo/hr_course.xml"], +} diff --git a/odex25_survey/hr_course/data/ir_cron_data.xml b/odex25_survey/hr_course/data/ir_cron_data.xml new file mode 100644 index 000000000..f7244cc1e --- /dev/null +++ b/odex25_survey/hr_course/data/ir_cron_data.xml @@ -0,0 +1,17 @@ + + + HR Course: Check validity date + 1 + days + -1 + False + + + + model._cron_check_validity_date() + code + + diff --git a/odex25_survey/hr_course/data/mail_channel.xml b/odex25_survey/hr_course/data/mail_channel.xml new file mode 100644 index 000000000..c0b7a809a --- /dev/null +++ b/odex25_survey/hr_course/data/mail_channel.xml @@ -0,0 +1,6 @@ + + + + Course validity expiration notification + + diff --git a/odex25_survey/hr_course/data/mail_template.xml b/odex25_survey/hr_course/data/mail_template.xml new file mode 100644 index 000000000..298befe3d --- /dev/null +++ b/odex25_survey/hr_course/data/mail_template.xml @@ -0,0 +1,20 @@ + + + + Course Validity Notification + ${ctx.get('email_from')} + End of validity for a course + + +
+

Hi,

+

The validity time of the course ${object.name} will end up soon. You maybe need to plan a new one.

+

The concerned employees are:

+ % for employee in object.course_attendee_ids.mapped("employee_id.name"): +

${employee}

+ % endfor +
+
+
+
diff --git a/odex25_survey/hr_course/demo/hr_course.xml b/odex25_survey/hr_course/demo/hr_course.xml new file mode 100644 index 000000000..606cd3b8e --- /dev/null +++ b/odex25_survey/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/odex25_survey/hr_course/i18n/de.po b/odex25_survey/hr_course/i18n/de.po new file mode 100644 index 000000000..6cd870a1f --- /dev/null +++ b/odex25_survey/hr_course/i18n/de.po @@ -0,0 +1,711 @@ +# 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:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" + +#. 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:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +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:ir.model,name:hr_course.model_res_company +msgid "Companies" +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,name:hr_course.model_res_config_settings +msgid "Config Settings" +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_attendee__course_id +#: 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:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +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:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +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.res_config_settings_view_form +#: 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__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 +#: 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:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +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_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +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,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____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_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +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__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +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__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +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 which requires an 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,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +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__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +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:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +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 +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: hr_course +#: 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,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_course +#: 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/odex25_survey/hr_course/i18n/es.po b/odex25_survey/hr_course/i18n/es.po new file mode 100644 index 000000000..8b8cea869 --- /dev/null +++ b/odex25_survey/hr_course/i18n/es.po @@ -0,0 +1,744 @@ +# 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: 2024-02-18 18: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:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" +"
\n" +"

Hola,

\n" +"

El tiempo de validez del curso ${object.name} finalizará " +"pronto. Quizás necesites planificar uno nuevo.

\n" +"

Los empleados afectados son:

\n" +" % para empleado en object.course_attendee_ids.mapped(" +"\"employee_id.name\"):\n" +"

${employee}

\n" +" % final para\n" +"
\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:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decoración de Excepción de la Actividad" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "Estado de la Actividad" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icono de Tipo de Actividad" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +msgstr "Plazo de alerta antes del fin de validez (días)" + +#. 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:ir.model,name:hr_course.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. 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,name:hr_course.model_res_config_settings +msgid "Config Settings" +msgstr "Ajustes Config" + +#. 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_attendee__course_id +#: 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:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +msgstr "Alerta de Expiración de Curso Enviada" + +#. 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:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +msgstr "Notificación de expiración de validez 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.res_config_settings_view_form +#: 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__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 +#: 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:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +msgstr "Fin de validez de un curso" + +#. 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_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +msgstr "Seguidores (Canales)" + +#. 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,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Fuente Iconos Sorprendentes , por ejemplo fa-tasks" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +msgstr "Curso de RRHH: Comprobar fecha de validez" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "Icono" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icono para indicar la excepción de la actividad." + +#. 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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____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_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +msgstr "Lista de correo para alertar" + +#. 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__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Fecha Límite de mi Actividad" + +#. 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__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Fecha Límite de la Siguiente Actividad" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "Resumen de Próxima Actividad" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo Actividad Siguiente" + +#. 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 which requires an 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,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +msgstr "Número de mensajes no leídos" + +#. 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__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +msgstr "Usuario Responsable" + +#. 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:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +msgstr "" +"Muestra si se ha enviado el correo electrónico de notificación del curso" + +#. 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 +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Status basado en actividades\n" +"Atrasado: La fecha de entrega ya ha pasado\n" +"Hoy: Fecha de actividad es hoy\n" +"Planeado: Actividades futuras." + +#. module: hr_course +#: 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,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de actividad excepcional registrada." + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "Mensajes sin leer" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de mensajes no leídos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +msgstr "Fecha Fin de Validez" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del sitio web" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicación del sitio web" + +#. module: hr_course +#: 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 "hr.course" +#~ msgstr "hr.course" + +#~ msgid "hr.course.attendee" +#~ msgstr "hr.course.attendee" + +#~ msgid "hr.course.result" +#~ msgstr "hr.course.result" diff --git a/odex25_survey/hr_course/i18n/fr.po b/odex25_survey/hr_course/i18n/fr.po new file mode 100644 index 000000000..8894ac12e --- /dev/null +++ b/odex25_survey/hr_course/i18n/fr.po @@ -0,0 +1,747 @@ +# 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" +"PO-Revision-Date: 2022-05-30 16:05+0000\n" +"Last-Translator: Khalid Hazam \n" +"Language-Team: none\n" +"Language: fr\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.3.2\n" + +#. module: hr_course +#: model:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__absent +msgid "Absent" +msgstr "Absent" + +#. 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 "Besoin d'action" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "Actif" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +msgstr "Délai d'alerte avant fin de validité (en jour)" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "Affecter des participants" + +#. 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 "Nombre de pièces jointes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "Participant" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "Participants" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__authorized_by +msgid "Authorized by" +msgstr "Autorisé par" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Back to Draft" +msgstr "Retour en Brouillon" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancel Course" +msgstr "Annuler formation" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__cancelled +msgid "Cancelled" +msgstr "Annulée" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Cancelled Course" +msgstr "Formation annulée" + +#. 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 "Catégorie" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "La catégorie existe déjà !" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "Commentaire" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "Formation terminée" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "Terminée" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_res_config_settings +msgid "Config Settings" +msgstr "Paramètres de config" + +#. 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 "Contenu" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "Convocataire" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_id +#: 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 "Formation" + +#. 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 "Participant à la formation" + +#. 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 "Catégories de formation" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "Catégorie de formation" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "Coût de la formation" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +msgstr "Alerte d'expiration de formation" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "Nom de la formation" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "Résultats de la formation" + +#. 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 "Planing de formation" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "Catégorie de formation" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "Nom de la formation" + +#. module: hr_course +#: model:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +msgstr "Alerte de fin de validité" + +#. 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.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:hr_course.view_hr_employee_form +msgid "Courses" +msgstr "Formations" + +#. 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 "Planning de formation" + +#. 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 "Créée par" + +#. 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 "Créée le" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "Devise" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "Brouillon" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "Formation en brouillon" + +#. 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 "Employé" + +#. module: hr_course +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "Employés retirés de cette formation:

%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 "Date de fin" + +#. module: hr_course +#: model:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +msgstr "Date de fin de validité" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "Critères d'évaluation" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "Critères d'évaluation" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "Echec" + +#. 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 "Abonnés" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +msgstr "Abonnés (Canals)" + +#. 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 "Abonnés (Contacts)" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +msgstr "Formation: Vérification des dates de fin de validité" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "Permanent" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +msgid "If checked, new messages require your attention." +msgstr "Si coché, de nouveaux messages doivent être consultés" + +#. 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 coché, certains messages n'ont pu être délivré (Erreur)" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "En Cours" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "En validation" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "Professeur" + +#. 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 "Est Abonné" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. 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 "Dernière mise à jour par" + +#. 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 "Dernière mise à jour le" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +msgstr "List de personne à alerter" + +#. 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 "Pièces jointes principales" + +#. 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 "Erreur de livraison Message" + +#. 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 "Messages" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +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 "Nom" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +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 "Nombre d'actions" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__count_courses +msgid "Number of courses" +msgstr "Nombre de formations" + +#. 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 "Nombre d'erreurs" + +#. 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 which requires an action" +msgstr "Nombre de messages qui doivent être consultés" + +#. 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 "Nombre de messages avec une erreur de livraison" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +msgstr "Nombre de messages non lus" + +#. 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 "But" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Pass everybody" +msgstr "Valider tout le monde" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "Validé" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "En attente" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence time" +msgstr "temps de permanence" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "Lieu" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "Evaluer la formation" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__result +msgid "Result" +msgstr "Résultat" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Schedules" +msgstr "Planning" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +msgstr "Afficher si des mails de notifications ont été envoyés" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "Démarrer la formation" + +#. 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 "Date de début" + +#. 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 "Etat" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: hr_course +#: 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 date de début ne peut être après la date de fin" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "Société de formation" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "Messages non lus" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Nombre de messages non lus" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +msgstr "Date de fin de validité" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "En attente des participants" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_course +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "" +"Vous ne pouvez pas terminer la formation tant que des évaluations sont " +"manquantes" + +#. 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 "" +"Vous devriez repasser une formation à l'état brouillon seulement si vous " +"l'avez annulée par erreur ou si certaines des informations entrées sont " +"incorrectes. Voulez-vous continuer?" + +#~ msgid "" +#~ "
\n" +#~ "

Hi,

\n" +#~ "

The validity time of the course ${object.name} " +#~ "will end up soon. You maybe need to plan a new one.

\n" +#~ "

The concerned employees are:

\n" +#~ " % for employee in object.course_attendee_ids." +#~ "mapped(\"employee_id.name\"):\n" +#~ "

${employee}

\n" +#~ " % endfor\n" +#~ "
\n" +#~ " " +#~ msgstr "" +#~ "
\n" +#~ "

Bonjour

\n" +#~ "

La durée de validité de la formation ${object." +#~ "name} arrive à son terme. Vous avez peut-être besoin de la replanifier. \n" +#~ "

Les employés concernés sont:

\n" +#~ " % for employee in object.course_attendee_ids." +#~ "mapped(\"employee_id.name\"):\n" +#~ "

${employee}

\n" +#~ " % endfor\n" +#~ "
\n" +#~ " " + +#~ msgid "Convocation" +#~ msgstr "Convocation" diff --git a/odex25_survey/hr_course/i18n/it.po b/odex25_survey/hr_course/i18n/it.po new file mode 100644 index 000000000..26d0a371e --- /dev/null +++ b/odex25_survey/hr_course/i18n/it.po @@ -0,0 +1,733 @@ +# 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" +"PO-Revision-Date: 2023-10-13 10:36+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:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" +"
\n" +"

Hi,

\n" +"

Il tempo di validità del corso ${object.name} scadrà " +"presto. Forse devi pianificarne uno nuovo

\n" +"

I dipendenti interessati sono:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\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:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "Attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decorazione eccezione attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "Stato attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona tipo attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +msgstr "Avviso ritardo prima della fine della validità (giorni)" + +#. 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 "Numero 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:ir.model,name:hr_course.model_res_company +msgid "Companies" +msgstr "Aziende" + +#. 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,name:hr_course.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni di configurazione" + +#. 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_attendee__course_id +#: 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:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +msgstr "Avviso di scadenza del corso inviato" + +#. 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:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +msgstr "Avviso di scadenza della validità del 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.res_config_settings_view_form +#: 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__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 +#: 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:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +msgstr "Fine validità per un corso" + +#. 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_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +msgstr "Seguito da (canali)" + +#. 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,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icona Font Awesome es. fa-tasks" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +msgstr "Corso HR: verifica la data di validità" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "Icona" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicare un'attività eccezione." + +#. 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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____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_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +msgstr "Mailing list per avvisi" + +#. 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__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Scadenza mia attività" + +#. 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__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Scadenza prossima attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "Riepilogo prossima attività" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo prossima attività" + +#. 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 which requires an 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,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +msgstr "Numero di messaggi non letti" + +#. 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__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +msgstr "Utente responsabile" + +#. 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:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +msgstr "Mostra se è stata inviata un'e-mail di notifica per il corso" + +#. 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 +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Stato in base alle attività\n" +"Scaduto: la data richiesta è trascorsa\n" +"Oggi: la data attività è oggi\n" +"Pianificato: attività future." + +#. module: hr_course +#: 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,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo di attività eccezione sul record." + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "Messaggi non letti" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contatore messaggi non letti" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +msgstr "Data di fine validità" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "Cronologia comunicazioni sito web" + +#. module: hr_course +#: 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" diff --git a/odex25_survey/hr_course/i18n/pt.po b/odex25_survey/hr_course/i18n/pt.po new file mode 100644 index 000000000..2cc366f8a --- /dev/null +++ b/odex25_survey/hr_course/i18n/pt.po @@ -0,0 +1,718 @@ +# 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" +"PO-Revision-Date: 2022-09-14 19:07+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: none\n" +"Language: pt\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.3.2\n" + +#. module: hr_course +#: model:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" + +#. 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 "Ação Necessária" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "Ativo" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "Atribuir participantes" + +#. 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 "Número de Anexos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "Participante" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "Participantes" + +#. 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 "Voltar a Rascunho" + +#. 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 "Categoria" + +#. module: hr_course +#: model:ir.model.constraint,message:hr_course.constraint_hr_course_category_name_uniq +msgid "Category already exists !" +msgstr "A categoria já existe !" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__comment +msgid "Comment" +msgstr "Comentário" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_res_company +msgid "Companies" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "Curso Completo" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__completed +msgid "Completed" +msgstr "Completado" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_res_config_settings +msgid "Config Settings" +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 "Conteúdo" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Convocatory" +msgstr "Convocatória" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_id +#: 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 "Participante do 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 "Categorias de Cursos" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "Categoria do Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "Custo do Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "Nome do Curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "Resultados do 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 "Agendamento do Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_category__name +msgid "Course category" +msgstr "Categoria do curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Course name" +msgstr "Nome do curso" + +#. module: hr_course +#: model:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +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.res_config_settings_view_form +#: 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 "Agendamento dos 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 "Criado 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 "Criado em" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__currency_id +msgid "Currency" +msgstr "Moeda" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__draft +msgid "Draft" +msgstr "Rascunho" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Draft Course" +msgstr "Rascunho de Curso" + +#. 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 "Funcionário" + +#. module: hr_course +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "Employees removed from this course:

%s" +msgstr "Empregados removidos deste 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 "Data final" + +#. module: hr_course +#: model:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__evaluation_criteria +msgid "Evaluation Criteria" +msgstr "Critérios de Avaliação" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_form_view +msgid "Evaluation criteria" +msgstr "Critérios de avaliação" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__failed +msgid "Failed" +msgstr "Falhou" + +#. 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_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +msgstr "Seguidores (Canais)" + +#. 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 (Parceiros)" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence +msgid "Has Permanence" +msgstr "Tem Permanência" + +#. 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "ID" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +msgid "If checked, new messages require your attention." +msgstr "Se selecionado, há novas mensagens que requerem a sua atenção." + +#. 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 estiver marcado, algumas mensagens têm um erro de entrega." + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_progress +msgid "In progress" +msgstr "Em andamento" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__in_validation +msgid "In validation" +msgstr "Em validação" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__instructor_ids +msgid "Instructor" +msgstr "Instrutor" + +#. 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 "É 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. 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 Atualização por" + +#. 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 Atualização em" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +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 "Anexo 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 "Erro de Envio de Mensagem" + +#. 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 "Mensagens" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +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 "Nome" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +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 "Número de Ações" + +#. 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 erros" + +#. 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 which requires an action" +msgstr "Número de mensagens que requerem uma ação" + +#. 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 de mensagens com um erro de entrega" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +msgstr "Número de mensagens não lidas" + +#. 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 "Passar todos" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__passed +msgid "Passed" +msgstr "Aprovado" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_attendee__result__pending +msgid "Pending" +msgstr "Pendente" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__permanence_time +msgid "Permanence time" +msgstr "Tempo de permanência" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__place +msgid "Place" +msgstr "Local" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Rate Course" +msgstr "Classifique o Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +msgstr "" + +#. 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 "Horários" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Start Course" +msgstr "Iniciar 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 "Data inicial" + +#. 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 +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: hr_course +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "The start date cannot be later than the end date." +msgstr "A data de início não pode ser posterior à data final." + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__training_company_id +msgid "Training company" +msgstr "Empresa de formação" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "Mensagens Não Lidas" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de Mensagens Não Lidas" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields.selection,name:hr_course.selection__hr_course_schedule__state__waiting_attendees +msgid "Waiting attendees" +msgstr "Aguardar participantes" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "Mensagens do Website" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "Histórico de Comunicação do Website" + +#. module: hr_course +#: code:addons/hr_course/models/hr_course_schedule.py:0 +#, python-format +msgid "You cannot complete the course with pending results" +msgstr "Você não pode completar o curso com resultados pendentes" + +#. 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 "" +"Deve retornar um curso ao estado rascunho apenas se o cancelar por engano ou " +"se algumas das suas informações estiverem incorretas. Quer continuar?" + +#~ msgid "SMS Delivery error" +#~ msgstr "Erro de Envio de SMS" diff --git a/odex25_survey/hr_course/i18n/pt_BR.po b/odex25_survey/hr_course/i18n/pt_BR.po new file mode 100644 index 000000000..5d482094a --- /dev/null +++ b/odex25_survey/hr_course/i18n/pt_BR.po @@ -0,0 +1,713 @@ +# 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" +"PO-Revision-Date: 2023-06-06 16:09+0000\n" +"Last-Translator: Douglas Custódio \n" +"Language-Team: none\n" +"Language: pt_BR\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:mail.template,body_html:hr_course.mail_template_validity_reminder +msgid "" +"
\n" +"

Hi,

\n" +"

The validity time of the course ${object.name} will end " +"up soon. You maybe need to plan a new one.

\n" +"

The concerned employees are:

\n" +" % for employee in object.course_attendee_ids." +"mapped(\"employee_id.name\"):\n" +"

${employee}

\n" +" % endfor\n" +"
\n" +" " +msgstr "" + +#. 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 "Ação Necessária" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__active +msgid "Active" +msgstr "Ativa" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_ids +msgid "Activities" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_state +msgid "Activity State" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_res_company__course_expiration_alerting_delay +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_alerting_delay +msgid "Alerting delay before end of validity (days)" +msgstr "" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Assign attendees" +msgstr "Designar participantes" + +#. 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 "Contagem de anexos" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__attendant_ids +msgid "Attendant" +msgstr "Participante" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Attendees" +msgstr "Participantes" + +#. 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 "Comentário" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Complete Course" +msgstr "Finaliza Curso" + +#. 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,name:hr_course.model_res_config_settings +msgid "Config Settings" +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 "Convocação" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_id +#: 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 "Participante do 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 "Categorias do Curso" + +#. module: hr_course +#: model:ir.model,name:hr_course.model_hr_course_category +msgid "Course Category" +msgstr "Categoria do Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__cost +msgid "Course Cost" +msgstr "Custo do Curso" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_expiration_alert_sent +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__course_expiration_alert_sent +msgid "Course Expiration Alert Sent" +msgstr "Enviar Aviso de Expiração do Curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_search_view +msgid "Course Name" +msgstr "Nome do Curso" + +#. module: hr_course +#: model_terms:ir.ui.view,arch_db:hr_course.hr_course_schedule_form_view +msgid "Course Results" +msgstr "Resultados do 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 "" + +#. 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:mail.channel,name:hr_course.mail_channel_course_validity +msgid "Course validity expiration notification" +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.res_config_settings_view_form +#: 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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_company__display_name +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__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 +#: 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:mail.template,subject:hr_course.mail_template_validity_reminder +msgid "End of validity for a course" +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_channel_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_channel_ids +msgid "Followers (Channels)" +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,help:hr_course.field_hr_course__activity_type_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: hr_course +#: model:ir.actions.server,name:hr_course.ir_cron_post_wip_ir_actions_server +#: model:ir.cron,cron_name:hr_course.ir_cron_post_wip +#: model:ir.cron,name:hr_course.ir_cron_post_wip +msgid "HR Course: Check validity date" +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee__id +#: model:ir.model.fields,field_description:hr_course.field_res_company__id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__id +msgid "ID" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_exception_icon +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_icon +msgid "Icon to indicate an exception activity." +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__message_unread +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_needaction +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_employee____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_company____last_update +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings____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_res_company__course_expiration_channel_id +#: model:ir.model.fields,field_description:hr_course.field_res_config_settings__course_expiration_channel_id +msgid "Mailing list to alert" +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__my_activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__my_activity_date_deadline +msgid "My Activity Deadline" +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__activity_date_deadline +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_summary +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__activity_type_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_type_id +msgid "Next Activity Type" +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 which requires an 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,help:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Number of unread messages" +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__activity_user_id +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__activity_user_id +msgid "Responsible User" +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:ir.model.fields,help:hr_course.field_hr_course_attendee__course_expiration_alert_sent +msgid "Shows if notification email for course was sent" +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 +#: model:ir.model.fields,help:hr_course.field_hr_course__activity_state +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: hr_course +#: 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,help:hr_course.field_hr_course__activity_exception_decoration +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course__message_unread_counter +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,field_description:hr_course.field_hr_course_attendee__course_validity_end_date +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__validity_end_date +msgid "Validity End Date" +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 +#: model:ir.model.fields,field_description:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,field_description:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_course +#: model:ir.model.fields,help:hr_course.field_hr_course__website_message_ids +#: model:ir.model.fields,help:hr_course.field_hr_course_schedule__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_course +#: 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/odex25_survey/hr_course/migrations/14.0.2.0.0/noupdate_changes.xml b/odex25_survey/hr_course/migrations/14.0.2.0.0/noupdate_changes.xml new file mode 100644 index 000000000..88b331b6b --- /dev/null +++ b/odex25_survey/hr_course/migrations/14.0.2.0.0/noupdate_changes.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/odex25_survey/hr_course/migrations/14.0.2.0.0/post-migration.py b/odex25_survey/hr_course/migrations/14.0.2.0.0/post-migration.py new file mode 100644 index 000000000..eaee315a4 --- /dev/null +++ b/odex25_survey/hr_course/migrations/14.0.2.0.0/post-migration.py @@ -0,0 +1,41 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade # pylint: disable=W7936 + + +@openupgrade.migrate() +def migrate(env, version): + if openupgrade.column_exists(env.cr, "hr_course", "migration_course_id"): + return + openupgrade.logged_query( + env.cr, + """ + ALTER TABLE hr_course + ADD COLUMN migration_course_id integer""", + ) + openupgrade.logged_query( + env.cr, + """ + INSERT INTO hr_course ( + name, + category_id, + permanence, + permanence_time, + migration_course_id + ) + SELECT name, category_id, permanence, permanence_time, id + FROM hr_course_schedule + """, + ) + openupgrade.logged_query( + env.cr, + """ + UPDATE hr_course_schedule hcs + SET course_id = hc.id + FROM hr_course hc + WHERE hc.migration_course_id = hcs.id + """, + ) + openupgrade.load_data( + env.cr, "hr_course", "migrations/14.0.2.0.0/noupdate_changes.xml" + ) diff --git a/odex25_survey/hr_course/migrations/14.0.2.0.0/pre-migration.py b/odex25_survey/hr_course/migrations/14.0.2.0.0/pre-migration.py new file mode 100644 index 000000000..97e762fd6 --- /dev/null +++ b/odex25_survey/hr_course/migrations/14.0.2.0.0/pre-migration.py @@ -0,0 +1,20 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade # pylint: disable=W7936 + +_models_renames = [ + ("hr.course", "hr.course.schedule"), +] +_column_renames = { + "hr_course_attendee": [("course_id", "course_schedule_id")], +} +_table_renames = [("hr_course", "hr_course_schedule")] + + +@openupgrade.migrate() +def migrate(env, version): + if openupgrade.table_exists(env.cr, "hr_course_schedule"): + return + openupgrade.rename_models(env.cr, _models_renames) + openupgrade.rename_tables(env.cr, _table_renames) + openupgrade.rename_columns(env.cr, _column_renames) diff --git a/odex25_survey/hr_course/models/__init__.py b/odex25_survey/hr_course/models/__init__.py new file mode 100644 index 000000000..139bb8f4f --- /dev/null +++ b/odex25_survey/hr_course/models/__init__.py @@ -0,0 +1,7 @@ +from . import hr_employee +from . import hr_course +from . import hr_course_schedule +from . import res_company +from . import res_config_settings +from . import hr_course_attendee +from . import hr_course_category diff --git a/odex25_survey/hr_course/models/hr_course.py b/odex25_survey/hr_course/models/hr_course.py new file mode 100644 index 000000000..94d7b99e2 --- /dev/null +++ b/odex25_survey/hr_course/models/hr_course.py @@ -0,0 +1,31 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from odoo import api, fields, models + + +class HrCourse(models.Model): + _name = "hr.course" + _description = "Course" + _inherit = ["mail.thread", "mail.activity.mixin"] + + name = fields.Char(string="Name", 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(string="Permanence time", 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 diff --git a/odex25_survey/hr_course/models/hr_course_attendee.py b/odex25_survey/hr_course/models/hr_course_attendee.py new file mode 100644 index 000000000..945bd6e44 --- /dev/null +++ b/odex25_survey/hr_course/models/hr_course_attendee.py @@ -0,0 +1,40 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import 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 + ) + course_id = fields.Many2one(related="course_schedule_id.course_id") + course_validity_end_date = fields.Date( + related="course_schedule_id.validity_end_date" + ) + + name = fields.Char(related="course_schedule_id.name", readonly=True) + course_expiration_alert_sent = fields.Boolean( + help="Shows if notification email for course was sent" + ) + 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"), + ], + string="Result", + default="pending", + ) + active = fields.Boolean(default=True, readonly=True) + + def _remove_from_course(self): + return [(1, self.id, {"active": False})] diff --git a/odex25_survey/hr_course/models/hr_course_category.py b/odex25_survey/hr_course/models/hr_course_category.py new file mode 100644 index 000000000..ea33f8554 --- /dev/null +++ b/odex25_survey/hr_course/models/hr_course_category.py @@ -0,0 +1,13 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +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/odex25_survey/hr_course/models/hr_course_schedule.py b/odex25_survey/hr_course/models/hr_course_schedule.py new file mode 100644 index 000000000..efcd5fee7 --- /dev/null +++ b/odex25_survey/hr_course/models/hr_course_schedule.py @@ -0,0 +1,206 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging +from datetime import timedelta + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + +_logger = logging.getLogger(__name__) + + +class HrCourseSchedule(models.Model): + _name = "hr.course.schedule" + _description = "Course Schedule" + _inherit = ["mail.thread", "mail.activity.mixin"] + + name = fields.Char(string="Name", required=True, tracking=True) + course_id = fields.Many2one("hr.course", string="Course", required=True) + validity_end_date = fields.Date() + start_date = fields.Date( + string="Start date", + readonly=True, + states={"draft": [("readonly", False)]}, + tracking=True, + ) + end_date = fields.Date( + string="End date", + readonly=True, + states={"draft": [("readonly", False)]}, + 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( + string="Authorized by", + comodel_name="hr.employee", + required=True, + readonly=True, + states={"draft": [("readonly", False)]}, + 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("Comment") + training_company_id = fields.Many2one("res.partner", string="Training company") + instructor_ids = fields.Many2many("res.partner", string="Instructor") + place = fields.Char("Place") + + attendant_ids = fields.Many2many( + "hr.employee", + readonly=True, + states={"waiting_attendees": [("readonly", False)]}, + ) + course_attendee_ids = fields.One2many( + "hr.course.attendee", + inverse_name="course_schedule_id", + readonly=True, + states={"in_validation": [("readonly", False)]}, + ) + + course_expiration_alert_sent = fields.Boolean() + note = fields.Text() + + @api.model + def send_course_expiration_notification_email(self): + company_id = self.env.context.get("company_id") or self.env.company.id + channel = ( + self.env["res.company"].browse(company_id).course_expiration_channel_id + ) + + if not channel: + _logger.info("no channel found for course expiration alerts") + return False + + email_template = self.env.ref( + "hr_course.mail_template_validity_reminder" + ).with_context(lang=self.env.company.partner_id.lang) + email_values = email_template.generate_email(self.ids, ["body_html", "subject"]) + + values = email_values[self.id] + self.with_context(email_from=channel.alias_id.display_name,).message_post( + body=values["body_html"], + channel_ids=channel.ids, + message_type="email", + subject=values["subject"], + ) + return True + + @api.model + def process_validity(self): + company_id = self.env.context.get("company_id") or self.env.company.id + course_expiration_alerting_delay = ( + self.env["res.company"].browse(company_id).course_expiration_alerting_delay + ) + + for course_schedule in self: + if course_schedule.validity_end_date: + if ( + course_schedule.validity_end_date + - timedelta(days=course_expiration_alerting_delay) + <= fields.Date.today() + ): + course_schedule.course_expiration_alert_sent = True + course_schedule.send_course_expiration_notification_email() + + def _cron_check_validity_date(self): + items = self.search([("course_expiration_alert_sent", "=", False)]) + items.process_validity() + + @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/odex25_survey/hr_course/models/hr_employee.py b/odex25_survey/hr_course/models/hr_employee.py new file mode 100644 index 000000000..199f274af --- /dev/null +++ b/odex25_survey/hr_course/models/hr_employee.py @@ -0,0 +1,28 @@ +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): + result = self.env["ir.actions.act_window"]._for_xml_id( + "hr_course.action_view_course" + ) + result["domain"] = [("employee_id", "=", self.id)] + return result diff --git a/odex25_survey/hr_course/models/res_company.py b/odex25_survey/hr_course/models/res_company.py new file mode 100644 index 000000000..0450ab3e9 --- /dev/null +++ b/odex25_survey/hr_course/models/res_company.py @@ -0,0 +1,19 @@ +# Copyright 2021 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + course_expiration_channel_id = fields.Many2one( + "mail.channel", + string="Mailing list to alert", + default=lambda self: self.env.ref( + "hr_course.mail_channel_course_validity", raise_if_not_found=False + ), + ) + course_expiration_alerting_delay = fields.Integer( + string="Alerting delay before end of validity (days)" + ) diff --git a/odex25_survey/hr_course/models/res_config_settings.py b/odex25_survey/hr_course/models/res_config_settings.py new file mode 100644 index 000000000..d5fd03f6e --- /dev/null +++ b/odex25_survey/hr_course/models/res_config_settings.py @@ -0,0 +1,15 @@ +# Copyright 2021 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + course_expiration_channel_id = fields.Many2one( + related="company_id.course_expiration_channel_id", readonly=False + ) + course_expiration_alerting_delay = fields.Integer( + related="company_id.course_expiration_alerting_delay", readonly=False + ) diff --git a/odex25_survey/hr_course/readme/CONTRIBUTORS.rst b/odex25_survey/hr_course/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..580b559c7 --- /dev/null +++ b/odex25_survey/hr_course/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Enric Tobella +* Jaime Arroyo +* Anna Janiszewska diff --git a/odex25_survey/hr_course/readme/DESCRIPTION.rst b/odex25_survey/hr_course/readme/DESCRIPTION.rst new file mode 100644 index 000000000..c19d8bafb --- /dev/null +++ b/odex25_survey/hr_course/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows your to manage employee's training courses, course dates and all its +validation process. diff --git a/odex25_survey/hr_course/readme/USAGE.rst b/odex25_survey/hr_course/readme/USAGE.rst new file mode 100644 index 000000000..b13cfdb4d --- /dev/null +++ b/odex25_survey/hr_course/readme/USAGE.rst @@ -0,0 +1,8 @@ +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/odex25_survey/hr_course/security/course_security.xml b/odex25_survey/hr_course/security/course_security.xml new file mode 100644 index 000000000..60bee9e5e --- /dev/null +++ b/odex25_survey/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/odex25_survey/hr_course/security/ir.model.access.csv b/odex25_survey/hr_course/security/ir.model.access.csv new file mode 100644 index 000000000..f383bda61 --- /dev/null +++ b/odex25_survey/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/odex25_survey/hr_course/static/description/icon.png b/odex25_survey/hr_course/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/odex25_survey/hr_course/static/description/index.html b/odex25_survey/hr_course/static/description/index.html new file mode 100644 index 000000000..e62fa6026 --- /dev/null +++ b/odex25_survey/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/odex25_survey/hr_course/tests/__init__.py b/odex25_survey/hr_course/tests/__init__.py new file mode 100644 index 000000000..208b53bcd --- /dev/null +++ b/odex25_survey/hr_course/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_course diff --git a/odex25_survey/hr_course/tests/test_hr_course.py b/odex25_survey/hr_course/tests/test_hr_course.py new file mode 100644 index 000000000..614d9091d --- /dev/null +++ b/odex25_survey/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(TestHrCourse, self).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/odex25_survey/hr_course/views/hr_course_category_views.xml b/odex25_survey/hr_course/views/hr_course_category_views.xml new file mode 100644 index 000000000..be2b913c6 --- /dev/null +++ b/odex25_survey/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/odex25_survey/hr_course/views/hr_course_schedule_views.xml b/odex25_survey/hr_course/views/hr_course_schedule_views.xml new file mode 100644 index 000000000..bf8ab4ee5 --- /dev/null +++ b/odex25_survey/hr_course/views/hr_course_schedule_views.xml @@ -0,0 +1,224 @@ + + + + + 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/odex25_survey/hr_course/views/hr_course_views.xml b/odex25_survey/hr_course/views/hr_course_views.xml new file mode 100644 index 000000000..e93b86afa --- /dev/null +++ b/odex25_survey/hr_course/views/hr_course_views.xml @@ -0,0 +1,96 @@ + + + + + hr.course.form + hr.course + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+ + hr.course.tree + hr.course + + + + + + + + + + + Courses + hr.course + tree,form + + + +
diff --git a/odex25_survey/hr_course/views/hr_employee_views.xml b/odex25_survey/hr_course/views/hr_employee_views.xml new file mode 100644 index 000000000..2ca316900 --- /dev/null +++ b/odex25_survey/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 + + +
diff --git a/odex25_survey/hr_course/views/hr_settings.xml b/odex25_survey/hr_course/views/hr_settings.xml new file mode 100644 index 000000000..54bf1288b --- /dev/null +++ b/odex25_survey/hr_course/views/hr_settings.xml @@ -0,0 +1,29 @@ + + + + Set course notification + res.config.settings + + + +

Courses

+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_survey/hr_course_survey/README.rst b/odex25_survey/hr_course_survey/README.rst new file mode 100644 index 000000000..568d5dc06 --- /dev/null +++ b/odex25_survey/hr_course_survey/README.rst @@ -0,0 +1,94 @@ +================ +Hr Course Survey +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9106aa496f0813d33af06a01289e734c8bc3215a3a3967eeffb414c14713b316 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/14.0/hr_course_survey + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-14-0/hr-14-0-hr_course_survey + :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=14.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to add a survey to your employee's training courses. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +·Create a Survey: Surveys + +·Create a Course: Employees -> Courses + +·Add the Survey to the Course (Examination Survey field) + +·Create a Training Schedule: Employees -> Courses Schedule + +·Assign attendees to continue + +(If a course is failed, you can select the "retry" option) + +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 +* Olga Marco + +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/odex25_survey/hr_course_survey/__init__.py b/odex25_survey/hr_course_survey/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/odex25_survey/hr_course_survey/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odex25_survey/hr_course_survey/__manifest__.py b/odex25_survey/hr_course_survey/__manifest__.py new file mode 100644 index 000000000..54bc39ab0 --- /dev/null +++ b/odex25_survey/hr_course_survey/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2021 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Hr Course Survey", + "summary": """ + Evaluate a course using a Schedule""", + "version": "14.0.1.0.2", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", +"category":"Odex25-Survey/Odex25-Survey", + "website": "https://github.com/OCA/hr", + "depends": ["hr_course", "survey"], + "data": [ + "data/mail.xml", + "views/hr_course_attendee.xml", + "views/hr_course.xml", + "views/hr_course_schedule.xml", + ], + "demo": [], +} diff --git a/odex25_survey/hr_course_survey/data/mail.xml b/odex25_survey/hr_course_survey/data/mail.xml new file mode 100644 index 000000000..baf192285 --- /dev/null +++ b/odex25_survey/hr_course_survey/data/mail.xml @@ -0,0 +1,41 @@ + + + + Survey: Invite + + Participate to ${object.survey_id.title} survey + ${(object.partner_id.email_formatted or object.email) |safe} + +
+

+ Dear ${object.partner_id.name or 'participant'}

+ % if object.survey_id.certificate: + You have been invited to take a new certification. + % else: + We are conducting a survey and your response would be appreciated. + % endif +

+ % if object.deadline: + Please answer the survey for ${format_date(object.deadline)}.

+ % endif + Thank you for your participation. +

+
+
+ ${object.partner_id.lang} + +
+
diff --git a/odex25_survey/hr_course_survey/i18n/ca_ES.po b/odex25_survey/hr_course_survey/i18n/ca_ES.po new file mode 100644 index 000000000..8955a4704 --- /dev/null +++ b/odex25_survey/hr_course_survey/i18n/ca_ES.po @@ -0,0 +1,131 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course_survey +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ca_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: hr_course_survey +#: model:mail.template,body_html:hr_course_survey.mail_template_user_input_invite +msgid "" +"
\n" +"

\n" +" Dear ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" You have been invited to take a new certification.\n" +" % else:\n" +" We are conducting a survey and your response would be " +"appreciated.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Please answer the survey for ${format_date(object.deadline)}.

\n" +" % endif\n" +" Thank you for your participation.\n" +"

\n" +"
\n" +" " +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course +msgid "Course" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_attendee +msgid "Course Attendee" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_schedule +msgid "Course Schedule" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__examination_survey_id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__examination_survey_id +msgid "Examination Survey" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__hr_course_attendee_ids +msgid "Hr Course Attendee" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__id +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__id +msgid "ID" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_course_survey +#: model:mail.template,subject:hr_course_survey.mail_template_user_input_invite +msgid "Participate to ${object.survey_id.title} survey" +msgstr "" + +#. module: hr_course_survey +#: model_terms:ir.ui.view,arch_db:hr_course_survey.hr_course_attendee_tree_view +msgid "Retry" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__survey_answer_id +msgid "Survey Answer" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_survey_user_input +msgid "Survey User Input" +msgstr "" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent because the previous survey has not been answered" +msgstr "" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent if the user has not failed" +msgstr "" diff --git a/odex25_survey/hr_course_survey/i18n/es.po b/odex25_survey/hr_course_survey/i18n/es.po new file mode 100644 index 000000000..bc41faa4b --- /dev/null +++ b/odex25_survey/hr_course_survey/i18n/es.po @@ -0,0 +1,227 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course_survey +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-02-18 21:33+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: hr_course_survey +#: model:mail.template,body_html:hr_course_survey.mail_template_user_input_invite +msgid "" +"
\n" +"

\n" +" Dear ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" You have been invited to take a new certification.\n" +" % else:\n" +" We are conducting a survey and your response would be " +"appreciated.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Please answer the survey for ${format_date(object.deadline)}.

\n" +" % endif\n" +" Thank you for your participation.\n" +"

\n" +"
\n" +" " +msgstr "" +"
\n" +"

\n" +" Querido ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" Has sido invitado a tomar la siguiente certificación.\n" +" % else:\n" +" Estamos realizanod la siguiente encuesta y nos interesaría saber " +"tu opinión.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Por favor, responde antes del ${format_date(object.deadline)}.<" +"br/>
\n" +" % endif\n" +" Grácias por tu participación.\n" +"

\n" +"
\n" +" " + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course +msgid "Course" +msgstr "Curso" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_attendee +msgid "Course Attendee" +msgstr "Asistente" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_schedule +msgid "Course Schedule" +msgstr "Programación del curso" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__examination_survey_id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__examination_survey_id +msgid "Examination Survey" +msgstr "Encuesta de examen" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__hr_course_attendee_ids +msgid "Hr Course Attendee" +msgstr "Asistente" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__id +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__id +msgid "ID" +msgstr "ID" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: hr_course_survey +#: model:mail.template,subject:hr_course_survey.mail_template_user_input_invite +msgid "Participate to ${object.survey_id.title} survey" +msgstr "Participa a en la encuesta ${object.surey_id.title}" + +#. module: hr_course_survey +#: model_terms:ir.ui.view,arch_db:hr_course_survey.hr_course_attendee_tree_view +msgid "Retry" +msgstr "Reintentar" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__survey_answer_id +msgid "Survey Answer" +msgstr "Respuesta" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_survey_user_input +msgid "Survey User Input" +msgstr "Entrada de usuario de la encuesta" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent because the previous survey has not been answered" +msgstr "" +"No se puede enviar la encuesta por que el anterior envío no ha sido " +"contestado" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent if the user has not failed" +msgstr "La encuesta no puede reenviarse si el usuario no ha suspendido" + +#~ msgid "" +#~ "
\n" +#~ "

\n" +#~ " Dear ${object.partner_id.name or 'participant'}

\n" +#~ " % if object.survey_id.certificate:\n" +#~ " You have been invited to take a new certification.\n" +#~ " % else:\n" +#~ " We are conducting a survey and your response would be " +#~ "appreciated.\n" +#~ " % endif\n" +#~ "

\n" +#~ " % if object.deadline:\n" +#~ " Please answer the survey for ${format_date(object.deadline)}." +#~ "

\n" +#~ " % endif\n" +#~ " Thank you for your participation.\n" +#~ "

\n" +#~ "
\n" +#~ " " +#~ msgstr "" +#~ "
\n" +#~ "

\n" +#~ " Querido ${object.partner_id.name or 'participant'}

\n" +#~ " % if object.survey_id.certificate:\n" +#~ " Has sido invitado a tomar la siguiente certificación.\n" +#~ " % else:\n" +#~ " Estamos realizanod la siguiente encuesta y nos interesaría " +#~ "saber tu opinión.\n" +#~ " % endif\n" +#~ "

\n" +#~ " % if object.deadline:\n" +#~ " Por favor, responde antes del ${format_date(object.deadline)}." +#~ "

\n" +#~ " % endif\n" +#~ " Grácias por tu participación.\n" +#~ "

\n" +#~ "
\n" +#~ " " diff --git a/odex25_survey/hr_course_survey/i18n/es_PA.po b/odex25_survey/hr_course_survey/i18n/es_PA.po new file mode 100644 index 000000000..cb0889c2a --- /dev/null +++ b/odex25_survey/hr_course_survey/i18n/es_PA.po @@ -0,0 +1,131 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course_survey +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_PA\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_survey +#: model:mail.template,body_html:hr_course_survey.mail_template_user_input_invite +msgid "" +"
\n" +"

\n" +" Dear ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" You have been invited to take a new certification.\n" +" % else:\n" +" We are conducting a survey and your response would be " +"appreciated.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Please answer the survey for ${format_date(object.deadline)}.

\n" +" % endif\n" +" Thank you for your participation.\n" +"

\n" +"
\n" +" " +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course +msgid "Course" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_attendee +msgid "Course Attendee" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_schedule +msgid "Course Schedule" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__examination_survey_id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__examination_survey_id +msgid "Examination Survey" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__hr_course_attendee_ids +msgid "Hr Course Attendee" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__id +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__id +msgid "ID" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_course_survey +#: model:mail.template,subject:hr_course_survey.mail_template_user_input_invite +msgid "Participate to ${object.survey_id.title} survey" +msgstr "" + +#. module: hr_course_survey +#: model_terms:ir.ui.view,arch_db:hr_course_survey.hr_course_attendee_tree_view +msgid "Retry" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__survey_answer_id +msgid "Survey Answer" +msgstr "" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_survey_user_input +msgid "Survey User Input" +msgstr "" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent because the previous survey has not been answered" +msgstr "" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent if the user has not failed" +msgstr "" diff --git a/odex25_survey/hr_course_survey/i18n/it.po b/odex25_survey/hr_course_survey/i18n/it.po new file mode 100644 index 000000000..8da5e6b79 --- /dev/null +++ b/odex25_survey/hr_course_survey/i18n/it.po @@ -0,0 +1,164 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_course_survey +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-29 15:08+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_survey +#: model:mail.template,body_html:hr_course_survey.mail_template_user_input_invite +msgid "" +"
\n" +"

\n" +" Dear ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" You have been invited to take a new certification.\n" +" % else:\n" +" We are conducting a survey and your response would be " +"appreciated.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Please answer the survey for ${format_date(object.deadline)}.

\n" +" % endif\n" +" Thank you for your participation.\n" +"

\n" +"
\n" +" " +msgstr "" +"
\n" +"

\n" +" Spettabile ${object.partner_id.name or 'participant'}

\n" +" % if object.survey_id.certificate:\n" +" Siete invitati ad acquisire una nuova certificazione.\n" +" % else:\n" +" Stiamo conducendo un sondaggio è apprezzeremmo la vostra " +"risposta.\n" +" % endif\n" +"

\n" +" % if object.deadline:\n" +" Si prega di rispondere al sondaggio entro il " +"${format_date(object.deadline)}.

\n" +" % endif\n" +" Ringraziamo per la partecipazione.\n" +"

\n" +"
\n" +" " + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course +msgid "Course" +msgstr "Corso" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_attendee +msgid "Course Attendee" +msgstr "Partecipante al corso" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_hr_course_schedule +msgid "Course Schedule" +msgstr "Calendario corso" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__display_name +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__examination_survey_id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__examination_survey_id +msgid "Examination Survey" +msgstr "Sondaggio esame" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__hr_course_attendee_ids +msgid "Hr Course Attendee" +msgstr "Partecipante al corso RU" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__id +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule__id +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input__id +msgid "ID" +msgstr "ID" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_schedule____last_update +#: model:ir.model.fields,field_description:hr_course_survey.field_survey_user_input____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: hr_course_survey +#: model:mail.template,subject:hr_course_survey.mail_template_user_input_invite +msgid "Participate to ${object.survey_id.title} survey" +msgstr "Partecipa al sondaggio ${object.survey_id.title}" + +#. module: hr_course_survey +#: model_terms:ir.ui.view,arch_db:hr_course_survey.hr_course_attendee_tree_view +msgid "Retry" +msgstr "Riprova" + +#. module: hr_course_survey +#: model:ir.model.fields,field_description:hr_course_survey.field_hr_course_attendee__survey_answer_id +msgid "Survey Answer" +msgstr "Risposta sondaggio" + +#. module: hr_course_survey +#: model:ir.model,name:hr_course_survey.model_survey_user_input +msgid "Survey User Input" +msgstr "Risposta utente al sondaggio" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent because the previous survey has not been answered" +msgstr "" +"Il sondaggio non può essere inviato perché il sondaggio precedente non è " +"stato compilato" + +#. module: hr_course_survey +#: code:addons/hr_course_survey/models/hr_course_attendee.py:0 +#, python-format +msgid "Survey cannot be sent if the user has not failed" +msgstr "Il sondaggio non può essere inviato se l'utente non ha fallito" diff --git a/odex25_survey/hr_course_survey/models/__init__.py b/odex25_survey/hr_course_survey/models/__init__.py new file mode 100644 index 000000000..6fee6add9 --- /dev/null +++ b/odex25_survey/hr_course_survey/models/__init__.py @@ -0,0 +1,4 @@ +from . import hr_course_schedule +from . import hr_course +from . import hr_course_attendee +from . import survey_user_input diff --git a/odex25_survey/hr_course_survey/models/hr_course.py b/odex25_survey/hr_course_survey/models/hr_course.py new file mode 100644 index 000000000..a9fdcf099 --- /dev/null +++ b/odex25_survey/hr_course_survey/models/hr_course.py @@ -0,0 +1,14 @@ +# Copyright 2021 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HrCourse(models.Model): + + _inherit = "hr.course" + + examination_survey_id = fields.Many2one( + "survey.survey", + domain=[("state", "=", "open"), ("scoring_type", "!=", "no_scoring")], + ) diff --git a/odex25_survey/hr_course_survey/models/hr_course_attendee.py b/odex25_survey/hr_course_survey/models/hr_course_attendee.py new file mode 100644 index 000000000..be20af828 --- /dev/null +++ b/odex25_survey/hr_course_survey/models/hr_course_attendee.py @@ -0,0 +1,80 @@ +# Copyright 2021 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging + +from odoo import _, fields, models, tools +from odoo.exceptions import ValidationError + +_logger = logging.getLogger(__name__) + + +class HrCourseAttendee(models.Model): + + _inherit = "hr.course.attendee" + + survey_answer_id = fields.Many2one("survey.user_input", readonly=True) + + def _get_examination_survey_vals(self): + vals = {} + if self.employee_id.user_id: + vals["user"] = self.employee_id.user_id + else: + vals["partner"] = ( + self.employee_id.address_id or self.employee_id.address_home_id + ) + return vals + + def _notify_survey(self): + template = self.env.ref("hr_course_survey.mail_template_user_input_invite") + subject = ( + self.env["mail.template"] + .with_context(safe=True) + ._render_template( + template.subject, + "survey.user_input", + [self.survey_answer_id.id], + post_process=True, + ) + )[self.survey_answer_id.id] + body = self.env["mail.template"]._render_template( + template.body_html, + "survey.user_input", + [self.survey_answer_id.id], + post_process=True, + )[self.survey_answer_id.id] + # post the message + mail_values = { + "email_from": tools.formataddr((self.env.user.name, self.env.user.email)), + "author_id": self.env.user.partner_id.id, + "model": None, + "res_id": None, + "subject": subject, + "body_html": body, + "auto_delete": True, + } + if self.survey_answer_id.partner_id: + mail_values["recipient_ids"] = [(4, self.survey_answer_id.partner_id.id)] + else: + mail_values["email_to"] = self.survey_answer_id.email + return self.env["mail.mail"].sudo().create(mail_values) + + def _send_survey(self): + vals = self._get_examination_survey_vals() + survey = self.course_schedule_id.examination_survey_id + self.survey_answer_id = survey._create_answer(**vals) + self._notify_survey() + + def resend_survey(self): + self.ensure_one() + if self.survey_answer_id.state != "done": + raise ValidationError( + _( + "Survey cannot be sent because the " + "previous survey has not been answered" + ) + ) + if self.result != "failed": + raise ValidationError(_("Survey cannot be sent if the user has not failed")) + self._send_survey() + self.write({"result": "pending"}) diff --git a/odex25_survey/hr_course_survey/models/hr_course_schedule.py b/odex25_survey/hr_course_survey/models/hr_course_schedule.py new file mode 100644 index 000000000..b6314cb7c --- /dev/null +++ b/odex25_survey/hr_course_survey/models/hr_course_schedule.py @@ -0,0 +1,22 @@ +# Copyright 2021 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HrCourseSchedule(models.Model): + + _inherit = "hr.course.schedule" + + examination_survey_id = fields.Many2one( + "survey.survey", + related="course_id.examination_survey_id", + ) + + def inprogress2validation(self): + result = super().inprogress2validation() + for record in self: + if record.examination_survey_id: + for attendee in record.course_attendee_ids: + attendee._send_survey() + return result diff --git a/odex25_survey/hr_course_survey/models/survey_user_input.py b/odex25_survey/hr_course_survey/models/survey_user_input.py new file mode 100644 index 000000000..9439539ce --- /dev/null +++ b/odex25_survey/hr_course_survey/models/survey_user_input.py @@ -0,0 +1,29 @@ +# Copyright 2021 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SurveyUserInput(models.Model): + + _inherit = "survey.user_input" + + hr_course_attendee_ids = fields.One2many( + "hr.course.attendee", inverse_name="survey_answer_id" + ) + + def _attendee_write_vals(self): + return { + "result": "failed" + if not self.scoring_success and self.survey_id.scoring_type != "no_scoring" + else "passed" + } + + def _mark_done(self): + result = super()._mark_done() + for user_input in self: + if user_input.hr_course_attendee_ids: + user_input.hr_course_attendee_ids.write( + user_input._attendee_write_vals() + ) + return result diff --git a/odex25_survey/hr_course_survey/readme/CONTRIBUTORS.rst b/odex25_survey/hr_course_survey/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..285c00fff --- /dev/null +++ b/odex25_survey/hr_course_survey/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Enric Tobella +* Olga Marco diff --git a/odex25_survey/hr_course_survey/readme/DESCRIPTION.rst b/odex25_survey/hr_course_survey/readme/DESCRIPTION.rst new file mode 100644 index 000000000..9dfac7b4c --- /dev/null +++ b/odex25_survey/hr_course_survey/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows you to add a survey to your employee's training courses. diff --git a/odex25_survey/hr_course_survey/readme/USAGE.rst b/odex25_survey/hr_course_survey/readme/USAGE.rst new file mode 100644 index 000000000..f6c543b23 --- /dev/null +++ b/odex25_survey/hr_course_survey/readme/USAGE.rst @@ -0,0 +1,13 @@ +To use this module, you need to: + +·Create a Survey: Surveys + +·Create a Course: Employees -> Courses + +·Add the Survey to the Course (Examination Survey field) + +·Create a Training Schedule: Employees -> Courses Schedule + +·Assign attendees to continue + +(If a course is failed, you can select the "retry" option) diff --git a/odex25_survey/hr_course_survey/static/description/icon.png b/odex25_survey/hr_course_survey/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/odex25_survey/hr_course_survey/static/description/index.html b/odex25_survey/hr_course_survey/static/description/index.html new file mode 100644 index 000000000..74573a8d4 --- /dev/null +++ b/odex25_survey/hr_course_survey/static/description/index.html @@ -0,0 +1,433 @@ + + + + + + +Hr Course Survey + + + +
+

Hr Course Survey

+ + +

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

+

This module allows you to add a survey to your employee’s training courses.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+

·Create a Survey: Surveys

+

·Create a Course: Employees -> Courses

+

·Add the Survey to the Course (Examination Survey field)

+

·Create a Training Schedule: Employees -> Courses Schedule

+

·Assign attendees to continue

+

(If a course is failed, you can select the “retry” option)

+
+
+

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/odex25_survey/hr_course_survey/tests/__init__.py b/odex25_survey/hr_course_survey/tests/__init__.py new file mode 100644 index 000000000..208b53bcd --- /dev/null +++ b/odex25_survey/hr_course_survey/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_course diff --git a/odex25_survey/hr_course_survey/tests/test_hr_course.py b/odex25_survey/hr_course_survey/tests/test_hr_course.py new file mode 100644 index 000000000..b981b0c1c --- /dev/null +++ b/odex25_survey/hr_course_survey/tests/test_hr_course.py @@ -0,0 +1,125 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import ValidationError + +from odoo.addons.survey.tests import common + + +class TestHrCourse(common.TestSurveyCommon): + def setUp(self): + super(TestHrCourse, self).setUp() + self.survey = ( + self.env["survey.survey"] + .with_user(self.survey_manager) + .create( + { + "title": "Test Survey", + "access_mode": "public", + "users_login_required": True, + "users_can_go_back": False, + "state": "open", + "scoring_type": "scoring_without_answers", + } + ) + ) + self.question = self._add_question( + self.page_0, + "Q0", + "simple_choice", + survey_id=self.survey.id, + labels=[ + {"value": "Choice0", "is_correct": True, "answer_score": 100}, + {"value": "Choice1"}, + ], + ) + self.course_categ = self.env["hr.course.category"].create({"name": "Category1"}) + self.employee1 = self.env["hr.employee"].create({"name": "Employee1"}) + self.employee2 = self.env["hr.employee"].create({"name": "Employee2"}) + self.course = self.env["hr.course"].create( + { + "name": "Test Course", + "category_id": self.course_categ.id, + "examination_survey_id": self.survey.id, + "permanence": False, + } + ) + + def test_hr_schedule(self): + self.course_schedule = self.env["hr.course.schedule"].create( + { + "name": "Test Schedule", + "course_id": self.course.id, + "cost": 100, + "examination_survey_id": self.survey.id, + "authorized_by": self.employee1.id, + "start_date": "2019-02-15", + "end_date": "2019-02-20", + } + ) + with self.assertRaises(ValidationError): + self.course_schedule.write({"end_date": "2019-02-10"}) + + self.assertEqual(self.course_schedule.state, "draft") + self.course_schedule.cancel_course() + self.assertEqual(self.course_schedule.state, "cancelled") + self.course_schedule.back2draft() + + self.course_schedule.draft2waiting() + self.assertEqual(self.course_schedule.state, "waiting_attendees") + + self.course_schedule.attendant_ids = [ + (6, 0, [self.employee1.id, self.employee2.id]) + ] + self.assertTrue(self.course_schedule.attendant_ids) + self.assertEqual(len(self.course_schedule.attendant_ids), 2) + + self.course_schedule.waiting2inprogress() + self.assertEqual(self.course_schedule.state, "in_progress") + self.assertEqual(len(self.course_schedule.course_attendee_ids), 2) + self.assertFalse(self.course_schedule.course_attendee_ids[0].survey_answer_id) + self.course_schedule.attendant_ids = [(2, self.employee2.id, 0)] + self.course_schedule.waiting2inprogress() + self.assertEqual(len(self.course_schedule.attendant_ids), 1) + self.assertEqual(len(self.course_schedule.course_attendee_ids), 1) + self.employee1._compute_count_courses() + self.assertEqual(self.employee1.count_courses, 1) + self.employee1.action_view_course() + + self.course_schedule.inprogress2validation() + self.assertEqual(self.course_schedule.state, "in_validation") + self.assertEqual(self.course_schedule.course_attendee_ids.result, "pending") + with self.assertRaises(ValidationError): + self.course_schedule.course_attendee_ids.resend_survey() + answer = self.course_schedule.course_attendee_ids.survey_answer_id + self.assertTrue(answer.hr_course_attendee_ids) + self._add_answer_line( + self.question, + answer, + self.question.suggested_answer_ids.filtered( + lambda l: l.value == "Choice1" + ).id, + answer_type="suggestion", + answer_fname="suggested_answer_id", + ) + answer._mark_done() + self.assertEqual(self.course_schedule.course_attendee_ids.result, "failed") + self.course_schedule.course_attendee_ids.resend_survey() + self.assertNotEqual( + answer, self.course_schedule.course_attendee_ids.survey_answer_id + ) + answer = self.course_schedule.course_attendee_ids.survey_answer_id + self.assertTrue(answer.hr_course_attendee_ids) + self._add_answer_line( + self.question, + answer, + self.question.suggested_answer_ids.filtered( + lambda l: l.value == "Choice0" + ).id, + answer_type="suggestion", + answer_fname="suggested_answer_id", + ) + answer._mark_done() + self.assertEqual(self.course_schedule.course_attendee_ids.result, "passed") + with self.assertRaises(ValidationError): + self.course_schedule.course_attendee_ids.resend_survey() diff --git a/odex25_survey/hr_course_survey/views/hr_course.xml b/odex25_survey/hr_course_survey/views/hr_course.xml new file mode 100644 index 000000000..46a1de3c8 --- /dev/null +++ b/odex25_survey/hr_course_survey/views/hr_course.xml @@ -0,0 +1,15 @@ + + + + + hr.course.form (in hr_course_survey) + hr.course + + + + + + + + diff --git a/odex25_survey/hr_course_survey/views/hr_course_attendee.xml b/odex25_survey/hr_course_survey/views/hr_course_attendee.xml new file mode 100644 index 000000000..c1c5fbe50 --- /dev/null +++ b/odex25_survey/hr_course_survey/views/hr_course_attendee.xml @@ -0,0 +1,26 @@ + + + + + hr.course.attendee.tree + hr.course.attendee + + + + + +