From de7cec2df15213821555482a5e2410c8bd101f78 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Mon, 20 Nov 2023 09:29:53 +0100 Subject: [PATCH 01/10] [16.0][ADD] hr_payroll_document: New module hr_payroll_document --- hr_payroll_document/README.rst | 85 ++++ hr_payroll_document/__init__.py | 2 + hr_payroll_document/__manifest__.py | 17 + .../data/email_payroll_employee.xml | 20 + hr_payroll_document/i18n/ca_ES.po | 232 ++++++++++ hr_payroll_document/i18n/es.po | 232 ++++++++++ hr_payroll_document/models/__init__.py | 3 + hr_payroll_document/models/hr_employee.py | 14 + hr_payroll_document/models/ir_attachment.py | 14 + .../models/ir_attachment_payroll_custom.py | 18 + hr_payroll_document/readme/CONTRIBUTORS.rst | 2 + hr_payroll_document/readme/DESCRIPTION.rst | 1 + .../security/ir.model.access.csv | 3 + .../static/description/index.html | 424 ++++++++++++++++++ hr_payroll_document/tests/__init__.py | 1 + hr_payroll_document/tests/common.py | 51 +++ hr_payroll_document/tests/test.docx | Bin 0 -> 18655 bytes hr_payroll_document/tests/test.pdf | Bin 0 -> 33335 bytes .../tests/test_hr_payroll_document.py | 107 +++++ hr_payroll_document/wizard/__init__.py | 1 + .../wizard/payroll_management_wizard.py | 169 +++++++ .../wizard/payroll_management_wizard.xml | 42 ++ 22 files changed, 1438 insertions(+) create mode 100644 hr_payroll_document/README.rst create mode 100644 hr_payroll_document/__init__.py create mode 100644 hr_payroll_document/__manifest__.py create mode 100644 hr_payroll_document/data/email_payroll_employee.xml create mode 100644 hr_payroll_document/i18n/ca_ES.po create mode 100644 hr_payroll_document/i18n/es.po create mode 100644 hr_payroll_document/models/__init__.py create mode 100644 hr_payroll_document/models/hr_employee.py create mode 100644 hr_payroll_document/models/ir_attachment.py create mode 100644 hr_payroll_document/models/ir_attachment_payroll_custom.py create mode 100644 hr_payroll_document/readme/CONTRIBUTORS.rst create mode 100644 hr_payroll_document/readme/DESCRIPTION.rst create mode 100644 hr_payroll_document/security/ir.model.access.csv create mode 100644 hr_payroll_document/static/description/index.html create mode 100644 hr_payroll_document/tests/__init__.py create mode 100644 hr_payroll_document/tests/common.py create mode 100644 hr_payroll_document/tests/test.docx create mode 100644 hr_payroll_document/tests/test.pdf create mode 100644 hr_payroll_document/tests/test_hr_payroll_document.py create mode 100644 hr_payroll_document/wizard/__init__.py create mode 100644 hr_payroll_document/wizard/payroll_management_wizard.py create mode 100644 hr_payroll_document/wizard/payroll_management_wizard.xml diff --git a/hr_payroll_document/README.rst b/hr_payroll_document/README.rst new file mode 100644 index 000000000..d8023bfd5 --- /dev/null +++ b/hr_payroll_document/README.rst @@ -0,0 +1,85 @@ +===================== +HR - Payroll Document +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:3698f5f5e529d5d32ae80cdc1ab30660ad4e5d39b6d98f8dace97a0b233743c5 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fpayroll-lightgray.png?logo=github + :target: https://github.com/OCA/payroll/tree/16.0/hr_payroll_document + :alt: OCA/payroll +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_document + :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/payroll&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute. + +**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 +~~~~~~~ + +* APSL + +Contributors +~~~~~~~~~~~~ + +* Antoni Marroig Campomar +* Miquel Alzanillas Monserrat + +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. + +.. |maintainer-peluko00| image:: https://github.com/peluko00.png?size=40px + :target: https://github.com/peluko00 + :alt: peluko00 + +Current `maintainer `__: + +|maintainer-peluko00| + +This module is part of the `OCA/payroll `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_payroll_document/__init__.py b/hr_payroll_document/__init__.py new file mode 100644 index 000000000..134df2743 --- /dev/null +++ b/hr_payroll_document/__init__.py @@ -0,0 +1,2 @@ +from . import wizard +from . import models diff --git a/hr_payroll_document/__manifest__.py b/hr_payroll_document/__manifest__.py new file mode 100644 index 000000000..62648d123 --- /dev/null +++ b/hr_payroll_document/__manifest__.py @@ -0,0 +1,17 @@ +{ + "name": "HR - Payroll Document", + "summary": "Manage payroll for each employee", + "author": "APSL, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/payroll", + "license": "AGPL-3", + "category": "Payrolls", + "version": "16.0.1.0.0", + "depends": ["hr", "base_vat"], + "maintainers": ["peluko00"], + "external_dependencies": {"python": ["pypdf"]}, + "data": [ + "wizard/payroll_management_wizard.xml", + "security/ir.model.access.csv", + "data/email_payroll_employee.xml", + ], +} diff --git a/hr_payroll_document/data/email_payroll_employee.xml b/hr_payroll_document/data/email_payroll_employee.xml new file mode 100644 index 000000000..d3cb24cbc --- /dev/null +++ b/hr_payroll_document/data/email_payroll_employee.xml @@ -0,0 +1,20 @@ + + + + Payroll Employee + + {{object.company_id.email}} + {{object.work_email}} + Payroll {{ctx.get('subject')}} + + + + + +
{{object.company_id.name}}

Payroll

Hello ,


We send you the payroll with the subject .



+

+ + ]]> +
+
+
diff --git a/hr_payroll_document/i18n/ca_ES.po b/hr_payroll_document/i18n/ca_ES.po new file mode 100644 index 000000000..c51c4c966 --- /dev/null +++ b/hr_payroll_document/i18n/ca_ES.po @@ -0,0 +1,232 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_payroll_document +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-14 10:27+0000\n" +"PO-Revision-Date: 2023-12-14 10:27+0000\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_payroll_document +#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template +msgid "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"

\n" +" \n" +" \n" +" " +msgstr "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Nòmina

Hola ,


Et remetem la teva nòmina del mes de .



\n" +"

\n" +" \n" +" \n" +" " + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +msgid "Attachment" +msgstr "Adjunt" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id +msgid "Attachment File" +msgstr "Fitxer Adjunt" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Close" +msgstr "Tancar" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date +msgid "Create Date" +msgstr "Data de creació" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name +msgid "Display Name" +msgstr "Nom a mostrar" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_hr_employee +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +msgid "Employee" +msgstr "Empleat" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Employees not found" +msgstr "Empleats no trobats" + +#. module: hr_payroll_document +#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject +msgid "" +"Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "" +"Introduïu el títol de la nòmina ja sigui el mes, setmana, dia, etc." + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id +msgid "ID" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "IDs whose employee has not been found: " +msgstr "IDs dels empleats que no s'han trobat: " + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +msgid "Identification ID" +msgstr "Identificació ID" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update +msgid "Last Modified on" +msgstr "Darrera modificació el" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid +msgid "Last Updated by" +msgstr "Darrera actualització per" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date +msgid "Last Updated on" +msgstr "Darrera actualització el" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Missing pdf file signature" +msgstr "Els fitxers han de ser de tipus pdf" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll" +msgstr "Nòmina" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll " +msgstr "Nòmina " + +#. module: hr_payroll_document +#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template +msgid "Payroll Employee" +msgstr "Nòmina Empleat" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard +msgid "Payroll Management" +msgstr "Gestió Nòmines" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom +msgid "Payroll attachment" +msgstr "Adjunt Nòmina" + +#. module: hr_payroll_document +#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template +msgid "Payroll {{ctx.get('subject')}}" +msgstr "Nòmina {{ctx.get('month')}}" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +msgid "Payrolls" +msgstr "Nòmines" + +#. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action +msgid "Payrolls Management" +msgstr "Gestió Nòmines" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent" +msgstr "Nòmines enviades" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent to employees correctly" +msgstr "Nòmines envides als empleats correctament" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Send" +msgstr "Enviar" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +msgid "Subject" +msgstr "Assumpte" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/models/hr_employee.py:0 +#, python-format +msgid "The field identification ID is not valid" +msgstr "El camp identificatiu ID no és vàlid" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "You must to filled country field of company" +msgstr "Falta emplenar el camp de país de l'empresa" diff --git a/hr_payroll_document/i18n/es.po b/hr_payroll_document/i18n/es.po new file mode 100644 index 000000000..2f3172688 --- /dev/null +++ b/hr_payroll_document/i18n/es.po @@ -0,0 +1,232 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_payroll_document +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-14 10:28+0000\n" +"PO-Revision-Date: 2023-12-14 10:28+0000\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_payroll_document +#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template +msgid "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"

