From d39d3a3b7cc66b7a85a9b39d9ef7daddb79dc954 Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Thu, 3 Jan 2019 14:39:28 +0200 Subject: [PATCH 01/17] hr_job_category: Migrate to 11.0 --- hr_job_category/README.rst | 103 ++++ hr_job_category/__init__.py | 2 + hr_job_category/__manifest__.py | 22 + hr_job_category/i18n/de.po | 43 ++ hr_job_category/i18n/es.po | 41 ++ hr_job_category/i18n/fi.po | 40 ++ hr_job_category/i18n/fr.po | 40 ++ hr_job_category/i18n/hr_job_category.pot | 35 ++ hr_job_category/i18n/it.po | 40 ++ hr_job_category/i18n/pt_BR.po | 41 ++ hr_job_category/i18n/ro.po | 41 ++ hr_job_category/i18n/sl.po | 42 ++ hr_job_category/models/__init__.py | 1 + hr_job_category/models/hr.py | 74 +++ hr_job_category/readme/CONTRIBUTORS.rst | 3 + hr_job_category/readme/DESCRIPTION.rst | 6 + hr_job_category/readme/INSTALL.rst | 7 + hr_job_category/readme/USAGE.rst | 6 + hr_job_category/static/description/icon.png | Bin 0 -> 5938 bytes hr_job_category/static/description/index.html | 449 ++++++++++++++++++ hr_job_category/tests/__init__.py | 1 + .../tests/test_hr_job_categories.py | 59 +++ hr_job_category/views/hr_view.xml | 16 + 23 files changed, 1112 insertions(+) create mode 100644 hr_job_category/README.rst create mode 100644 hr_job_category/__init__.py create mode 100644 hr_job_category/__manifest__.py create mode 100644 hr_job_category/i18n/de.po create mode 100644 hr_job_category/i18n/es.po create mode 100644 hr_job_category/i18n/fi.po create mode 100644 hr_job_category/i18n/fr.po create mode 100644 hr_job_category/i18n/hr_job_category.pot create mode 100644 hr_job_category/i18n/it.po create mode 100644 hr_job_category/i18n/pt_BR.po create mode 100644 hr_job_category/i18n/ro.po create mode 100644 hr_job_category/i18n/sl.po create mode 100644 hr_job_category/models/__init__.py create mode 100644 hr_job_category/models/hr.py create mode 100644 hr_job_category/readme/CONTRIBUTORS.rst create mode 100644 hr_job_category/readme/DESCRIPTION.rst create mode 100644 hr_job_category/readme/INSTALL.rst create mode 100644 hr_job_category/readme/USAGE.rst create mode 100644 hr_job_category/static/description/icon.png create mode 100644 hr_job_category/static/description/index.html create mode 100644 hr_job_category/tests/__init__.py create mode 100644 hr_job_category/tests/test_hr_job_categories.py create mode 100644 hr_job_category/views/hr_view.xml diff --git a/hr_job_category/README.rst b/hr_job_category/README.rst new file mode 100644 index 00000000000..2343da29acb --- /dev/null +++ b/hr_job_category/README.rst @@ -0,0 +1,103 @@ +========================== +HR Job Employee Categories +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github + :target: https://github.com/OCA/hr/tree/11.0/hr_job_category + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-11-0/hr-11-0-hr_job_category + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/116/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module was written to extend the functionality of jobs +to support tagging employees based on their job positions. +For example, all Supervisors could be attached to the Supervisors category. +Define which categories a job belongs to in the configuration for the job. +When an employee is assigned a particular job the categories attached to that +job will be attached to the employee record as well. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To install this module, you need to: + +* clone the branch 11.0 of the repository https://github.com/OCA/hr +* add the path to this repository in your configuration (addons-path) +* update the module list +* search for "HR Job Employee Categories" in your addons +* install the module + +Usage +===== + +Just like on Employee form, you can select Tags on every Job form view. +Once a contract is defined for an employee, the tags assigned to the job +position selected are copied to the employee. + +Note: If the job position is changed on the same contract, the tags from +old job position will be removed from employee. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Michael Telahun Makonnen +* Savoir-faire Linux +* Fekete Mihai (FBSR) + +Contributors +~~~~~~~~~~~~ + +* Michael Telahun Makonnen +* Savoir-faire Linux +* Fekete Mihai + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/hr `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_job_category/__init__.py b/hr_job_category/__init__.py new file mode 100644 index 00000000000..a9e3372262c --- /dev/null +++ b/hr_job_category/__init__.py @@ -0,0 +1,2 @@ + +from . import models diff --git a/hr_job_category/__manifest__.py b/hr_job_category/__manifest__.py new file mode 100644 index 00000000000..9cccc0513f1 --- /dev/null +++ b/hr_job_category/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2013 Michael Telahun Makonnen +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'HR Job Employee Categories', + 'version': '11.0.1.0.0', + 'category': 'Generic Modules/Human Resources', + 'summary': 'Adds tags to employee trough contract and job position', + 'author': "Michael Telahun Makonnen , " + "Savoir-faire Linux, " + "Fekete Mihai (FBSR), " + "Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/hr', + 'license': 'AGPL-3', + 'depends': [ + 'hr_contract', + ], + 'data': [ + 'views/hr_view.xml', + ], + 'installable': True, +} diff --git a/hr_job_category/i18n/de.po b/hr_job_category/i18n/de.po new file mode 100644 index 00000000000..452fe8e8c95 --- /dev/null +++ b/hr_job_category/i18n/de.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +# Rudolf Schnapka , 2016 +# Thomas A. Jaeger, 2015 +# Thomas A. Jaeger, 2015 +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-30 05:19+0000\n" +"PO-Revision-Date: 2016-01-26 09:53+0000\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: German (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"de/)\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_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "Assoziierte Schlagwörter" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Vertrag" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "Arbeitsplatzpositionen" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "z. B. Teilzeit" diff --git a/hr_job_category/i18n/es.po b/hr_job_category/i18n/es.po new file mode 100644 index 00000000000..fd0bf4e5740 --- /dev/null +++ b/hr_job_category/i18n/es.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +# Antonio Trueba, 2016 +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-30 05:19+0000\n" +"PO-Revision-Date: 2016-02-10 16:53+0000\n" +"Last-Translator: Antonio Trueba\n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"es/)\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" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "Etiquetas asociadas" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Contrato" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "p.e., Tiempo parcial" diff --git a/hr_job_category/i18n/fi.po b/hr_job_category/i18n/fi.po new file mode 100644 index 00000000000..764acdf482b --- /dev/null +++ b/hr_job_category/i18n/fi.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-14 04:15+0000\n" +"PO-Revision-Date: 2016-04-04 11:09+0000\n" +"Last-Translator: Jarmo Kortetjärvi \n" +"Language-Team: Finnish (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"fi/)\n" +"Language: fi\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_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Sopimus" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "" diff --git a/hr_job_category/i18n/fr.po b/hr_job_category/i18n/fr.po new file mode 100644 index 00000000000..b25096e93ad --- /dev/null +++ b/hr_job_category/i18n/fr.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-18 13:10+0000\n" +"PO-Revision-Date: 2015-07-27 23:44+0000\n" +"Last-Translator: <>\n" +"Language-Team: French (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"fr/)\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" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Contrat" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "Poste" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "p.e. À temps partiel" diff --git a/hr_job_category/i18n/hr_job_category.pot b/hr_job_category/i18n/hr_job_category.pot new file mode 100644 index 00000000000..e36422bf37e --- /dev/null +++ b/hr_job_category/i18n/hr_job_category.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +msgid "Employee Contract" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "" + diff --git a/hr_job_category/i18n/it.po b/hr_job_category/i18n/it.po new file mode 100644 index 00000000000..0b8a13ccdce --- /dev/null +++ b/hr_job_category/i18n/it.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-12 12:02+0000\n" +"PO-Revision-Date: 2015-07-27 23:44+0000\n" +"Last-Translator: <>\n" +"Language-Team: Italian (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"it/)\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" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Contratto" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "" diff --git a/hr_job_category/i18n/pt_BR.po b/hr_job_category/i18n/pt_BR.po new file mode 100644 index 00000000000..3d78a3f3bca --- /dev/null +++ b/hr_job_category/i18n/pt_BR.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-11 01:48+0000\n" +"PO-Revision-Date: 2016-03-08 03:19+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-hr-8-0/" +"language/pt_BR/)\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" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Contrato" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "Cargo" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "ex. Meio período" diff --git a/hr_job_category/i18n/ro.po b/hr_job_category/i18n/ro.po new file mode 100644 index 00000000000..849a5206086 --- /dev/null +++ b/hr_job_category/i18n/ro.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-18 13:10+0000\n" +"PO-Revision-Date: 2015-07-27 23:44+0000\n" +"Last-Translator: <>\n" +"Language-Team: Romanian (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Contract" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "Funcție" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "" diff --git a/hr_job_category/i18n/sl.po b/hr_job_category/i18n/sl.po new file mode 100644 index 00000000000..9c4a3aafebd --- /dev/null +++ b/hr_job_category/i18n/sl.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_job_category +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: hr (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-18 13:10+0000\n" +"PO-Revision-Date: 2015-08-01 15:48+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-hr-8-0/language/" +"sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: hr_job_category +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +msgid "Associated Tags" +msgstr "Povezane oznake" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_contract +#, fuzzy +msgid "Employee Contract" +msgstr "Pogodba" + +#. module: hr_job_category +#: model:ir.model,name:hr_job_category.model_hr_job +msgid "Job Position" +msgstr "Delovno mesto" + +#. module: hr_job_category +#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +msgid "e.g. Part Time" +msgstr "npr. Občasno" diff --git a/hr_job_category/models/__init__.py b/hr_job_category/models/__init__.py new file mode 100644 index 00000000000..b80db13ee6b --- /dev/null +++ b/hr_job_category/models/__init__.py @@ -0,0 +1 @@ +from . import hr diff --git a/hr_job_category/models/hr.py b/hr_job_category/models/hr.py new file mode 100644 index 00000000000..63389b10136 --- /dev/null +++ b/hr_job_category/models/hr.py @@ -0,0 +1,74 @@ +# Copyright 2013 Michael Telahun Makonnen +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api +import logging + +_logger = logging.getLogger(__name__) + + +class HRJob(models.Model): + _inherit = 'hr.job' + + category_ids = fields.Many2many('hr.employee.category', + 'job_category_rel', + 'job_id', + 'category_id', + string='Associated Tags') + + +class HRContract(models.Model): + _inherit = 'hr.contract' + + @api.multi + def _remove_tags(self, employee_id=None, job_id=None): + # TODO write tags only once + if not employee_id or not job_id: + return + employee = self.env['hr.employee'].browse(employee_id) + empl_tags = employee.category_ids + job = self.env['hr.job'].browse(job_id) + _logger.debug('Removing employee tags if tag exists on contract ' + 'job: %s', empl_tags) + for tag in job.category_ids: + if tag in empl_tags: + employee.write({'category_ids': [(3, tag.id)]}) + + @api.multi + def _tag_employees(self, employee_id=None, job_id=None): + if not employee_id or not job_id: + return + employee = self.env['hr.employee'].browse(employee_id) + empl_tags = employee.category_ids + job = self.env['hr.job'].browse(job_id) + for tag in job.category_ids: + if tag not in empl_tags: + _logger.debug("Adding employee tag if job tag doesn't " + "exists: %s", tag.name) + employee.write({'category_ids': [(4, tag.id)]}) + + @api.model + def create(self, vals): + res = super().create(vals) + self._tag_employees(vals.get('employee_id', False), + vals.get('job_id', False)) + return res + + @api.multi + def write(self, vals): + prev_data = self.read(['job_id']) + + res = super().write(vals) + + # Go through each record and delete tags associated with the previous + # job, then add the tags of the new job. + # + for contract in self: + for data in prev_data: + if (data.get('id') == contract.id and data['job_id'] and + data['job_id'][0] != contract.job_id.id): + self._remove_tags(contract.employee_id.id, + data['job_id'][0]) + self._tag_employees(contract.employee_id.id, + contract.job_id.id) + return res diff --git a/hr_job_category/readme/CONTRIBUTORS.rst b/hr_job_category/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..53714833f12 --- /dev/null +++ b/hr_job_category/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Michael Telahun Makonnen +* Savoir-faire Linux +* Fekete Mihai \ No newline at end of file diff --git a/hr_job_category/readme/DESCRIPTION.rst b/hr_job_category/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..e5cddb071ba --- /dev/null +++ b/hr_job_category/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module was written to extend the functionality of jobs +to support tagging employees based on their job positions. +For example, all Supervisors could be attached to the Supervisors category. +Define which categories a job belongs to in the configuration for the job. +When an employee is assigned a particular job the categories attached to that +job will be attached to the employee record as well. \ No newline at end of file diff --git a/hr_job_category/readme/INSTALL.rst b/hr_job_category/readme/INSTALL.rst new file mode 100644 index 00000000000..e3253deed81 --- /dev/null +++ b/hr_job_category/readme/INSTALL.rst @@ -0,0 +1,7 @@ +To install this module, you need to: + +* clone the branch 11.0 of the repository https://github.com/OCA/hr +* add the path to this repository in your configuration (addons-path) +* update the module list +* search for "HR Job Employee Categories" in your addons +* install the module \ No newline at end of file diff --git a/hr_job_category/readme/USAGE.rst b/hr_job_category/readme/USAGE.rst new file mode 100644 index 00000000000..108d6a55429 --- /dev/null +++ b/hr_job_category/readme/USAGE.rst @@ -0,0 +1,6 @@ +Just like on Employee form, you can select Tags on every Job form view. +Once a contract is defined for an employee, the tags assigned to the job +position selected are copied to the employee. + +Note: If the job position is changed on the same contract, the tags from +old job position will be removed from employee. \ No newline at end of file diff --git a/hr_job_category/static/description/icon.png b/hr_job_category/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..297dc71c85c5fdd8deafabfbb46093e04adc32d1 GIT binary patch literal 5938 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 HxC&%52rYWz659b%5VwO|`_ zaaQ#=6u&oY2zu6@mqcZA?3^$LLA1@GkSu(6^PPQWZZY;7F6YC8a_lpM(DkSGftGO% z_um`BHhClkx;H`JSk~Ttd5GY({L&1e?@ro;X?i4Ydl);F;wRVRx9Bn&kc!o)Sl~z_ z5CQ#86V0KQ-(9hBGUwud@rXduz%Mk|H{?8!wKzZ-O|LnpQ?+E;o^A!~V>^k6D6xnd zIH(qQ2<1O5{oVuI+Z|4ljOkl$8fWCQoRVkuv)in~o164Wzg-7S+U)G*09}+29bg-k z6|fFK0<%QNWb+Fb+3iD13oqZpvlsX3_mojiiInYFH`6Hf7)O~;ahL_4ubvp9`%UGp z$4M(6d~&)2-lA0-nLOpnwZuxjB`(iIufhdS;V%yiTBR5ca;J7Iwk%4mY5;+dFI7V; zz7^=|Q!NMo{@GM4@(t6Bw4yNg>M1as7 z(YKyLW4AaK(X=h#HMD}7BWG+}9EgNBfcL11b-Jw{g-ZnBAypD%V{C=a_RP9+%&mXv zYA!=`cuYK?S`G+ECwenaSJ^Yf?T3E1pL`42z?_cH$B1^Uy`R%FUR#geTc;oQU4v5O zDWGtLejeaw9f<(a^=oi+1*;)Np4onst25!+{sHy+FbRRd zPn{b1<`{#;i4{Pd-v>#1N^|3=j~2yNm1MJzAOMP%14VIuUuBixf~dO?jso!wj36qN#&u}7i( z(&mmB*QfBxJUKMh_Wbz~@Oh@10!Aik%d(Qjwj{icpZ#2S^1pDcuy{pM!1qsjWuJci zcS>gZplI~L&iaGBn5~cfKOpe&@Q8B$d%XO5yaHmp{9-&j>^yw`@*g!m+W*Jk?rG=j z5cK~yWRfPA{WFmNH$m6a;X{D6k3B*_KmeDshpVrxwU<4Yr;lU)xdg?(CInSQ4TVNI HtLXm&e3x`` literal 0 HcmV?d00001 diff --git a/hr_job_category/static/description/index.html b/hr_job_category/static/description/index.html new file mode 100644 index 00000000000..07358b4528b --- /dev/null +++ b/hr_job_category/static/description/index.html @@ -0,0 +1,449 @@ + + + + + + +HR Job Employee Categories + + + +
+

