diff --git a/hr_employee_service/README.rst b/hr_employee_service/README.rst new file mode 100644 index 00000000000..1df099eb2ac --- /dev/null +++ b/hr_employee_service/README.rst @@ -0,0 +1,101 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +=================== +HR Employee Service +=================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:01e4b9b41587e119453d2e0e89c18a882316d7f7de421d4aa756bd989e3c0d95 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/19.0/hr_employee_service + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-19-0/hr-19-0-hr_employee_service + :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=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +With this module installed, HR Officer can keep records on employee +hire, start, and termination dates. This information is also used to +automatically calculate length of employee's service for the company. + +*Hire Date* typically is the date when employee has accepted or signed +the offer. + +*Start Date* typically is the date of the first official work day since +which employee is entitled to receiving benefits and various accrual +allocations. + +*Termination Date* typically is the date of the last official work day +since until which employee is entitled to receiving benefits and various +accrual allocations. + +**Table of contents** + +.. contents:: + :local: + +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 +------- + +* CorporateHub + +Contributors +------------ + +- `CorporateHub `__ + + - Alexey Pelykh + +- Saran Lim. +- Nattapong W. +- `Pesol `__: + + - Jonathan Oscategui Taza + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/hr `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_employee_service/__init__.py b/hr_employee_service/__init__.py new file mode 100644 index 00000000000..4b76c7b2d5c --- /dev/null +++ b/hr_employee_service/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/hr_employee_service/__manifest__.py b/hr_employee_service/__manifest__.py new file mode 100644 index 00000000000..07cd0305728 --- /dev/null +++ b/hr_employee_service/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright (C) 2018 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "HR Employee Service", + "version": "19.0.1.0.0", + "category": "Human Resources", + "website": "https://github.com/OCA/hr", + "author": "CorporateHub, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "summary": "Employee service information & duration", + "depends": ["hr"], + "data": ["views/hr_employee.xml"], +} diff --git a/hr_employee_service/i18n/ca.po b/hr_employee_service/i18n/ca.po new file mode 100644 index 00000000000..796044c2484 --- /dev/null +++ b/hr_employee_service/i18n/ca.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-03-21 14:17+0000\n" +"Last-Translator: Noel estudillo \n" +"Language-Team: none\n" +"Language: ca\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_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "mes(os)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "any(s)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "dia(es)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__display_name +msgid "Display Name" +msgstr "Nom de visualització" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Empleat" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Data de contractació" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "" +"Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"La data de contractació és normalment la data en la qual l'empleat completa " +"la paperassa de contractació" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__id +msgid "ID" +msgstr "ID" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee____last_update +msgid "Last Modified on" +msgstr "Darrera modificació el" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Antiguitat" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Antiguitat (dies)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Antiguitat (mesos)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Antiguitat (anys)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Informació de l'antiguitat" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Antiguitat en dies" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Data d'inici" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"La data d'inici és el primer dia que l'empleat realment treballa i aquesta " +"data s'utilitza per al càlcul de les assignacions de vacances reportades" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Data de finalització" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"La data de finalització és l'últim dia que l'empleat realment treballa i " +"aquesta data s'utilitza per al càlcul de les assignacions de vacances " +"reportades" diff --git a/hr_employee_service/i18n/de.po b/hr_employee_service/i18n/de.po new file mode 100644 index 00000000000..5294427cac6 --- /dev/null +++ b/hr_employee_service/i18n/de.po @@ -0,0 +1,106 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-11-25 13:58+0000\n" +"Last-Translator: Maria Sparenberg \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" +"X-Generator: Weblate 3.8\n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "Monat(e)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "Jahr(e)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "Tag(e)" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Mitarbeiter" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Datum der Anstellung" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"Das Datum der Anstellung ist das Datum, an dem der Mitarbeiter die " +"Anstellungsformulare ausfüllt." + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Anstellungsdauer" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Anstellungsdauer (Tage)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Anstellungsdauer (Monate)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Anstellungsdauer (Jahre)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Anstellung" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Dies ist die Anstellungsdauer in Tagen." + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Startdatum" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "Start date is the first day the employee actually works and this date is used for accrual leave allocations calculation" +msgstr "" +"Das Startdatum ist der Tag, an dem der Mitarbeiter das erste Mal tatsächlich " +"arbeitet. Das Datum wird auch für die Berechnung des angehäuften " +"Urlaubsanspruchs verwendet." + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Enddatum" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination date is the last day the employee actually works and this date is used for accrual leave allocations calculation" +msgstr "" +"Das Enddatum ist der Tag, an dem der Mitarbeiter das letzte Mal tatsächlich " +"arbeitet. Das Datum wird auch für die Berechnung des angehäuften " +"Urlaubsanspruchs verwendet." diff --git a/hr_employee_service/i18n/es.po b/hr_employee_service/i18n/es.po new file mode 100644 index 00000000000..a7ec9d341ab --- /dev/null +++ b/hr_employee_service/i18n/es.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-06-26 18:42+0000\n" +"Last-Translator: Jaime Arroyo \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.6.1\n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "mes(es)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "año(s)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "día(s)" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Empleado" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Fecha de Contratación" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"La fecha de contratación es normalmente la fecha en la que el empleado " +"completa el papeleo de contratación" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Antigüedad" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Antigüedad (días)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Antigüedad (meses)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Antigüedad (años)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Información de la Antigüedad" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Antigüedad en días" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Fecha de Inicio" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"La fecha de inicio es el primer día que el empleado realmente trabaja y esta " +"fecha se utiliza para el cálculo de las asignaciones de vacaciones devengadas" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Fecha de finalización" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"La fecha de finalización es el último día que el empleado realmente trabaja " +"y esta fecha se utiliza para el cálculo de las asignaciones de vacaciones " +"devengadas" diff --git a/hr_employee_service/i18n/fr.po b/hr_employee_service/i18n/fr.po new file mode 100644 index 00000000000..a96f09f5613 --- /dev/null +++ b/hr_employee_service/i18n/fr.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-05-23 20:19+0000\n" +"Last-Translator: Kévin Allard \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 3.6.1\n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "mois" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "année(s)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "jour(s)" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Employé(e)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Date d'embauche" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"La date d'embauche est normalement la date à laquelle l'employé complète les " +"nouveaux documents d'embauche" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Durée du service" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Durée du service (jours)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Durée du service (mois)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Durée du service (années)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Durée du service en jours" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Date de début" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"La date de début est le premier jour où l'employé(e) travaille réellement et " +"cette date est utilisée pour le calcul des allocations de congés selon la " +"comptabilité d'exercice" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Date de fin" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"La date de fin est le dernier jour où l'employé(e) travaille réellement et " +"cette date est utilisée pour le calcul des allocations de congés accumulés" diff --git a/hr_employee_service/i18n/hr_employee_service.pot b/hr_employee_service/i18n/hr_employee_service.pot new file mode 100644 index 00000000000..f5ed444a4b5 --- /dev/null +++ b/hr_employee_service/i18n/hr_employee_service.pot @@ -0,0 +1,100 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "" +"Hire date is normally the date an employee completes new hire paperwork" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" diff --git a/hr_employee_service/i18n/it.po b/hr_employee_service/i18n/it.po new file mode 100644 index 00000000000..49b3a0aae66 --- /dev/null +++ b/hr_employee_service/i18n/it.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-05-30 13:37+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_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "giorno(i)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "mese(i)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "anno(i)" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Dipendente" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Data assunzione" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "" +"Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"La data assunzione è normalmente la data in cui il dipendete completa il " +"modulo per la nuova assunzione" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Durata servizio" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Durata servizio (giorni)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Durata servizio (mesi)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Durata servizio (anni)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Informazione servizio" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Durata servizio in giorni" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Data inizio" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"La data inizio è il primo giorno in cui il dipendente ha effettivamente " +"lavorato e questa data è utilizzata per il calcolo preciso delle ferie" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Data termine" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"La data risoluzione è l'ultimo giorno in cui il dipendente ha effettivamente " +"lavorato e questa data è utilizzata per il calcolo preciso delle ferie" diff --git a/hr_employee_service/i18n/pt_BR.po b/hr_employee_service/i18n/pt_BR.po new file mode 100644 index 00000000000..72fd20ea2fc --- /dev/null +++ b/hr_employee_service/i18n/pt_BR.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-13 03:46+0000\n" +"Last-Translator: Eder Brito \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.3.2\n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "mês(s)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "ano(s)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "dia(s)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__display_name +msgid "Display Name" +msgstr "Nome de Exibição" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Funcionário" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "Data de Contratação" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "" +"Hire date is normally the date an employee completes new hire paperwork" +msgstr "" +"A data de contratação é normalmente a data em que um funcionário preenche a " +"nova papelada de contratação" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__id +msgid "ID" +msgstr "ID" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Duração do Serviço" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Duração do Serviço (dias)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Duração do Serviço (meses)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Duração do Serviço (anos)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Informação do Serviço" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Duração do serviço em dias" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "Data Inicial" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"A data inicial é o primeiro dia em que o funcionário realmente trabalha e " +"esta data é usada para o cálculo de alocações de férias por acumulação" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Data de Desligamento" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"A data de desligamento é o último dia em que o funcionário realmente " +"trabalha e esta data é usada para o cálculo de alocações de férias por " +"acumulação" diff --git a/hr_employee_service/i18n/tr.po b/hr_employee_service/i18n/tr.po new file mode 100644 index 00000000000..072f3a8b099 --- /dev/null +++ b/hr_employee_service/i18n/tr.po @@ -0,0 +1,107 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_service +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-01-30 12:09+0000\n" +"Last-Translator: Betül Öğmen \n" +"Language-Team: none\n" +"Language: tr\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 5.15.2\n" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "day(s)" +msgstr "gün" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "month(s)" +msgstr "ay" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "year(s)" +msgstr "yıl" + +#. module: hr_employee_service +#: model:ir.model,name:hr_employee_service.model_hr_employee +msgid "Employee" +msgstr "Çalışan" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_hire_date +msgid "Hire Date" +msgstr "İşe Başlama Tarihi" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_hire_date +msgid "" +"Hire date is normally the date an employee completes new hire paperwork" +msgstr "İşe giriş tarihi personelin işe giriş evraklarını tamamladığı tarihtir" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Duration" +msgstr "Çalışma Süresi" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_days +msgid "Service Duration (days)" +msgstr "Çalışma Süresi(gün)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_months +msgid "Service Duration (months)" +msgstr "Çalışma Süresi(ay)" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_duration_years +msgid "Service Duration (years)" +msgstr "Çalışma Süresi(yıl)" + +#. module: hr_employee_service +#: model_terms:ir.ui.view,arch_db:hr_employee_service.view_employee_form_inherit_extension +msgid "Service Information" +msgstr "Çalışma Bilgisi" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_duration +msgid "Service duration in days" +msgstr "Gün bazında çalışma süresi" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_start_date +msgid "Start Date" +msgstr "İşe Başlama Tarihi" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_start_date +msgid "" +"Start date is the first day the employee actually works and this date is " +"used for accrual leave allocations calculation" +msgstr "" +"Başlama tarihi personelin çalıştığı ilk gündür ve bu tarih tahakkuk izni " +"tahsislerinin hesaplanmasında da kullanılır" + +#. module: hr_employee_service +#: model:ir.model.fields,field_description:hr_employee_service.field_hr_employee__service_termination_date +msgid "Termination Date" +msgstr "Sonlanma Tarihi" + +#. module: hr_employee_service +#: model:ir.model.fields,help:hr_employee_service.field_hr_employee__service_termination_date +msgid "" +"Termination date is the last day the employee actually works and this date " +"is used for accrual leave allocations calculation" +msgstr "" +"Sonlanma tarihi personelin çalıştığı son gündür ve bu tarih tahakkuk izni " +"tahsislerinin hesaplanmasında da kullanılır" diff --git a/hr_employee_service/models/__init__.py b/hr_employee_service/models/__init__.py new file mode 100644 index 00000000000..7456e6897fe --- /dev/null +++ b/hr_employee_service/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import hr_employee diff --git a/hr_employee_service/models/hr_employee.py b/hr_employee_service/models/hr_employee.py new file mode 100644 index 00000000000..0fee2f5634e --- /dev/null +++ b/hr_employee_service/models/hr_employee.py @@ -0,0 +1,115 @@ +# Copyright (C) 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import timedelta +from math import fabs + +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models + + +class HrEmployee(models.Model): + _inherit = "hr.employee" + + service_hire_date = fields.Date( + string="Hire Date", + groups="hr.group_hr_user", + tracking=True, + help=( + "Hire date is normally the date an employee completes new hire paperwork" + ), + ) + service_start_date = fields.Date( + string="Start Date", + groups="hr.group_hr_user", + tracking=True, + help=( + "Start date is the first day the employee actually works and" + " this date is used for accrual leave allocations calculation" + ), + ) + service_termination_date = fields.Date( + string="Termination Date", + related="departure_date", + help=( + "Termination date is the last day the employee actually works and" + " this date is used for accrual leave allocations calculation" + ), + ) + service_duration = fields.Integer( + groups="hr.group_hr_user", + readonly=True, + compute="_compute_service_duration", + help="Service duration in days", + ) + service_duration_years = fields.Integer( + string="Service Duration (years)", + groups="hr.group_hr_user", + readonly=True, + compute="_compute_service_duration_display", + ) + service_duration_months = fields.Integer( + string="Service Duration (months)", + groups="hr.group_hr_user", + readonly=True, + compute="_compute_service_duration_display", + ) + service_duration_days = fields.Integer( + string="Service Duration (days)", + groups="hr.group_hr_user", + readonly=True, + compute="_compute_service_duration_display", + ) + + @api.depends("service_start_date", "service_termination_date") + def _compute_service_duration(self): + for record in self: + service_until = record.service_termination_date or fields.Date.today() + if record.service_start_date and service_until > record.service_start_date: + service_since = record.service_start_date + service_duration = fabs( + (service_until - service_since) / timedelta(days=1) + ) + record.service_duration = int(service_duration) + else: + record.service_duration = 0 + + @api.depends("service_start_date", "service_termination_date") + def _compute_service_duration_display(self): + for record in self: + service_until = record.service_termination_date or fields.Date.today() + if record.service_start_date and service_until > record.service_start_date: + service_duration = relativedelta( + service_until, record.service_start_date + ) + record.service_duration_years = service_duration.years + record.service_duration_months = service_duration.months + record.service_duration_days = service_duration.days + else: + record.service_duration_years = 0 + record.service_duration_months = 0 + record.service_duration_days = 0 + + @api.onchange("service_hire_date") + def _onchange_service_hire_date(self): + if not self.service_start_date: + self.service_start_date = self.service_hire_date + + def get_service_duration_from_date(self, date=None): + """ + Returns the employee service duration for the given date. + This function is used in OCA/payroll modules as a helper function + to calculate employee service duration calculated for the given date. + """ + self.ensure_one() + if not date or not self.service_start_date: + return {"years": 0, "months": 0, "days": 0} + if date > self.service_start_date: + service_duration = relativedelta(date, self.service_start_date) + return { + "years": service_duration.years, + "months": service_duration.months, + "days": service_duration.days, + } + return {"years": 0, "months": 0, "days": 0} diff --git a/hr_employee_service/pyproject.toml b/hr_employee_service/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/hr_employee_service/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/hr_employee_service/readme/CONTRIBUTORS.md b/hr_employee_service/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..df84ab9f4ce --- /dev/null +++ b/hr_employee_service/readme/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +- [CorporateHub](https://corporatehub.eu/) + - Alexey Pelykh \<\> +- Saran Lim. \<\> +- Nattapong W. \<\> +- [Pesol](https://www.pesol.es): + - Jonathan Oscategui Taza \<\> diff --git a/hr_employee_service/readme/DESCRIPTION.md b/hr_employee_service/readme/DESCRIPTION.md new file mode 100644 index 00000000000..84f3aaac82d --- /dev/null +++ b/hr_employee_service/readme/DESCRIPTION.md @@ -0,0 +1,14 @@ +With this module installed, HR Officer can keep records on employee +hire, start, and termination dates. This information is also used to +automatically calculate length of employee's service for the company. + +*Hire Date* typically is the date when employee has accepted or signed +the offer. + +*Start Date* typically is the date of the first official work day since +which employee is entitled to receiving benefits and various accrual +allocations. + +*Termination Date* typically is the date of the last official work day +since until which employee is entitled to receiving benefits and various +accrual allocations. diff --git a/hr_employee_service/static/description/icon.png b/hr_employee_service/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/hr_employee_service/static/description/icon.png differ diff --git a/hr_employee_service/static/description/index.html b/hr_employee_service/static/description/index.html new file mode 100644 index 00000000000..1b74a9e66f8 --- /dev/null +++ b/hr_employee_service/static/description/index.html @@ -0,0 +1,448 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