\n" +" \n" +" \n" +" " +msgstr "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Nómina

Hola ,


Te enviamos la nómina del mes de .



\n" +"

\n" +" \n" +" \n" +" " + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +msgid "Attachment" +msgstr "Adjunto" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id +msgid "Attachment File" +msgstr "Fichero Adjunto" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Close" +msgstr "Cerrar" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date +msgid "Create Date" +msgstr "Fecha de creación" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name +msgid "Display Name" +msgstr "Nombre para mostrar" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_hr_employee +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +msgid "Employee" +msgstr "Empleado" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Employees not found" +msgstr "Empleados no encontrados" + +#. module: hr_payroll_document +#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject +msgid "" +"Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "" +"Introduzca el título de la nómina ya sea el mes, semana, día , etc.." + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id +msgid "ID" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "IDs whose employee has not been found: " +msgstr "IDs de los empleados que no se han encontrado: " + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +msgid "Identification ID" +msgstr "Identificación ID" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Missing pdf file signature" +msgstr "Los archivos tienen que ser de tipo pdf" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll" +msgstr "Nómina" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll " +msgstr "Nómina " + +#. module: hr_payroll_document +#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template +msgid "Payroll Employee" +msgstr "Nómina Empleado" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard +msgid "Payroll Management" +msgstr "Gestión Nóminas" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom +msgid "Payroll attachment" +msgstr "Adjunto Nómina" + +#. module: hr_payroll_document +#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template +msgid "Payroll {{ctx.get('subject')}}" +msgstr "Nómina {{ctx.get('month')}}" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +msgid "Payrolls" +msgstr "Nóminas" + +#. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action +msgid "Payrolls Management" +msgstr "Gestión Nóminas" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent" +msgstr "Nóminas enviadas" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent to employees correctly" +msgstr "Nóminas enviadas a los empleados correctamente" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Send" +msgstr "Enviar" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +msgid "Subject" +msgstr "Asunto" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/models/hr_employee.py:0 +#, python-format +msgid "The field identification ID is not valid" +msgstr "El campo identificativo ID no es válido" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "You must to filled country field of company" +msgstr "Falta rellenar el campo del país de la empresa" diff --git a/hr_payroll_document/models/__init__.py b/hr_payroll_document/models/__init__.py new file mode 100644 index 000000000..9fa86bfb9 --- /dev/null +++ b/hr_payroll_document/models/__init__.py @@ -0,0 +1,3 @@ +from . import ir_attachment_payroll_custom +from . import ir_attachment +from . import hr_employee diff --git a/hr_payroll_document/models/hr_employee.py b/hr_payroll_document/models/hr_employee.py new file mode 100644 index 000000000..8d9e38892 --- /dev/null +++ b/hr_payroll_document/models/hr_employee.py @@ -0,0 +1,14 @@ +from odoo import _, models +from odoo.exceptions import ValidationError + + +class Employee(models.Model): + _inherit = "hr.employee" + + def write(self, vals): + res = super().write(vals) + if "identification_id" in vals and not self.env["res.partner"].simple_vat_check( + self.env.company.country_id.code, vals["identification_id"] + ): + raise ValidationError(_("The field identification ID is not valid")) + return res diff --git a/hr_payroll_document/models/ir_attachment.py b/hr_payroll_document/models/ir_attachment.py new file mode 100644 index 000000000..c5bac7524 --- /dev/null +++ b/hr_payroll_document/models/ir_attachment.py @@ -0,0 +1,14 @@ +from odoo import fields, models + + +class Attachment(models.Model): + _inherit = "ir.attachment" + + payrol_rel = fields.Many2many( + "payroll.management.wizard", + "payrolls", + "attachment_id3", + "document_id", + string="Attachment", + invisible=1, + ) diff --git a/hr_payroll_document/models/ir_attachment_payroll_custom.py b/hr_payroll_document/models/ir_attachment_payroll_custom.py new file mode 100644 index 000000000..96c200043 --- /dev/null +++ b/hr_payroll_document/models/ir_attachment_payroll_custom.py @@ -0,0 +1,18 @@ +from odoo import fields, models + + +class IRAttachmentPayrollCustom(models.Model): + _name = "ir.attachment.payroll.custom" + _description = "Payroll attachment" + + attachment_id = fields.Many2one( + comodel_name="ir.attachment", + string="Attachment File", + prefetch=False, + invisible=True, + ondelete="cascade", + ) + employee = fields.Char() + identification_id = fields.Char("Identification ID") + create_date = fields.Date(default=fields.Date.context_today) + subject = fields.Char() diff --git a/hr_payroll_document/readme/CONTRIBUTORS.rst b/hr_payroll_document/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..08488d3fa --- /dev/null +++ b/hr_payroll_document/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Antoni Marroig Campomar +* Miquel Alzanillas Monserrat diff --git a/hr_payroll_document/readme/DESCRIPTION.rst b/hr_payroll_document/readme/DESCRIPTION.rst new file mode 100644 index 000000000..a4011cb52 --- /dev/null +++ b/hr_payroll_document/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute. diff --git a/hr_payroll_document/security/ir.model.access.csv b/hr_payroll_document/security/ir.model.access.csv new file mode 100644 index 000000000..bd91389ae --- /dev/null +++ b/hr_payroll_document/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +payroll_management_wizard,payroll.management.wizard,model_payroll_management_wizard,hr.group_hr_manager,1,1,1,1 +ir_attachment_payroll_custom,ir.attachment.payroll.custom,model_ir_attachment_payroll_custom,hr.group_hr_manager,1,1,1,1 diff --git a/hr_payroll_document/static/description/index.html b/hr_payroll_document/static/description/index.html new file mode 100644 index 000000000..f9e203549 --- /dev/null +++ b/hr_payroll_document/static/description/index.html @@ -0,0 +1,424 @@ + + + + + + +HR - Payroll Document + + + +
+

HR - Payroll Document

+ + +

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

+

This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.

+

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

+
    +
  • APSL
  • +
+
+
+

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.

+

Current maintainer:

+

peluko00

+

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

+

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