HR Job Employee Categories

+ + +

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

+

This module was written to extend the functionality of jobs +to support tagging employees based on their job positions. +For example, all Supervisors could be attached to the Supervisors category. +Define which categories a job belongs to in the configuration for the job. +When an employee is assigned a particular job the categories attached to that +job will be attached to the employee record as well.

+

Table of contents

+ +
+

Installation

+

To install this module, you need to:

+
    +
  • clone the branch 11.0 of the repository https://github.com/OCA/hr
  • +
  • add the path to this repository in your configuration (addons-path)
  • +
  • update the module list
  • +
  • search for “HR Job Employee Categories” in your addons
  • +
  • install the module
  • +
+
+
+

Usage

+

Just like on Employee form, you can select Tags on every Job form view. +Once a contract is defined for an employee, the tags assigned to the job +position selected are copied to the employee.

+

Note: If the job position is changed on the same contract, the tags from +old job position will be removed from employee.

+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+ +
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

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

+

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

+
+
+
+ + diff --git a/hr_job_category/tests/__init__.py b/hr_job_category/tests/__init__.py new file mode 100644 index 00000000000..16ace3d28d4 --- /dev/null +++ b/hr_job_category/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_job_categories diff --git a/hr_job_category/tests/test_hr_job_categories.py b/hr_job_category/tests/test_hr_job_categories.py new file mode 100644 index 00000000000..efcb58814c6 --- /dev/null +++ b/hr_job_category/tests/test_hr_job_categories.py @@ -0,0 +1,59 @@ +# Copyright 2014 Savoir-faire Linux +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common + + +class TestHrJobCategories(common.TransactionCase): + def setUp(self): + super(TestHrJobCategories, self).setUp() + self.employee_model = self.env['hr.employee'] + self.employee_categ_model = self.env['hr.employee.category'] + self.user_model = self.env['res.users'] + self.job_model = self.env['hr.job'] + self.contract_model = self.env['hr.contract'] + + # Create a employee + self.employee_id = self.employee_model.create({'name': 'Employee 1'}) + + # Create two employee categories + self.categ_id = self.employee_categ_model.create( + {'name': 'Category 1'}) + self.categ_2_id = self.employee_categ_model.create( + {'name': 'Category 2'}) + + # Create two jobs + self.job_id = self.job_model.create( + {'name': 'Job 1', + 'category_ids': [(6, 0, [self.categ_id.id])]}) + + self.job_2_id = self.job_model.create( + {'name': 'Job 2', + 'category_ids': [(6, 0, [self.categ_2_id.id])]}) + + # Create one contract + self.contract_id = self.contract_model.create( + {'name': 'Contract 1', + 'employee_id': self.employee_id.id, + 'wage': 50000}) + + def test_write_computes_with_normal_args(self): + """ + Test that write method on hr_contract computes without error + when the required data is given in parameter + + Check if the job categories are written to the employee. + """ + # Check if job categories are written to the employee + self.contract_id.write({'job_id': self.job_id.id}) + job_categ = [categ.id for categ in self.job_id.category_ids] + empl_categ = [categ.id for categ in self.employee_id.category_ids] + + self.assertTrue(all(x in empl_categ for x in job_categ)) + + # Check if job2 categories are written to the employee + self.contract_id.write({'job_id': self.job_2_id.id}) + job_categ = [categ.id for categ in self.job_2_id.category_ids] + empl_categ = [categ.id for categ in self.employee_id.category_ids] + + self.assertTrue(all(x in empl_categ for x in job_categ)) diff --git a/hr_job_category/views/hr_view.xml b/hr_job_category/views/hr_view.xml new file mode 100644 index 00000000000..fa0da9fa476 --- /dev/null +++ b/hr_job_category/views/hr_view.xml @@ -0,0 +1,16 @@ + + + + + hr.job.category + hr.job + + + + + + + + From 1fe2cf6b22f064eecb722a8b49c39c06b6663b50 Mon Sep 17 00:00:00 2001 From: Nikul-Chaudhary Date: Mon, 21 Jan 2019 00:18:36 +0530 Subject: [PATCH 02/17] [MIG] hr_job_category v11 to v12 --- hr_job_category/README.rst | 1 + hr_job_category/__init__.py | 1 + hr_job_category/__manifest__.py | 2 +- hr_job_category/models/__init__.py | 2 ++ hr_job_category/models/hr.py | 12 +++++++----- hr_job_category/readme/CONTRIBUTORS.rst | 3 ++- hr_job_category/tests/__init__.py | 2 ++ 7 files changed, 16 insertions(+), 7 deletions(-) diff --git a/hr_job_category/README.rst b/hr_job_category/README.rst index 2343da29acb..05f71a9580c 100644 --- a/hr_job_category/README.rst +++ b/hr_job_category/README.rst @@ -84,6 +84,7 @@ Contributors * Michael Telahun Makonnen * Savoir-faire Linux * Fekete Mihai +* Nikul Chaudhary Maintainers ~~~~~~~~~~~ diff --git a/hr_job_category/__init__.py b/hr_job_category/__init__.py index a9e3372262c..69f7babdfb1 100644 --- a/hr_job_category/__init__.py +++ b/hr_job_category/__init__.py @@ -1,2 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models diff --git a/hr_job_category/__manifest__.py b/hr_job_category/__manifest__.py index 9cccc0513f1..dc9a518453b 100644 --- a/hr_job_category/__manifest__.py +++ b/hr_job_category/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'HR Job Employee Categories', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Generic Modules/Human Resources', 'summary': 'Adds tags to employee trough contract and job position', 'author': "Michael Telahun Makonnen , " diff --git a/hr_job_category/models/__init__.py b/hr_job_category/models/__init__.py index b80db13ee6b..0cabad10f7d 100644 --- a/hr_job_category/models/__init__.py +++ b/hr_job_category/models/__init__.py @@ -1 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import hr diff --git a/hr_job_category/models/hr.py b/hr_job_category/models/hr.py index 63389b10136..9e3d0285b53 100644 --- a/hr_job_category/models/hr.py +++ b/hr_job_category/models/hr.py @@ -10,11 +10,13 @@ class HRJob(models.Model): _inherit = 'hr.job' - category_ids = fields.Many2many('hr.employee.category', - 'job_category_rel', - 'job_id', - 'category_id', - string='Associated Tags') + category_ids = fields.Many2many( + 'hr.employee.category', + 'job_category_rel', + 'job_id', + 'category_id', + string='Associated Tags' + ) class HRContract(models.Model): diff --git a/hr_job_category/readme/CONTRIBUTORS.rst b/hr_job_category/readme/CONTRIBUTORS.rst index 53714833f12..71ff60e08b0 100644 --- a/hr_job_category/readme/CONTRIBUTORS.rst +++ b/hr_job_category/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * Michael Telahun Makonnen * Savoir-faire Linux -* Fekete Mihai \ No newline at end of file +* Fekete Mihai +* Nikul Chaudhary \ No newline at end of file diff --git a/hr_job_category/tests/__init__.py b/hr_job_category/tests/__init__.py index 16ace3d28d4..95196a8de46 100644 --- a/hr_job_category/tests/__init__.py +++ b/hr_job_category/tests/__init__.py @@ -1 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import test_hr_job_categories From 11196240ce54fd878d2e5de6f189725ba0605eb7 Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Wed, 30 Jan 2019 11:41:58 +0200 Subject: [PATCH 03/17] [11.0][FIX] hr_job_category: fix access group --- hr_job_category/README.rst | 10 +++++----- hr_job_category/i18n/de.po | 20 +++++++++---------- hr_job_category/i18n/es.po | 4 ++-- hr_job_category/i18n/fi.po | 4 ++-- hr_job_category/i18n/fr.po | 4 ++-- hr_job_category/i18n/hr_job_category.pot | 6 +++--- hr_job_category/i18n/it.po | 4 ++-- hr_job_category/i18n/pt_BR.po | 16 +++++++-------- hr_job_category/i18n/ro.po | 4 ++-- hr_job_category/i18n/sl.po | 16 +++++++-------- hr_job_category/static/description/index.html | 9 +++++---- hr_job_category/views/hr_view.xml | 4 ++-- 12 files changed, 51 insertions(+), 50 deletions(-) diff --git a/hr_job_category/README.rst b/hr_job_category/README.rst index 05f71a9580c..6336e7244c3 100644 --- a/hr_job_category/README.rst +++ b/hr_job_category/README.rst @@ -14,13 +14,13 @@ HR Job Employee Categories :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github - :target: https://github.com/OCA/hr/tree/11.0/hr_job_category + :target: https://github.com/OCA/hr/tree/12.0/hr_job_category :alt: OCA/hr .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-11-0/hr-11-0-hr_job_category + :target: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_job_category :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/116/11.0 + :target: https://runbot.odoo-community.org/runbot/116/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -64,7 +64,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -99,6 +99,6 @@ 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. +This module is part of the `OCA/hr `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_job_category/i18n/de.po b/hr_job_category/i18n/de.po index 452fe8e8c95..8261a54fba2 100644 --- a/hr_job_category/i18n/de.po +++ b/hr_job_category/i18n/de.po @@ -11,33 +11,33 @@ msgstr "" "Project-Id-Version: hr (8.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-30 05:19+0000\n" -"PO-Revision-Date: 2016-01-26 09:53+0000\n" -"Last-Translator: Rudolf Schnapka \n" -"Language-Team: German (http://www.transifex.com/oca/OCA-hr-8-0/language/" -"de/)\n" +"PO-Revision-Date: 2019-08-23 14:45+0000\n" +"Last-Translator: Maria Sparenberg \n" +"Language-Team: German (http://www.transifex.com/oca/OCA-hr-8-0/language/de/)" +"\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.7.1\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "Assoziierte Schlagwörter" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_contract -#, fuzzy msgid "Employee Contract" -msgstr "Vertrag" +msgstr "Mitarbeitervertrag" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_job msgid "Job Position" -msgstr "Arbeitsplatzpositionen" +msgstr "Job-Position" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "z. B. Teilzeit" diff --git a/hr_job_category/i18n/es.po b/hr_job_category/i18n/es.po index fd0bf4e5740..96efaf99e6a 100644 --- a/hr_job_category/i18n/es.po +++ b/hr_job_category/i18n/es.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "Etiquetas asociadas" @@ -36,6 +36,6 @@ msgid "Job Position" msgstr "" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "p.e., Tiempo parcial" diff --git a/hr_job_category/i18n/fi.po b/hr_job_category/i18n/fi.po index 764acdf482b..f33c3bcac05 100644 --- a/hr_job_category/i18n/fi.po +++ b/hr_job_category/i18n/fi.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "" @@ -35,6 +35,6 @@ msgid "Job Position" msgstr "" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "" diff --git a/hr_job_category/i18n/fr.po b/hr_job_category/i18n/fr.po index b25096e93ad..dff3457ea7c 100644 --- a/hr_job_category/i18n/fr.po +++ b/hr_job_category/i18n/fr.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "" @@ -35,6 +35,6 @@ msgid "Job Position" msgstr "Poste" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "p.e. À temps partiel" diff --git a/hr_job_category/i18n/hr_job_category.pot b/hr_job_category/i18n/hr_job_category.pot index e36422bf37e..79c1127223c 100644 --- a/hr_job_category/i18n/hr_job_category.pot +++ b/hr_job_category/i18n/hr_job_category.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "" @@ -29,7 +29,7 @@ msgid "Job Position" msgstr "" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "" diff --git a/hr_job_category/i18n/it.po b/hr_job_category/i18n/it.po index 0b8a13ccdce..c6d38d87d47 100644 --- a/hr_job_category/i18n/it.po +++ b/hr_job_category/i18n/it.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "" @@ -35,6 +35,6 @@ msgid "Job Position" msgstr "" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "" diff --git a/hr_job_category/i18n/pt_BR.po b/hr_job_category/i18n/pt_BR.po index 3d78a3f3bca..ee51c896231 100644 --- a/hr_job_category/i18n/pt_BR.po +++ b/hr_job_category/i18n/pt_BR.po @@ -9,26 +9,26 @@ msgstr "" "Project-Id-Version: hr (8.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-03-11 01:48+0000\n" -"PO-Revision-Date: 2016-03-08 03:19+0000\n" -"Last-Translator: danimaribeiro \n" +"PO-Revision-Date: 2019-09-03 01:23+0000\n" +"Last-Translator: Rodrigo Macedo \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-hr-8-0/" "language/pt_BR/)\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" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.8\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" -msgstr "" +msgstr "Etiquetas Associadas" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_contract -#, fuzzy msgid "Employee Contract" -msgstr "Contrato" +msgstr "Contrato do Empregado" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_job @@ -36,6 +36,6 @@ msgid "Job Position" msgstr "Cargo" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "ex. Meio período" diff --git a/hr_job_category/i18n/ro.po b/hr_job_category/i18n/ro.po index 849a5206086..9312a2d1cdf 100644 --- a/hr_job_category/i18n/ro.po +++ b/hr_job_category/i18n/ro.po @@ -20,7 +20,7 @@ msgstr "" "2:1));\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "" @@ -36,6 +36,6 @@ msgid "Job Position" msgstr "Funcție" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "" diff --git a/hr_job_category/i18n/sl.po b/hr_job_category/i18n/sl.po index 9c4a3aafebd..26fcd125f00 100644 --- a/hr_job_category/i18n/sl.po +++ b/hr_job_category/i18n/sl.po @@ -9,27 +9,27 @@ msgstr "" "Project-Id-Version: hr (8.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-08-18 13:10+0000\n" -"PO-Revision-Date: 2015-08-01 15:48+0000\n" -"Last-Translator: Matjaž Mozetič \n" +"PO-Revision-Date: 2020-08-11 14:59+0000\n" +"Last-Translator: Matjaz Mozetic \n" "Language-Team: Slovenian (http://www.transifex.com/oca/OCA-hr-8-0/language/" "sl/)\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 3.10\n" #. module: hr_job_category -#: model:ir.model.fields,field_description:hr_job_category.field_hr_job_category_ids +#: model:ir.model.fields,field_description:hr_job_category.field_hr_job__category_ids msgid "Associated Tags" msgstr "Povezane oznake" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_contract -#, fuzzy msgid "Employee Contract" -msgstr "Pogodba" +msgstr "Pogodba o zaposlitvi" #. module: hr_job_category #: model:ir.model,name:hr_job_category.model_hr_job @@ -37,6 +37,6 @@ msgid "Job Position" msgstr "Delovno mesto" #. module: hr_job_category -#: model:ir.ui.view,arch_db:hr_job_category.view_job_form +#: model_terms:ir.ui.view,arch_db:hr_job_category.view_job_form msgid "e.g. Part Time" msgstr "npr. Občasno" diff --git a/hr_job_category/static/description/index.html b/hr_job_category/static/description/index.html index 07358b4528b..758aeda7d66 100644 --- a/hr_job_category/static/description/index.html +++ b/hr_job_category/static/description/index.html @@ -3,7 +3,7 @@ - + HR Job Employee Categories -
-