HR Employee Service

+ +

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

+

With this module installed, HR Officer can keep records on employee +hire, start, and termination dates. This information is also used to +automatically calculate length of employee’s service for the company.

+

Hire Date typically is the date when employee has accepted or signed +the offer.

+

Start Date typically is the date of the first official work day since +which employee is entitled to receiving benefits and various accrual +allocations.

+

Termination Date typically is the date of the last official work day +since until which employee is entitled to receiving benefits and various +accrual allocations.

+

Table of contents

+ +
+

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

+
    +
  • CorporateHub
  • +
+
+
+

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_employee_service/tests/__init__.py b/hr_employee_service/tests/__init__.py new file mode 100644 index 00000000000..45f44105d5e --- /dev/null +++ b/hr_employee_service/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_hr_employee_service diff --git a/hr_employee_service/tests/test_hr_employee_service.py b/hr_employee_service/tests/test_hr_employee_service.py new file mode 100644 index 00000000000..b38fc05eb41 --- /dev/null +++ b/hr_employee_service/tests/test_hr_employee_service.py @@ -0,0 +1,157 @@ +# Copyright (C) 2018 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from datetime import date +from unittest.mock import patch + +from dateutil.relativedelta import relativedelta + +from odoo import fields +from odoo.tests import common + + +class TestHrEmployeeService(common.TransactionCase): + def setUp(self): + super().setUp() + + self.today = fields.Date.today() + self.now = fields.Datetime.now() + self.Employee = self.env["hr.employee"] + self.SudoEmployee = self.Employee.sudo() + + def test_1(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #1", + "service_hire_date": (self.today - relativedelta(years=3)), + "service_start_date": (self.today - relativedelta(years=3)), + "departure_date": (self.today - relativedelta(years=1)), + } + ) + + self.assertEqual(employee.service_duration_years, 2) + self.assertEqual(employee.service_duration_months, 0) + self.assertEqual(employee.service_duration_days, 0) + + def test_2(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #2", + "service_hire_date": (self.today - relativedelta(years=3)), + "service_start_date": (self.today - relativedelta(years=3)), + } + ) + + self.assertEqual(employee.service_duration_years, 3) + self.assertEqual(employee.service_duration_months, 0) + self.assertEqual(employee.service_duration_days, 0) + + def test_3(self): + mocked_today = date(2019, 8, 27) + employee = self.SudoEmployee.create( + { + "name": "Employee #3", + "service_hire_date": (mocked_today - relativedelta(months=6)), + "service_start_date": (mocked_today - relativedelta(months=6)), + } + ) + + with patch("odoo.fields.Date.today") as today: + today.return_value = mocked_today + self.assertEqual(employee.service_duration_years, 0) + self.assertEqual(employee.service_duration_months, 6) + self.assertEqual(employee.service_duration_days, 0) + + def test_4(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #4", + "service_hire_date": (self.today - relativedelta(months=6)), + } + ) + + self.assertEqual(employee.service_duration_years, 0) + self.assertEqual(employee.service_duration_months, 0) + self.assertEqual(employee.service_duration_days, 0) + + def test_5(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #5", + "service_hire_date": (self.today - relativedelta(days=1)), + "service_start_date": (self.today - relativedelta(days=1)), + } + ) + + self.assertEqual(employee.service_duration, 1) + self.assertEqual(employee.service_duration_days, 1) + + def test_6(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #6", + "service_hire_date": self.today, + "service_start_date": self.today, + } + ) + + employee.service_hire_date = None + employee.service_start_date = None + + self.assertEqual(employee.service_duration_years, 0) + self.assertEqual(employee.service_duration_months, 0) + self.assertEqual(employee.service_duration_days, 0) + + def test_7(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #7", + "service_hire_date": (self.today - relativedelta(days=1)), + } + ) + + employee._onchange_service_hire_date() + + self.assertEqual(employee.service_duration_years, 0) + self.assertEqual(employee.service_duration_months, 0) + self.assertEqual(employee.service_duration_days, 1) + + def test_8(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #8", + "service_hire_date": (self.today - relativedelta(days=1)), + "service_start_date": (self.today - relativedelta(days=1)), + "departure_date": (self.today - relativedelta(years=1)), + } + ) + + self.assertEqual(employee.service_duration, 0) + + def test_get_service_duration_from_date(self): + employee = self.SudoEmployee.create( + { + "name": "Employee #9", + "service_hire_date": self.today - relativedelta(years=1), + "service_start_date": self.today - relativedelta(years=1), + } + ) + + result = employee.get_service_duration_from_date(None) + self.assertEqual(result, {"years": 0, "months": 0, "days": 0}) + + employee.service_start_date = False + result = employee.get_service_duration_from_date(self.today) + self.assertEqual(result, {"years": 0, "months": 0, "days": 0}) + + employee.service_start_date = self.today - relativedelta(years=1) + + search_date = self.today - relativedelta(months=10) + result = employee.get_service_duration_from_date(search_date) + self.assertEqual(result["years"], 0) + self.assertEqual(result["months"], 2) + self.assertEqual(result["days"], result["days"]) + + search_date = self.today - relativedelta(years=2) + result = employee.get_service_duration_from_date(search_date) + self.assertEqual(result, {"years": 0, "months": 0, "days": 0}) diff --git a/hr_employee_service/views/hr_employee.xml b/hr_employee_service/views/hr_employee.xml new file mode 100644 index 00000000000..1fb3d6f8a3c --- /dev/null +++ b/hr_employee_service/views/hr_employee.xml @@ -0,0 +1,35 @@ + + + + + view.employee.form.inherit.extension + hr.employee + + + + + + + + + + + + +