+
+
+
+ + diff --git a/hr_payroll_document/tests/__init__.py b/hr_payroll_document/tests/__init__.py new file mode 100644 index 000000000..75f544418 --- /dev/null +++ b/hr_payroll_document/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_payroll_document diff --git a/hr_payroll_document/tests/common.py b/hr_payroll_document/tests/common.py new file mode 100644 index 000000000..6214e13ae --- /dev/null +++ b/hr_payroll_document/tests/common.py @@ -0,0 +1,51 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. +import base64 + +from odoo.modules.module import get_module_resource +from odoo.tests import common + +from odoo.addons.mail.tests.common import mail_new_test_user + + +class TestHrPayrollDocument(common.TransactionCase): + def setUp(self): + super(TestHrPayrollDocument, self).setUp() + self.env.user.tz = "Europe/Brussels" + self.user_admin = self.env.ref("base.user_admin") + + # Fix Company without country + self.env.company.country_id = False + + # Test users to use through the various tests + self.user_employee = mail_new_test_user( + self.env, login="david", groups="base.group_user" + ) + self.user_employee_id = self.user_employee.id + + # Hr Data + self.employee_emp = self.env["hr.employee"].create( + { + "name": "David Employee", + "user_id": self.user_employee_id, + "company_id": 1, + "identification_id": "30831011V", + } + ) + + with open( + get_module_resource("hr_payroll_document", "tests", "test.pdf"), "rb" + ) as pdf_file: + encoded_string = base64.b64encode(pdf_file.read()) + ir_values = { + "name": "test", + "type": "binary", + "datas": encoded_string, + "store_fname": encoded_string, + "res_model": "payroll.management.wizard", + "res_id": 1, + } + self.attachment = self.env["ir.attachment"].create(ir_values) + self.subject = "January" + self.wizard = self.env["payroll.management.wizard"].create( + {"payrolls": [self.attachment.id], "subject": self.subject} + ) diff --git a/hr_payroll_document/tests/test.docx b/hr_payroll_document/tests/test.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a2af5ab5b484a944525d51bf4b5447fe7d25766 GIT binary patch literal 18655 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 MbOdf{?QjM00NX-lU;qFB literal 0 HcmV?d00001 diff --git a/hr_payroll_document/tests/test.pdf b/hr_payroll_document/tests/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8138280c2d8198a99074a0931e99882ee475ef98 GIT binary patch literal 33335 zcmd421CV83vhdqow!3WGw%ujhw$WwVwr$(C?dr1ade#4#xijLD$0C7?(!L(9Yh}+6tG3j+zOVn;XK=%HYp1^#3y4 z-+D;vnaMj?;?hVOS{XZ-;L_1D(&N$yn_4&++I{_6=sFk*8tPjce2p!IOV9Y{lAXN+ zE*&%TpHb}{>e38y7abEC5tpyZVrD2qJiOwsUtufE6ZW~Q~9|? zPAnISTvT->g!hnTIIuh0cYqT5cPjCmS1!&{gMz?3Avf!+AiL{(7fi8cdeeJpYE;hc>l#6sfl`9bQnQQN{+L!LF}m;y zv?ds)x;0CD4Z>CiT8J<1kp)z@O5$^Aa4=cK=e65|kZ^)2>|*|0U>s8kGvm3G$fw%w z+4bOxS1(4BQ@ib}=_W`&2IE^Ae4bMoH$nT4_Y~&x#W&Vz;zjJMhMEQtkik(iWK2sF z$GL?@r8?3#ZE9ZmfTv87d#eQTR3Q$V8`xFz}B4iEHpEu z$Ozol@cHg3)}W4vfzKB^#46=q0LU zzO9aPJr*rJZE-E&{2n?iW}@3@QVj)y5bEijR5_2xduD)H;vVI(-~PyQ*`S}r_8J!8 zM;e1HIS4D1$T}8OLLzXi2`XA1V!+&H)7mEL>}6r?r)VEEhp!+HA@~)hpS}&<+4uPL zooAP%UC8IIWsE<;OUGX}^8js-l&*)3+UB}iV;Jg3Df%vCp-U9nLGluyt8hW^r4U+$ zoKOZ4H8^EdO*g`rLOdj85`L_TZUZUdg4aQFFBA8+HhXMbgAI*^-MwvesH<2`1bmlr z5D$$>?|2}RrfE*m{T**XEdCO4VRj6KEzP5K-a)$QS zj&}NA&hw93Rrzv(hWZYF9SghA;xhc*qYAsw;eJi=kE`Y8{_~-cchqzE%gz4fg=zlg zK>yMGA0G7oqgAo}4_77R;vgdL@a4X78JPcC1C6k?l>;urA3glpJM66W{&!aO zPYYxGBlf28yOhJ~^IuPux!j03`(7EbV$Yao8Lf1|j}R0uZv3>pA}AL9N) z=j|$#1&RT58T@I-SyF)tt1)a7`A`^iB*|;Qzvo6=EjXy+jtltbIr{l_TjzkI|W??5N;Ux5_^E8V|`ObyEJ3i3k_ z+;k&sMVxv>T=?1Gp$*wLa5bUDq`uz1q+r1`f_$0Zf%X-vJ6FjG%sSM_)clHrm4IdA z@gca?sUQ^UfiM®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 + + + payroll.management.wizard.form + payroll.management.wizard + +
+ + + + + +
+
+
+
+
+
+ + Payrolls Management + payroll.management.wizard + form + new + + + +
From d5b677b89c6991b7a9d4d2e9296bc193894271b3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 3 Mar 2024 19:30:48 +0000 Subject: [PATCH 02/10] [UPD] Update hr_payroll_document.pot --- hr_payroll_document/i18n/ca_ES.po | 69 +++++- hr_payroll_document/i18n/es.po | 69 +++++- .../i18n/hr_payroll_document.pot | 220 ++++++++++++++++++ 3 files changed, 338 insertions(+), 20 deletions(-) create mode 100644 hr_payroll_document/i18n/hr_payroll_document.pot diff --git a/hr_payroll_document/i18n/ca_ES.po b/hr_payroll_document/i18n/ca_ES.po index c51c4c966..bc51c52a2 100644 --- a/hr_payroll_document/i18n/ca_ES.po +++ b/hr_payroll_document/i18n/ca_ES.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2023-12-14 10:27+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -22,7 +23,34 @@ msgid "" " \n" " \n" " \n" -"
\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"
\"{{object.company_id.name}}\"

Payroll

Hello ,

We send you the payroll with the subject .



\"{{object.company_id.name}}\"

Nòmina

Hola ,


Et remetem la teva nòmina del mes de .



\n" +" \n" "

\n" " \n" " \n" @@ -92,10 +147,8 @@ msgstr "Empleats no trobats" #. module: hr_payroll_document #: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject -msgid "" -"Enter the title of the payroll whether it is the month, week, day, etc." -msgstr "" -"Introduïu el títol de la nòmina ja sigui el mes, setmana, dia, etc." +msgid "Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "Introduïu el títol de la nòmina ja sigui el mes, setmana, dia, etc." #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id @@ -189,10 +242,6 @@ msgstr "Gestió Nòmines" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payrolls sent" diff --git a/hr_payroll_document/i18n/es.po b/hr_payroll_document/i18n/es.po index 2f3172688..9a0ac3761 100644 --- a/hr_payroll_document/i18n/es.po +++ b/hr_payroll_document/i18n/es.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2023-12-14 10:28+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -22,7 +23,34 @@ msgid "" " \n" " \n" " \n" -"
\"{{object.company_id.name}}\"

Nòmina

Hola ,


Et remetem " +"la teva nòmina del mes de .



\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"
\"{{object.company_id.name}}\"

Payroll

Hello ,

We send you the payroll with the subject .



\"{{object.company_id.name}}\"

Nómina

Hola ,


Te enviamos la nómina del mes de .



\n" +" \n" "

\n" " \n" " \n" @@ -92,10 +147,8 @@ msgstr "Empleados no encontrados" #. module: hr_payroll_document #: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject -msgid "" -"Enter the title of the payroll whether it is the month, week, day, etc." -msgstr "" -"Introduzca el título de la nómina ya sea el mes, semana, día , etc.." +msgid "Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "Introduzca el título de la nómina ya sea el mes, semana, día , etc.." #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id @@ -189,10 +242,6 @@ msgstr "Gestión Nóminas" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payrolls sent" diff --git a/hr_payroll_document/i18n/hr_payroll_document.pot b/hr_payroll_document/i18n/hr_payroll_document.pot new file mode 100644 index 000000000..263745009 --- /dev/null +++ b/hr_payroll_document/i18n/hr_payroll_document.pot @@ -0,0 +1,220 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_payroll_document +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_payroll_document +#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template +msgid "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Nómina

Hola ,


Te enviamos " +"la nómina del mes de .



\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"

\n" +" \n" +" \n" +" " +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +msgid "Attachment" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id +msgid "Attachment File" +msgstr "" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Close" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date +msgid "Create Date" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_hr_employee +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +msgid "Employee" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Employees not found" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject +msgid "" +"Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id +msgid "ID" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "IDs whose employee has not been found: " +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +msgid "Identification ID" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Missing pdf file signature" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll " +msgstr "" + +#. module: hr_payroll_document +#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template +msgid "Payroll Employee" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard +msgid "Payroll Management" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom +msgid "Payroll attachment" +msgstr "" + +#. module: hr_payroll_document +#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template +msgid "Payroll {{ctx.get('subject')}}" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +msgid "Payrolls" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action +msgid "Payrolls Management" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent to employees correctly" +msgstr "" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Send" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +msgid "Subject" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/models/hr_employee.py:0 +#, python-format +msgid "The field identification ID is not valid" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "You must to filled country field of company" +msgstr "" From 6fbfa9e75bcbe349c8aaefe8df5a2821e14eb1d5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Mar 2024 19:33:11 +0000 Subject: [PATCH 03/10] [BOT] post-merge updates --- hr_payroll_document/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hr_payroll_document/static/description/icon.png diff --git a/hr_payroll_document/static/description/icon.png b/hr_payroll_document/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 1da65bff69c30688bc9195f5ce940872e3747793 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 4 Mar 2024 08:06:01 +0000 Subject: [PATCH 04/10] Added translation using Weblate (Italian) --- hr_payroll_document/i18n/it.po | 221 +++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 hr_payroll_document/i18n/it.po diff --git a/hr_payroll_document/i18n/it.po b/hr_payroll_document/i18n/it.po new file mode 100644 index 000000000..f747f2b0b --- /dev/null +++ b/hr_payroll_document/i18n/it.po @@ -0,0 +1,221 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_payroll_document +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" + +#. module: hr_payroll_document +#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template +msgid "" +"\n" +" \n" +" \n" +" \n" +"
\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" +"