HR Job Employee Categories

+
+ + +Odoo Community Association + +
+

HR Job Employee Categories

-

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

+

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

This module was written to extend the functionality of jobs to support tagging employees based on their job positions. For example, all Supervisors could be attached to the Supervisors category. Define which @@ -390,7 +395,7 @@

HR Job Employee Categories

-

Usage

+

Usage

Just like on Employee form, you can select Tags on every Job form view. Once a contract is defined for an employee, the tags assigned to the job position selected are copied to the employee.

@@ -398,7 +403,7 @@

Usage

old job position will be removed from employee.

-

Bug Tracker

+

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 @@ -406,9 +411,9 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -439,5 +444,6 @@

Maintainers

+
From 869eb59a0308aae65f1e3f2dde60b26c194f7e74 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 22 Dec 2025 14:55:07 +0530 Subject: [PATCH 17/17] [MIG] hr_job_category: Migration to 19.0 --- hr_job_category/README.rst | 13 ++++++++----- hr_job_category/__manifest__.py | 4 ++-- hr_job_category/models/hr.py | 8 ++++---- hr_job_category/readme/CONTRIBUTORS.md | 2 ++ hr_job_category/static/description/index.html | 10 +++++++--- hr_job_category/tests/test_hr_job_categories.py | 9 +++++++-- 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/hr_job_category/README.rst b/hr_job_category/README.rst index 3481104abe3..3bef31c7067 100644 --- a/hr_job_category/README.rst +++ b/hr_job_category/README.rst @@ -21,13 +21,13 @@ HR Job Employee Categories :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/18.0/hr_job_category + :target: https://github.com/OCA/hr/tree/19.0/hr_job_category :alt: OCA/hr .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-18-0/hr-18-0-hr_job_category + :target: https://translation.odoo-community.org/projects/hr-19-0/hr-19-0-hr_job_category :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=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/hr&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -60,7 +60,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -82,6 +82,9 @@ Contributors - Fekete Mihai - Nikul Chaudhary - Italo LOPES +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- @@ -96,6 +99,6 @@ 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. +This module is part of the `OCA/hr `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_job_category/__manifest__.py b/hr_job_category/__manifest__.py index 67e83b84455..f6fda77e00e 100644 --- a/hr_job_category/__manifest__.py +++ b/hr_job_category/__manifest__.py @@ -3,7 +3,7 @@ { "name": "HR Job Employee Categories", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Generic Modules/Human Resources", "summary": "Adds tags to employee through contract and job position", "author": "Michael Telahun Makonnen , " @@ -12,7 +12,7 @@ "Odoo Community Association (OCA)", "website": "https://github.com/OCA/hr", "license": "AGPL-3", - "depends": ["hr_contract"], + "depends": ["hr"], "data": ["views/hr_view.xml"], "installable": True, } diff --git a/hr_job_category/models/hr.py b/hr_job_category/models/hr.py index e5cb668acec..8753c0bba0e 100644 --- a/hr_job_category/models/hr.py +++ b/hr_job_category/models/hr.py @@ -20,8 +20,8 @@ class HRJob(models.Model): ) -class HRContract(models.Model): - _inherit = "hr.contract" +class HRVersion(models.Model): + _inherit = "hr.version" def _remove_tags(self, job_id): if isinstance(job_id, int): @@ -57,9 +57,9 @@ def _tag_employees(self, job_id): @api.model_create_multi def create(self, vals_list): res = super().create(vals_list) - for vals in vals_list: + for record, vals in zip(res, vals_list, strict=False): if "job_id" in vals: - res._tag_employees(vals.get("job_id")) + record._tag_employees(vals.get("job_id")) return res def write(self, vals): diff --git a/hr_job_category/readme/CONTRIBUTORS.md b/hr_job_category/readme/CONTRIBUTORS.md index 8f601151aa0..cd0027a30f8 100644 --- a/hr_job_category/readme/CONTRIBUTORS.md +++ b/hr_job_category/readme/CONTRIBUTORS.md @@ -3,3 +3,5 @@ - Fekete Mihai \<\> - Nikul Chaudhary \<\> - Italo LOPES \<\> +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/hr_job_category/static/description/index.html b/hr_job_category/static/description/index.html index 812f70a4aa4..9fe12d818c0 100644 --- a/hr_job_category/static/description/index.html +++ b/hr_job_category/static/description/index.html @@ -374,7 +374,7 @@