\n" +" \n" +" \n" +" " +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +msgid "Attachment" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id +msgid "Attachment File" +msgstr "" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Close" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date +msgid "Create Date" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_hr_employee +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +msgid "Employee" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Employees not found" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject +msgid "" +"Enter the title of the payroll whether it is the month, week, day, etc." +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id +msgid "ID" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "IDs whose employee has not been found: " +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +msgid "Identification ID" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Missing pdf file signature" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payroll " +msgstr "" + +#. module: hr_payroll_document +#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template +msgid "Payroll Employee" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard +msgid "Payroll Management" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom +msgid "Payroll attachment" +msgstr "" + +#. module: hr_payroll_document +#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template +msgid "Payroll {{ctx.get('subject')}}" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +msgid "Payrolls" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action +msgid "Payrolls Management" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "Payrolls sent to employees correctly" +msgstr "" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form +msgid "Send" +msgstr "" + +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject +#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +msgid "Subject" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/models/hr_employee.py:0 +#, python-format +msgid "The field identification ID is not valid" +msgstr "" + +#. module: hr_payroll_document +#. odoo-python +#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#, python-format +msgid "You must to filled country field of company" +msgstr "" From 4ad0aa5abc908c8d19853039df4368ebb3a6d03d Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 4 Mar 2024 13:13:39 +0000 Subject: [PATCH 05/10] Translated using Weblate (Italian) Currently translated at 100.0% (32 of 32 strings) Translation: payroll-16.0/payroll-16.0-hr_payroll_document Translate-URL: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_document/it/ --- hr_payroll_document/i18n/it.po | 101 +++++++++++++++++++++++---------- 1 file changed, 70 insertions(+), 31 deletions(-) diff --git a/hr_payroll_document/i18n/it.po b/hr_payroll_document/i18n/it.po index f747f2b0b..aee0a92d9 100644 --- a/hr_payroll_document/i18n/it.po +++ b/hr_payroll_document/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-03-04 15:34+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_payroll_document #: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template @@ -27,50 +29,86 @@ msgid "" " \n" " " msgstr "" +"\n" +" \n" +" \n" +" \n" +"
\""

Stipendio

Hello ,


Abbiamo inviato la " +"retribuzione con soggetto.



" +"
\n" +"

\n" +" \n" +" \n" +" " #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_ir_attachment #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel msgid "Attachment" -msgstr "" +msgstr "Allegato" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id msgid "Attachment File" -msgstr "" +msgstr "File allegato" #. module: hr_payroll_document #: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form msgid "Close" -msgstr "" +msgstr "Chiudi" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date msgid "Create Date" -msgstr "" +msgstr "Data creazione" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_hr_employee #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee msgid "Employee" -msgstr "" +msgstr "Dipendente" #. module: hr_payroll_document #. odoo-python @@ -78,19 +116,20 @@ msgstr "" #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Employees not found" -msgstr "" +msgstr "Dipendenti non trovati" #. module: hr_payroll_document #: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject msgid "" "Enter the title of the payroll whether it is the month, week, day, etc." msgstr "" +"Inserire il titolo della retribuzione se è il mese, settimana, giorno, ecc." #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id msgid "ID" -msgstr "" +msgstr "ID" #. module: hr_payroll_document #. odoo-python @@ -98,82 +137,82 @@ msgstr "" #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "IDs whose employee has not been found: " -msgstr "" +msgstr "ID il cui dipendente non è stato trovato: " #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id msgid "Identification ID" -msgstr "" +msgstr "ID identificazione" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Missing pdf file signature" -msgstr "" +msgstr "Firma PDF mancante" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payroll" -msgstr "" +msgstr "Retribuzione" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payroll " -msgstr "" +msgstr "Retribuzione " #. module: hr_payroll_document #: model:mail.template,name:hr_payroll_document.payroll_employee_email_template msgid "Payroll Employee" -msgstr "" +msgstr "Retribuzione dipendente" #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard msgid "Payroll Management" -msgstr "" +msgstr "Gestione retribuzione" #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom msgid "Payroll attachment" -msgstr "" +msgstr "Allegato retribuzione" #. module: hr_payroll_document #: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template msgid "Payroll {{ctx.get('subject')}}" -msgstr "" +msgstr "Retribuzione {{ctx.get('subject')}}" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls msgid "Payrolls" -msgstr "" +msgstr "Retribuzioni" #. module: hr_payroll_document #: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action #: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action msgid "Payrolls Management" -msgstr "" +msgstr "Gestione retribuzioni" #. module: hr_payroll_document #. odoo-python @@ -185,7 +224,7 @@ msgstr "" #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payrolls sent" -msgstr "" +msgstr "Retribuzioni inviate" #. module: hr_payroll_document #. odoo-python @@ -193,29 +232,29 @@ msgstr "" #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payrolls sent to employees correctly" -msgstr "" +msgstr "Retribuzioni inviate correttamente ai dipendenti" #. module: hr_payroll_document #: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form msgid "Send" -msgstr "" +msgstr "Invia" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject msgid "Subject" -msgstr "" +msgstr "Oggetto" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/models/hr_employee.py:0 #, python-format msgid "The field identification ID is not valid" -msgstr "" +msgstr "L'ID identificazione file non è corretto" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "You must to filled country field of company" -msgstr "" +msgstr "Serve compilare il campo nazione dell'azienda" From 36f1b3f9066319bbf643d005e0b677aaaa486cac Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Mon, 20 May 2024 16:20:01 +0200 Subject: [PATCH 06/10] [IMP] hr_payroll_document: pre-commit auto fixes --- hr_payroll_document/README.rst | 23 ++++++++++--------- hr_payroll_document/pyproject.toml | 3 +++ hr_payroll_document/readme/CONTRIBUTORS.md | 2 ++ hr_payroll_document/readme/CONTRIBUTORS.rst | 2 -- hr_payroll_document/readme/DESCRIPTION.md | 2 ++ hr_payroll_document/readme/DESCRIPTION.rst | 1 - .../static/description/index.html | 10 ++++---- hr_payroll_document/tests/common.py | 2 +- .../wizard/payroll_management_wizard.py | 4 +++- 9 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 hr_payroll_document/pyproject.toml create mode 100644 hr_payroll_document/readme/CONTRIBUTORS.md delete mode 100644 hr_payroll_document/readme/CONTRIBUTORS.rst create mode 100644 hr_payroll_document/readme/DESCRIPTION.md delete mode 100644 hr_payroll_document/readme/DESCRIPTION.rst diff --git a/hr_payroll_document/README.rst b/hr_payroll_document/README.rst index d8023bfd5..f72573f0c 100644 --- a/hr_payroll_document/README.rst +++ b/hr_payroll_document/README.rst @@ -17,18 +17,19 @@ HR - Payroll Document :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpayroll-lightgray.png?logo=github - :target: https://github.com/OCA/payroll/tree/16.0/hr_payroll_document + :target: https://github.com/OCA/payroll/tree/17.0/hr_payroll_document :alt: OCA/payroll .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_document + :target: https://translation.odoo-community.org/projects/payroll-17-0/payroll-17-0-hr_payroll_document :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/payroll&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/payroll&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute. +This module have a wizard view to manage the different payrolls of +employees which is identified by the identification_id attribute. **Table of contents** @@ -41,7 +42,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. @@ -49,18 +50,18 @@ Credits ======= Authors -~~~~~~~ +------- * APSL Contributors -~~~~~~~~~~~~ +------------ -* Antoni Marroig Campomar -* Miquel Alzanillas Monserrat +- Antoni Marroig Campomar +- Miquel Alzanillas Monserrat Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -80,6 +81,6 @@ Current `maintainer `__: |maintainer-peluko00| -This module is part of the `OCA/payroll `_ project on GitHub. +This module is part of the `OCA/payroll `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_payroll_document/pyproject.toml b/hr_payroll_document/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/hr_payroll_document/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/hr_payroll_document/readme/CONTRIBUTORS.md b/hr_payroll_document/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..619e6b256 --- /dev/null +++ b/hr_payroll_document/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Antoni Marroig Campomar \<\> +- Miquel Alzanillas Monserrat \<\> diff --git a/hr_payroll_document/readme/CONTRIBUTORS.rst b/hr_payroll_document/readme/CONTRIBUTORS.rst deleted file mode 100644 index 08488d3fa..000000000 --- a/hr_payroll_document/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* Antoni Marroig Campomar -* Miquel Alzanillas Monserrat diff --git a/hr_payroll_document/readme/DESCRIPTION.md b/hr_payroll_document/readme/DESCRIPTION.md new file mode 100644 index 000000000..fb12e7d44 --- /dev/null +++ b/hr_payroll_document/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module have a wizard view to manage the different payrolls of +employees which is identified by the identification_id attribute. diff --git a/hr_payroll_document/readme/DESCRIPTION.rst b/hr_payroll_document/readme/DESCRIPTION.rst deleted file mode 100644 index a4011cb52..000000000 --- a/hr_payroll_document/readme/DESCRIPTION.rst +++ /dev/null @@ -1 +0,0 @@ -This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute. diff --git a/hr_payroll_document/static/description/index.html b/hr_payroll_document/static/description/index.html index f9e203549..42b68336a 100644 --- a/hr_payroll_document/static/description/index.html +++ b/hr_payroll_document/static/description/index.html @@ -1,4 +1,3 @@ - @@ -369,8 +368,9 @@

HR - Payroll Document

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:3698f5f5e529d5d32ae80cdc1ab30660ad4e5d39b6d98f8dace97a0b233743c5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.

+

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

+

This module have a wizard view to manage the different payrolls of +employees which is identified by the identification_id attribute.

Table of contents

    @@ -388,7 +388,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.

@@ -415,7 +415,7 @@

Maintainers

promote its widespread use.

Current maintainer:

peluko00

-

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

+

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

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

diff --git a/hr_payroll_document/tests/common.py b/hr_payroll_document/tests/common.py index 6214e13ae..f9cab755b 100644 --- a/hr_payroll_document/tests/common.py +++ b/hr_payroll_document/tests/common.py @@ -9,7 +9,7 @@ class TestHrPayrollDocument(common.TransactionCase): def setUp(self): - super(TestHrPayrollDocument, self).setUp() + super().setUp() self.env.user.tz = "Europe/Brussels" self.user_admin = self.env.ref("base.user_admin") diff --git a/hr_payroll_document/wizard/payroll_management_wizard.py b/hr_payroll_document/wizard/payroll_management_wizard.py index 208753033..fcb7fd8ed 100644 --- a/hr_payroll_document/wizard/payroll_management_wizard.py +++ b/hr_payroll_document/wizard/payroll_management_wizard.py @@ -54,7 +54,9 @@ def send_payrolls(self): path = "/tmp/" + _("Payroll ") + employee.name + ".pdf" - # Encrypt the payroll file with the identification identifier of the employee + """ + Encrypt the payroll file with the identification identifier of the employee + """ pdfWriter.encrypt(employee.identification_id, algorithm="AES-256") f = open(path, "wb") From 41d060e0e0a72d88467eb7ef9248035ae7443c71 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Tue, 21 May 2024 17:19:18 +0200 Subject: [PATCH 07/10] [MIG] hr_payroll_document : Migration to 17.0 --- hr_payroll_document/README.rst | 6 +- hr_payroll_document/__manifest__.py | 3 +- hr_payroll_document/i18n/es.po | 115 +++++++----------- hr_payroll_document/models/__init__.py | 1 + hr_payroll_document/models/hr_employee.py | 32 ++++- hr_payroll_document/models/ir_attachment.py | 2 +- .../models/ir_attachment_payroll_custom.py | 7 +- hr_payroll_document/models/res_users.py | 20 +++ hr_payroll_document/readme/CONTRIBUTORS.md | 5 +- hr_payroll_document/readme/DESCRIPTION.md | 3 +- .../static/description/index.html | 18 ++- hr_payroll_document/tests/common.py | 51 -------- .../tests/test_hr_payroll_document.py | 108 ++++++++-------- .../views/hr_employee_views.xml | 107 ++++++++++++++++ .../wizard/payroll_management_wizard.py | 43 +++---- .../wizard/payroll_management_wizard.xml | 3 +- 16 files changed, 305 insertions(+), 219 deletions(-) create mode 100644 hr_payroll_document/models/res_users.py delete mode 100644 hr_payroll_document/tests/common.py create mode 100644 hr_payroll_document/views/hr_employee_views.xml diff --git a/hr_payroll_document/README.rst b/hr_payroll_document/README.rst index f72573f0c..86c136c17 100644 --- a/hr_payroll_document/README.rst +++ b/hr_payroll_document/README.rst @@ -57,8 +57,10 @@ Authors Contributors ------------ -- Antoni Marroig Campomar -- Miquel Alzanillas Monserrat +- `APSL-Nagarro `__: + + - Antoni Marroig + - Miquel Alzanillas Maintainers ----------- diff --git a/hr_payroll_document/__manifest__.py b/hr_payroll_document/__manifest__.py index 62648d123..10be31f89 100644 --- a/hr_payroll_document/__manifest__.py +++ b/hr_payroll_document/__manifest__.py @@ -5,7 +5,7 @@ "website": "https://github.com/OCA/payroll", "license": "AGPL-3", "category": "Payrolls", - "version": "16.0.1.0.0", + "version": "17.0.1.0.0", "depends": ["hr", "base_vat"], "maintainers": ["peluko00"], "external_dependencies": {"python": ["pypdf"]}, @@ -13,5 +13,6 @@ "wizard/payroll_management_wizard.xml", "security/ir.model.access.csv", "data/email_payroll_employee.xml", + "views/hr_employee_views.xml", ], } diff --git a/hr_payroll_document/i18n/es.po b/hr_payroll_document/i18n/es.po index 9a0ac3761..7820196c4 100644 --- a/hr_payroll_document/i18n/es.po +++ b/hr_payroll_document/i18n/es.po @@ -4,13 +4,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-14 10:28+0000\n" -"PO-Revision-Date: 2023-12-14 10:28+0000\n" +"POT-Creation-Date: 2024-05-21 15:13+0000\n" +"PO-Revision-Date: 2024-05-21 15:13+0000\n" "Last-Translator: \n" "Language-Team: \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -23,34 +22,7 @@ msgid "" " \n" " \n" " \n" -"
\"{{object.company_id.name}}\"

Payroll

Hello ,

We send you the payroll with the subject .



\"{{object.company_id.name}}\"

Payroll

Hello ,


We send you the payroll with the subject .



\n" "

\n" " \n" " \n" @@ -60,34 +32,7 @@ msgstr "" " \n" " \n" " \n" -" \n" +"
\"{{object.company_id.name}}\"

Nómina

Hola ,


Te enviamos " -"la nómina del mes de .



\"{{object.company_id.name}}\"

Nómina

Hola ,


Te enviamos la nómina con el asunto .



\n" "