HR Job Employee Categories

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:334f4006060852202ff2e1e565df3cdada501648421bb866aa531c156da54661 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module was written to extend the functionality of jobs to support tagging employees based on their job positions. For example, all Supervisors could be attached to the Supervisors category. Define which @@ -407,7 +407,7 @@

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.

+feedback.

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

@@ -428,6 +428,10 @@

Contributors

  • Fekete Mihai <feketemihai@gmail.com>
  • Nikul Chaudhary <nikulchaudhary2112@gmail.com>
  • Italo LOPES <italo.lopes@camptocamp.com>
  • +
  • Heliconia Solutions Pvt. Ltd.
      +
    • Bhavesh Heliconia
    • +
    +
  • @@ -439,7 +443,7 @@

    Maintainers

    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.

    +

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

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

    diff --git a/hr_job_category/tests/test_hr_job_categories.py b/hr_job_category/tests/test_hr_job_categories.py index e01bd277527..88bdebc2494 100644 --- a/hr_job_category/tests/test_hr_job_categories.py +++ b/hr_job_category/tests/test_hr_job_categories.py @@ -13,7 +13,7 @@ def setUpClass(cls): cls.employee_categ_model = cls.env["hr.employee.category"] cls.user_model = cls.env["res.users"] cls.job_model = cls.env["hr.job"] - cls.contract_model = cls.env["hr.contract"] + cls.contract_model = cls.env["hr.version"] # Create a employee cls.employee_id_1 = cls.employee_model.create({"name": "Employee 1"}) @@ -37,7 +37,12 @@ def setUpClass(cls): # Create one contract cls.contract_id = cls.contract_model.create( - {"name": "Contract 1", "employee_id": cls.employee_id_1.id, "wage": 50000} + { + "name": "Contract 1", + "employee_id": cls.employee_id_1.id, + "wage": 50000, + "date_version": "2023-01-01", + } ) def test_write_computes_with_normal_args(self):