\n" " \n" " \n" @@ -96,8 +41,9 @@ msgstr "" #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_ir_attachment #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +#: model:ir.model.fields,field_description:hr_payroll_document.field_product_document__payrol_rel msgid "Attachment" -msgstr "Adjunto" +msgstr "Archivo adjunto" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id @@ -131,9 +77,21 @@ msgstr "Creado el" msgid "Display Name" msgstr "Nombre para mostrar" +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__document_type +#: model:ir.model.fields,field_description:hr_payroll_document.field_product_document__document_type +msgid "Document Type" +msgstr "Tipo de documento" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_tree +msgid "Download" +msgstr "Descargar" + #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_hr_employee #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Employee" msgstr "Empleado" @@ -147,9 +105,15 @@ msgstr "Empleados no encontrados" #. module: hr_payroll_document #: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject -msgid "Enter the title of the payroll whether it is the month, week, day, etc." +msgid "" +"Enter the title of the payroll whether it is the month, week, day, etc." msgstr "Introduzca el título de la nómina ya sea el mes, semana, día , etc.." +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter +msgid "Group By" +msgstr "" + #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id @@ -166,15 +130,10 @@ msgstr "IDs de los empleados que no se han encontrado: " #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Identification ID" msgstr "Identificación ID" -#. module: hr_payroll_document -#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update -#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update -msgid "Last Modified on" -msgstr "Última modificación el" - #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid @@ -197,6 +156,7 @@ msgstr "Los archivos tienen que ser de tipo pdf" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: model:ir.model.fields.selection,name:hr_payroll_document.selection__ir_attachment__document_type__payroll #, python-format msgid "Payroll" msgstr "Nómina" @@ -208,6 +168,11 @@ msgstr "Nómina" msgid "Payroll " msgstr "Nómina " +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_hr_employee__payroll_count +msgid "Payroll Count" +msgstr "Recuento de Nóminas" + #. module: hr_payroll_document #: model:mail.template,name:hr_payroll_document.payroll_employee_email_template msgid "Payroll Employee" @@ -226,10 +191,16 @@ msgstr "Adjunto Nómina" #. module: hr_payroll_document #: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template msgid "Payroll {{ctx.get('subject')}}" -msgstr "Nómina {{ctx.get('month')}}" +msgstr "Nómina {{ctx.get('subject')}}" #. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_view_action #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_menu_action +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.hr_employee_view_tree_payroll +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.res_users_view_form_profile_inherit +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_tree msgid "Payrolls" msgstr "Nóminas" @@ -263,6 +234,7 @@ msgstr "Enviar" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Subject" msgstr "Asunto" @@ -273,6 +245,11 @@ msgstr "Asunto" msgid "The field identification ID is not valid" msgstr "El campo identificativo ID no es válido" +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_res_users +msgid "User" +msgstr "Usuario" + #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 diff --git a/hr_payroll_document/models/__init__.py b/hr_payroll_document/models/__init__.py index 9fa86bfb9..b4048b8c9 100644 --- a/hr_payroll_document/models/__init__.py +++ b/hr_payroll_document/models/__init__.py @@ -1,3 +1,4 @@ from . import ir_attachment_payroll_custom from . import ir_attachment from . import hr_employee +from . import res_users diff --git a/hr_payroll_document/models/hr_employee.py b/hr_payroll_document/models/hr_employee.py index 8d9e38892..74c9cdc67 100644 --- a/hr_payroll_document/models/hr_employee.py +++ b/hr_payroll_document/models/hr_employee.py @@ -1,10 +1,40 @@ -from odoo import _, models +from odoo import _, fields, models from odoo.exceptions import ValidationError class Employee(models.Model): _inherit = "hr.employee" + payroll_count = fields.Integer( + compute="_compute_payroll_count", + ) + + def _compute_payroll_count(self): + self.payroll_count = len( + self.env["ir.attachment"].search( + [ + ("document_type", "=", "payroll"), + ("res_model", "=", self._name), + ("res_id", "in", self.ids), + ] + ) + ) + + def action_get_payroll_tree_view(self): + action = self.env.ref("base.action_attachment").sudo().read()[0] + action["context"] = { + "default_res_model": self._name, + "default_res_id": self.ids[0], + } + action["domain"] = str( + [ + ("document_type", "=", "payroll"), + ("res_model", "=", self._name), + ("res_id", "in", self.ids), + ] + ) + return action + def write(self, vals): res = super().write(vals) if "identification_id" in vals and not self.env["res.partner"].simple_vat_check( diff --git a/hr_payroll_document/models/ir_attachment.py b/hr_payroll_document/models/ir_attachment.py index c5bac7524..d51736772 100644 --- a/hr_payroll_document/models/ir_attachment.py +++ b/hr_payroll_document/models/ir_attachment.py @@ -10,5 +10,5 @@ class Attachment(models.Model): "attachment_id3", "document_id", string="Attachment", - invisible=1, ) + document_type = fields.Selection([("payroll", "Payroll")]) diff --git a/hr_payroll_document/models/ir_attachment_payroll_custom.py b/hr_payroll_document/models/ir_attachment_payroll_custom.py index 96c200043..1a75d7b37 100644 --- a/hr_payroll_document/models/ir_attachment_payroll_custom.py +++ b/hr_payroll_document/models/ir_attachment_payroll_custom.py @@ -9,10 +9,15 @@ class IRAttachmentPayrollCustom(models.Model): comodel_name="ir.attachment", string="Attachment File", prefetch=False, - invisible=True, ondelete="cascade", ) employee = fields.Char() identification_id = fields.Char("Identification ID") create_date = fields.Date(default=fields.Date.context_today) subject = fields.Char() + + def download(self): + return { + "type": "ir.actions.act_url", + "url": "web/content/" + str(self.attachment_id.id) + "/?download=True", + } diff --git a/hr_payroll_document/models/res_users.py b/hr_payroll_document/models/res_users.py new file mode 100644 index 000000000..f85626c47 --- /dev/null +++ b/hr_payroll_document/models/res_users.py @@ -0,0 +1,20 @@ +from odoo import models + + +class ResUsers(models.Model): + _inherit = "res.users" + + def action_get_attachment_tree_view(self): + action = self.env.ref("base.action_attachment").sudo().read()[0] + action["context"] = { + "default_res_model": self._name, + "default_res_id": self.employee_id.id, + } + action["domain"] = str( + [ + ("document_type", "=", "payroll"), + ("res_model", "=", self.employee_id._name), + ("res_id", "in", [self.employee_id.id]), + ] + ) + return action diff --git a/hr_payroll_document/readme/CONTRIBUTORS.md b/hr_payroll_document/readme/CONTRIBUTORS.md index 619e6b256..4098d2040 100644 --- a/hr_payroll_document/readme/CONTRIBUTORS.md +++ b/hr_payroll_document/readme/CONTRIBUTORS.md @@ -1,2 +1,3 @@ -- Antoni Marroig Campomar \<\> -- Miquel Alzanillas Monserrat \<\> +- [APSL-Nagarro](https://www.apsl.tech): + - Antoni Marroig \<\> + - Miquel Alzanillas \<\> diff --git a/hr_payroll_document/readme/DESCRIPTION.md b/hr_payroll_document/readme/DESCRIPTION.md index fb12e7d44..a4011cb52 100644 --- a/hr_payroll_document/readme/DESCRIPTION.md +++ b/hr_payroll_document/readme/DESCRIPTION.md @@ -1,2 +1 @@ -This module have a wizard view to manage the different payrolls of -employees which is identified by the identification_id attribute. +This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute. diff --git a/hr_payroll_document/static/description/index.html b/hr_payroll_document/static/description/index.html index 42b68336a..b8f972c40 100644 --- a/hr_payroll_document/static/description/index.html +++ b/hr_payroll_document/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -402,14 +403,19 @@

Authors

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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.

diff --git a/hr_payroll_document/tests/common.py b/hr_payroll_document/tests/common.py deleted file mode 100644 index f9cab755b..000000000 --- a/hr_payroll_document/tests/common.py +++ /dev/null @@ -1,51 +0,0 @@ -# Part of Odoo. See LICENSE file for full copyright and licensing details. -import base64 - -from odoo.modules.module import get_module_resource -from odoo.tests import common - -from odoo.addons.mail.tests.common import mail_new_test_user - - -class TestHrPayrollDocument(common.TransactionCase): - def setUp(self): - super().setUp() - self.env.user.tz = "Europe/Brussels" - self.user_admin = self.env.ref("base.user_admin") - - # Fix Company without country - self.env.company.country_id = False - - # Test users to use through the various tests - self.user_employee = mail_new_test_user( - self.env, login="david", groups="base.group_user" - ) - self.user_employee_id = self.user_employee.id - - # Hr Data - self.employee_emp = self.env["hr.employee"].create( - { - "name": "David Employee", - "user_id": self.user_employee_id, - "company_id": 1, - "identification_id": "30831011V", - } - ) - - with open( - get_module_resource("hr_payroll_document", "tests", "test.pdf"), "rb" - ) as pdf_file: - encoded_string = base64.b64encode(pdf_file.read()) - ir_values = { - "name": "test", - "type": "binary", - "datas": encoded_string, - "store_fname": encoded_string, - "res_model": "payroll.management.wizard", - "res_id": 1, - } - self.attachment = self.env["ir.attachment"].create(ir_values) - self.subject = "January" - self.wizard = self.env["payroll.management.wizard"].create( - {"payrolls": [self.attachment.id], "subject": self.subject} - ) diff --git a/hr_payroll_document/tests/test_hr_payroll_document.py b/hr_payroll_document/tests/test_hr_payroll_document.py index 1259a74a4..0d92c00dc 100644 --- a/hr_payroll_document/tests/test_hr_payroll_document.py +++ b/hr_payroll_document/tests/test_hr_payroll_document.py @@ -2,14 +2,53 @@ from odoo import _ from odoo.exceptions import UserError, ValidationError -from odoo.modules.module import get_module_resource +from odoo.tests import common +from odoo.tools.misc import file_path -from odoo.addons.hr_payroll_document.tests.common import TestHrPayrollDocument +from odoo.addons.mail.tests.common import mail_new_test_user -class TestHRPayrollDocument(TestHrPayrollDocument): - def setUp(self, *args, **kwargs): - super().setUp(*args, **kwargs) +class TestHRPayrollDocument(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env.user.tz = "Europe/Brussels" + cls.user_admin = cls.env.ref("base.user_admin") + + # Fix Company without country + cls.env.company.country_id = False + + # Test users to use through the various tests + cls.user_employee = mail_new_test_user( + cls.env, login="david", groups="base.group_user" + ) + cls.user_employee_id = cls.user_employee.id + + # Hr Data + cls.employee_emp = cls.env["hr.employee"].create( + { + "name": "David Employee", + "user_id": cls.user_employee_id, + "company_id": 1, + "identification_id": "30831011V", + } + ) + + with open(file_path("hr_payroll_document/tests/test.pdf"), "rb") as pdf_file: + encoded_string = base64.b64encode(pdf_file.read()) + ir_values = { + "name": "test", + "type": "binary", + "datas": encoded_string, + "store_fname": encoded_string, + "res_model": "payroll.management.wizard", + "res_id": 1, + } + cls.attachment = cls.env["ir.attachment"].create(ir_values) + cls.subject = "January" + cls.wizard = cls.env["payroll.management.wizard"].create( + {"payrolls": [cls.attachment.id], "subject": cls.subject} + ) def fill_company_id(self): self.env.company.country_id = self.env["res.country"].search( @@ -17,9 +56,7 @@ def fill_company_id(self): ) def test_extension_error(self): - with open( - get_module_resource("hr_payroll_document", "tests", "test.docx"), "rb" - ) as pdf_file: + with open(file_path("hr_payroll_document/tests/test.docx"), "rb") as pdf_file: encoded_string = base64.b64encode(pdf_file.read()) ir_values = { "name": "test", @@ -53,55 +90,20 @@ def test_one_employee_not_found(self): self.fill_company_id() self.env["hr.employee"].search([("id", "=", 1)]).identification_id = "37936636E" self.assertEqual( - self.wizard.send_payrolls(), - { - "type": "ir.actions.client", - "tag": "display_notification", - "params": { - "title": _("Employees not found"), - "message": _("IDs whose employee has not been found: ") - + "51000278D", - "sticky": True, - "type": "warning", - "next": { - "name": _("Payrolls sent"), - "type": "ir.actions.act_window", - "res_model": "hr.employee", - "views": [ - ( - self.env.ref("hr.hr_employee_public_view_kanban").id, - "list", - ) - ], - }, - }, - }, + self.wizard.send_payrolls()["params"]["title"], _("Employees not found") + ) + self.assertEqual( + self.wizard.send_payrolls()["params"]["message"], + _("IDs whose employee has not been found: ") + "51000278D", ) def test_send_payrolls_correctly(self): self.fill_company_id() self.env["hr.employee"].search([("id", "=", 1)]).identification_id = "51000278D" self.assertEqual( - self.wizard.send_payrolls(), - { - "type": "ir.actions.client", - "tag": "display_notification", - "params": { - "title": _("Payrolls sent"), - "message": _("Payrolls sent to employees correctly"), - "sticky": False, - "type": "success", - "next": { - "name": _("Payrolls sent"), - "type": "ir.actions.act_window", - "res_model": "hr.employee", - "views": [ - ( - self.env.ref("hr.hr_employee_public_view_kanban").id, - "list", - ) - ], - }, - }, - }, + self.wizard.send_payrolls()["params"]["title"], _("Payrolls sent") + ) + self.assertEqual( + self.wizard.send_payrolls()["params"]["message"], + _("Payrolls sent to employees correctly"), ) diff --git a/hr_payroll_document/views/hr_employee_views.xml b/hr_payroll_document/views/hr_employee_views.xml new file mode 100644 index 000000000..e0f568b41 --- /dev/null +++ b/hr_payroll_document/views/hr_employee_views.xml @@ -0,0 +1,107 @@ + + + + payroll.view.tree + ir.attachment.payroll.custom + + + + + + + + + + + + + + hr.res_user.view.form.inherit.document + res.users + + +
+ +
+
+
+
diff --git a/hr_payroll_document/wizard/payroll_management_wizard.py b/hr_payroll_document/wizard/payroll_management_wizard.py index fcb7fd8ed..585584fa5 100644 --- a/hr_payroll_document/wizard/payroll_management_wizard.py +++ b/hr_payroll_document/wizard/payroll_management_wizard.py @@ -12,14 +12,11 @@ class PayrollManagamentWizard(models.TransientModel): _description = "Payroll Management" subject = fields.Char( - help="Enter the title of the payroll whether it is the month, week, day, etc." + help="Enter the title of the payroll whether it is the month, week, day, etc.", + required=True, ) payrolls = fields.Many2many( - "ir.attachment", - "payrol_rel", - "doc_id", - "attach_id3", - copy=False, + "ir.attachment", "payrol_rel", "doc_id", "attach_id3", copy=False, required=True ) def send_payrolls(self): @@ -43,7 +40,6 @@ def send_payrolls(self): employees.add(employee) else: not_found.add(value) - break for employee in list(employees): pdfWriter = PdfWriter() @@ -54,9 +50,8 @@ def send_payrolls(self): path = "/tmp/" + _("Payroll ") + employee.name + ".pdf" - """ - Encrypt the payroll file with the identification identifier of the employee - """ + # Encrypt the payroll file with the identification identifier + # of the employee pdfWriter.encrypt(employee.identification_id, algorithm="AES-256") f = open(path, "wb") @@ -66,6 +61,12 @@ def send_payrolls(self): # Send payroll to the employee self.send_mail(employee, path) + action = self.env["ir.actions.actions"]._for_xml_id( + "hr_payroll_document.payrolls_view_action" + ) + action["views"] = [ + [self.env.ref("hr_payroll_document.view_payroll_tree").id, "list"] + ] if not_found: return { "type": "ir.actions.client", @@ -76,17 +77,7 @@ def send_payrolls(self): + ", ".join(list(not_found)), "sticky": True, "type": "warning", - "next": { - "name": _("Payrolls sent"), - "type": "ir.actions.act_window", - "res_model": "hr.employee", - "views": [ - ( - self.env.ref("hr.hr_employee_public_view_kanban").id, - "list", - ) - ], - }, + "next": action, }, } @@ -98,14 +89,7 @@ def send_payrolls(self): "message": _("Payrolls sent to employees correctly"), "sticky": False, "type": "success", - "next": { - "name": _("Payrolls sent"), - "type": "ir.actions.act_window", - "res_model": "hr.employee", - "views": [ - (self.env.ref("hr.hr_employee_public_view_kanban").id, "list") - ], - }, + "next": action, }, } @@ -143,6 +127,7 @@ def send_mail(self, employee, path): "store_fname": encoded_string, "res_model": "hr.employee", "res_id": employee.id, + "document_type": "payroll", } # Save payroll attachment to all employee payrolls attachments diff --git a/hr_payroll_document/wizard/payroll_management_wizard.xml b/hr_payroll_document/wizard/payroll_management_wizard.xml index 7a21b7bf5..6a42e3839 100644 --- a/hr_payroll_document/wizard/payroll_management_wizard.xml +++ b/hr_payroll_document/wizard/payroll_management_wizard.xml @@ -7,7 +7,7 @@
- +
@@ -30,6 +30,7 @@ Payrolls Management payroll.management.wizard + form new From e5a6433ee58204b95d072890d902eac1af5304dc Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 20 Oct 2025 07:30:35 +0000 Subject: [PATCH 08/10] [UPD] Update hr_payroll_document.pot --- .../i18n/hr_payroll_document.pot | 48 ++++++++++++++----- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/hr_payroll_document/i18n/hr_payroll_document.pot b/hr_payroll_document/i18n/hr_payroll_document.pot index 263745009..55d6055a2 100644 --- a/hr_payroll_document/i18n/hr_payroll_document.pot +++ b/hr_payroll_document/i18n/hr_payroll_document.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -30,6 +30,7 @@ msgstr "" #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_ir_attachment #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel +#: model:ir.model.fields,field_description:hr_payroll_document.field_product_document__payrol_rel msgid "Attachment" msgstr "" @@ -65,9 +66,21 @@ msgstr "" msgid "Display Name" msgstr "" +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__document_type +#: model:ir.model.fields,field_description:hr_payroll_document.field_product_document__document_type +msgid "Document Type" +msgstr "" + +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_tree +msgid "Download" +msgstr "" + #. module: hr_payroll_document #: model:ir.model,name:hr_payroll_document.model_hr_employee #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Employee" msgstr "" @@ -85,6 +98,11 @@ msgid "" "Enter the title of the payroll whether it is the month, week, day, etc." msgstr "" +#. module: hr_payroll_document +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter +msgid "Group By" +msgstr "" + #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id @@ -101,15 +119,10 @@ msgstr "" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Identification ID" msgstr "" -#. module: hr_payroll_document -#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update -#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update -msgid "Last Modified on" -msgstr "" - #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid @@ -132,6 +145,7 @@ msgstr "" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 +#: model:ir.model.fields.selection,name:hr_payroll_document.selection__ir_attachment__document_type__payroll #, python-format msgid "Payroll" msgstr "" @@ -143,6 +157,11 @@ msgstr "" msgid "Payroll " msgstr "" +#. module: hr_payroll_document +#: model:ir.model.fields,field_description:hr_payroll_document.field_hr_employee__payroll_count +msgid "Payroll Count" +msgstr "" + #. module: hr_payroll_document #: model:mail.template,name:hr_payroll_document.payroll_employee_email_template msgid "Payroll Employee" @@ -164,7 +183,12 @@ msgid "Payroll {{ctx.get('subject')}}" msgstr "" #. module: hr_payroll_document +#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_view_action #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls +#: model:ir.ui.menu,name:hr_payroll_document.payrolls_menu_action +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.hr_employee_view_tree_payroll +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.res_users_view_form_profile_inherit +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Payrolls" msgstr "" @@ -177,10 +201,6 @@ msgstr "" #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 -#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 #, python-format msgid "Payrolls sent" @@ -202,6 +222,7 @@ msgstr "" #. module: hr_payroll_document #: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject #: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject +#: model_terms:ir.ui.view,arch_db:hr_payroll_document.view_payroll_filter msgid "Subject" msgstr "" @@ -212,6 +233,11 @@ msgstr "" msgid "The field identification ID is not valid" msgstr "" +#. module: hr_payroll_document +#: model:ir.model,name:hr_payroll_document.model_res_users +msgid "User" +msgstr "" + #. module: hr_payroll_document #. odoo-python #: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0 From 0617f3c868cd91ba63b883e85096bb07d68a1986 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 20 Oct 2025 07:33:23 +0000 Subject: [PATCH 09/10] [BOT] post-merge updates --- hr_payroll_document/README.rst | 14 ++++++---- .../static/description/index.html | 26 ++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/hr_payroll_document/README.rst b/hr_payroll_document/README.rst index 86c136c17..c707f4f5e 100644 --- a/hr_payroll_document/README.rst +++ b/hr_payroll_document/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ===================== HR - Payroll Document ===================== @@ -7,13 +11,13 @@ HR - Payroll Document !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3698f5f5e529d5d32ae80cdc1ab30660ad4e5d39b6d98f8dace97a0b233743c5 + !! source digest: sha256:8541f32cab0e71108ff8c422d602825bb599e0141fe69b9342c16742bee0b915 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |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%2Fpayroll-lightgray.png?logo=github @@ -57,10 +61,10 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Antoni Marroig - - Miquel Alzanillas + - Antoni Marroig + - Miquel Alzanillas Maintainers ----------- diff --git a/hr_payroll_document/static/description/index.html b/hr_payroll_document/static/description/index.html index b8f972c40..0e20318d9 100644 --- a/hr_payroll_document/static/description/index.html +++ b/hr_payroll_document/static/description/index.html @@ -3,7 +3,7 @@ -HR - Payroll Document +README.rst -
-

HR - Payroll Document

+
+ + +Odoo Community Association + +
+

HR - Payroll Document

-

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

+

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

This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.

Table of contents

@@ -385,7 +390,7 @@

HR - Payroll Document

-

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 @@ -393,15 +398,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -426,5 +431,6 @@

Maintainers

+
From 9b8294a5a1a35cfc213ce7db03a6502ffa177c0d Mon Sep 17 00:00:00 2001 From: CristianoMafraJunior Date: Sun, 28 Dec 2025 12:55:40 -0300 Subject: [PATCH 10/10] [MIG] hr_payroll_document: Migration to 18.0 --- hr_payroll_document/README.rst | 16 +-- hr_payroll_document/__manifest__.py | 2 +- .../data/email_payroll_employee.xml | 14 +- .../static/description/index.html | 28 ++-- .../views/hr_employee_views.xml | 127 +++++++++--------- .../wizard/payroll_management_wizard.xml | 44 +++--- requirements.txt | 2 + 7 files changed, 110 insertions(+), 123 deletions(-) create mode 100644 requirements.txt diff --git a/hr_payroll_document/README.rst b/hr_payroll_document/README.rst index c707f4f5e..09d40b1a3 100644 --- a/hr_payroll_document/README.rst +++ b/hr_payroll_document/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - ===================== HR - Payroll Document ===================== @@ -17,17 +13,17 @@ HR - Payroll Document .. |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 +.. |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%2Fpayroll-lightgray.png?logo=github - :target: https://github.com/OCA/payroll/tree/17.0/hr_payroll_document + :target: https://github.com/OCA/payroll/tree/18.0/hr_payroll_document :alt: OCA/payroll .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/payroll-17-0/payroll-17-0-hr_payroll_document + :target: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-hr_payroll_document :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/payroll&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/payroll&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -46,7 +42,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. @@ -87,6 +83,6 @@ Current `maintainer `__: |maintainer-peluko00| -This module is part of the `OCA/payroll `_ project on GitHub. +This module is part of the `OCA/payroll `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_payroll_document/__manifest__.py b/hr_payroll_document/__manifest__.py index 10be31f89..539b26a7f 100644 --- a/hr_payroll_document/__manifest__.py +++ b/hr_payroll_document/__manifest__.py @@ -5,7 +5,7 @@ "website": "https://github.com/OCA/payroll", "license": "AGPL-3", "category": "Payrolls", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "depends": ["hr", "base_vat"], "maintainers": ["peluko00"], "external_dependencies": {"python": ["pypdf"]}, diff --git a/hr_payroll_document/data/email_payroll_employee.xml b/hr_payroll_document/data/email_payroll_employee.xml index d3cb24cbc..5e6941fe3 100644 --- a/hr_payroll_document/data/email_payroll_employee.xml +++ b/hr_payroll_document/data/email_payroll_employee.xml @@ -1,13 +1,13 @@ - Payroll Employee - - {{object.company_id.email}} - {{object.work_email}} - Payroll {{ctx.get('subject')}} - - + Payroll Employee + + {{object.company_id.email}} + {{object.work_email}} + Payroll {{ctx.get('subject')}} + + diff --git a/hr_payroll_document/static/description/index.html b/hr_payroll_document/static/description/index.html index 0e20318d9..3e9815c36 100644 --- a/hr_payroll_document/static/description/index.html +++ b/hr_payroll_document/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +HR - Payroll Document -
+
+

HR - Payroll Document

- - -Odoo Community Association - -
-

HR - Payroll Document

-

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

+

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

This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.

Table of contents

@@ -390,23 +385,23 @@

HR - Payroll Document

-

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 -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -426,11 +421,10 @@

Maintainers

promote its widespread use.

Current maintainer:

peluko00

-

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

+

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

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

-
diff --git a/hr_payroll_document/views/hr_employee_views.xml b/hr_payroll_document/views/hr_employee_views.xml index e0f568b41..034805587 100644 --- a/hr_payroll_document/views/hr_employee_views.xml +++ b/hr_payroll_document/views/hr_employee_views.xml @@ -1,98 +1,93 @@ - - payroll.view.tree - ir.attachment.payroll.custom - - - - - - - - - - - + + + + +
- - hr.res_user.view.form.inherit.document - res.users - - -
- -
-
-
+
+ + diff --git a/hr_payroll_document/wizard/payroll_management_wizard.xml b/hr_payroll_document/wizard/payroll_management_wizard.xml index 6a42e3839..29d0b60f5 100644 --- a/hr_payroll_document/wizard/payroll_management_wizard.xml +++ b/hr_payroll_document/wizard/payroll_management_wizard.xml @@ -1,15 +1,15 @@ - - payroll.management.wizard.form - payroll.management.wizard - - - - - - - + + payroll.management.wizard.form + payroll.management.wizard + + + + + + +
-
- -
-
- - Payrolls Management - payroll.management.wizard - - form - new - +
+ +
+
+ + Payrolls Management + payroll.management.wizard + + form + new + -