From 5b3fd0c02714e8a742b9f7a2bb3b84fb43529c1d Mon Sep 17 00:00:00 2001 From: Eduardo Aparicio Date: Mon, 8 Jun 2020 15:46:08 -0300 Subject: [PATCH 01/42] [12.0][ADD] hr_employee_ppe --- hr_employee_ppe/README.rst | 84 ++++ hr_employee_ppe/__init__.py | 1 + hr_employee_ppe/__manifest__.py | 26 ++ hr_employee_ppe/demo/hr_employee_ppe_demo.xml | 13 + hr_employee_ppe/i18n/hr_employee_ppe.pot | 378 ++++++++++++++++++ .../i18n/hr_employee_ppe.pot:Zone.Identifier | 4 + hr_employee_ppe/models/__init__.py | 3 + hr_employee_ppe/models/hr_employee.py | 17 + hr_employee_ppe/models/hr_employee_ppe.py | 51 +++ .../models/hr_employee_ppe_equipment.py | 14 + hr_employee_ppe/readme/CONFIGURE.rst | 0 hr_employee_ppe/readme/CONTRIBUTORS.rst | 4 + hr_employee_ppe/readme/DESCRIPTION.rst | 1 + hr_employee_ppe/readme/INSTALL.rst | 1 + hr_employee_ppe/readme/USAGE.rst | 9 + .../security/hr_employee_ppe_equipment.xml | 18 + hr_employee_ppe/security/hr_security.xml | 18 + hr_employee_ppe/security/ir.model.access.csv | 3 + hr_employee_ppe/static/description/icon.png | Bin 0 -> 9455 bytes .../views/hr_employee_ppe_equipment.xml | 59 +++ .../views/hr_employee_ppe_view.xml | 87 ++++ hr_employee_ppe/views/hr_employee_view.xml | 39 ++ 22 files changed, 830 insertions(+) create mode 100644 hr_employee_ppe/README.rst create mode 100644 hr_employee_ppe/__init__.py create mode 100644 hr_employee_ppe/__manifest__.py create mode 100644 hr_employee_ppe/demo/hr_employee_ppe_demo.xml create mode 100644 hr_employee_ppe/i18n/hr_employee_ppe.pot create mode 100644 hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier create mode 100644 hr_employee_ppe/models/__init__.py create mode 100644 hr_employee_ppe/models/hr_employee.py create mode 100644 hr_employee_ppe/models/hr_employee_ppe.py create mode 100644 hr_employee_ppe/models/hr_employee_ppe_equipment.py create mode 100644 hr_employee_ppe/readme/CONFIGURE.rst create mode 100644 hr_employee_ppe/readme/CONTRIBUTORS.rst create mode 100644 hr_employee_ppe/readme/DESCRIPTION.rst create mode 100644 hr_employee_ppe/readme/INSTALL.rst create mode 100644 hr_employee_ppe/readme/USAGE.rst create mode 100644 hr_employee_ppe/security/hr_employee_ppe_equipment.xml create mode 100644 hr_employee_ppe/security/hr_security.xml create mode 100644 hr_employee_ppe/security/ir.model.access.csv create mode 100644 hr_employee_ppe/static/description/icon.png create mode 100644 hr_employee_ppe/views/hr_employee_ppe_equipment.xml create mode 100644 hr_employee_ppe/views/hr_employee_ppe_view.xml create mode 100644 hr_employee_ppe/views/hr_employee_view.xml diff --git a/hr_employee_ppe/README.rst b/hr_employee_ppe/README.rst new file mode 100644 index 00000000000..d1dbda46a21 --- /dev/null +++ b/hr_employee_ppe/README.rst @@ -0,0 +1,84 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=================================== +Personal Protective Equipment (PPE) +=================================== + + + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To install this module, you need to have HR module installed or it will be requested during installation. + +Configuration +============= + +No additional steps are needed. + +Usage +===== +To manage PPEs allocation to employees, you will have to populate a list of equipments first. + +1. Go to menu *Human Resources -> PPE -> Equipment* + +Then you can allocate: + +1. Go to menu *Human Resources -> Human Resources -> Employees* +2. Open employee data +3. Goto *PPE* tab + +Known issues / Roadmap +====================== + +This module is not connected to any fiscal or legal obligations. As it is intended only for informational purposes, anyone who needs connections to other modules can use this as base for development. + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Escodoo + +Authors +======= + +* Escodoo + +Contributors +============ + +* Eduardo Aparicio +* Marcel Savegnago +* Joao Carassato +* Fernando Colus + +Maintainers +=========== + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/hr `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_employee_ppe/__init__.py b/hr_employee_ppe/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/hr_employee_ppe/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py new file mode 100644 index 00000000000..34f30aa6fac --- /dev/null +++ b/hr_employee_ppe/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright 2020 Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Personal Protective Equipment (PPE) Management", + "version": "12.0.1.0.0", + "author": "Escodoo," + "Odoo Community Association (OCA)", + "website": "https://github.com/oca/hr", + "license": "AGPL-3", + "category": "Human Resources", + "depends": ["hr", + 'mail'], + "data": [ + "security/hr_security.xml", + 'security/hr_employee_ppe_equipment.xml', + "security/ir.model.access.csv", + "views/hr_employee_view.xml", + "views/hr_employee_ppe_view.xml", + 'views/hr_employee_ppe_equipment.xml', + ], + 'demo': [ + 'demo/hr_employee_ppe_demo.xml', + ], + 'installable': True +} diff --git a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml new file mode 100644 index 00000000000..a86bfdc3250 --- /dev/null +++ b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot new file mode 100644 index 00000000000..fe03725fb0e --- /dev/null +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -0,0 +1,378 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_ppe +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-08 18:30+0000\n" +"PO-Revision-Date: 2020-06-08 18:30+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_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "# Certificate" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_ids +msgid "Activities" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_state +msgid "Activity State" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form +msgid "Certification Information" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__certification +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__certification +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__status +msgid "Certification Number" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "Personal Protective Equipment" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__create_uid +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__create_uid +msgid "Created by" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__create_date +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__create_date +msgid "Created on" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__description +msgid "Description" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__display_name +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__display_name +msgid "Display Name" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__employee_id +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Employee" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__partner_id +msgid "Employer, School, University, Certification Authority" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__end_date +msgid "End Date" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__name +msgid "Equipment" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.ui.menu,name:hr_employee_ppe.hr_employee_ppe_equipment_menu +msgid "Equipments" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__expirable +msgid "Expirable" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__expire +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__expire +msgid "Expire" +msgstr "" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,status:0 +msgid "Expired" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Group By" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__id +msgid "ID" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread +msgid "If checked new messages require your attention." +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "Issued By" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe____last_update +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment____last_update +msgid "Last Modified on" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__write_uid +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__write_date +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__write_date +msgid "Last Updated on" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__location +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__location +msgid "Location" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_ids +msgid "Messages" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__name +msgid "Name" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +msgid "Number of error" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +msgid "Overdue" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "PPE" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.actions.act_window,name:hr_employee_ppe.hr_employee_ppe_equipment_act_window +msgid "PPE - Equipment" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.ui.menu,name:hr_employee_ppe.menu_open_view_employee_ppe_form +msgid "PPE Allocation" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.actions.act_window,name:hr_employee_ppe.open_view_employee_ppe_form +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee__ppe_ids +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee__ppe_ids +#: model:ir.ui.menu,name:hr_employee_ppe.menu_hr_employee_ppe +msgid "PPEs" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__partner_id +msgid "Partner" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +msgid "Personal Protective Equipment (PPE)" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe_equipment +msgid "Personal Protective Equipments - Equipment List" +msgstr "" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +msgid "Planned" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Search PPEs" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__start_date +msgid "Start Date" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__status +msgid "Status" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__activity_state +msgid "Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +msgid "Today" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,status:0 +msgid "Valid" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe +msgid "hr.employee.ppe" +msgstr "" + diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier b/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier new file mode 100644 index 00000000000..acebd2efd45 --- /dev/null +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=about:client +HostUrl=about:internet diff --git a/hr_employee_ppe/models/__init__.py b/hr_employee_ppe/models/__init__.py new file mode 100644 index 00000000000..f2fa72f464d --- /dev/null +++ b/hr_employee_ppe/models/__init__.py @@ -0,0 +1,3 @@ +from . import hr_employee_ppe +from . import hr_employee +from . import hr_employee_ppe_equipment diff --git a/hr_employee_ppe/models/hr_employee.py b/hr_employee_ppe/models/hr_employee.py new file mode 100644 index 00000000000..cfb850a475c --- /dev/null +++ b/hr_employee_ppe/models/hr_employee.py @@ -0,0 +1,17 @@ +# Copyright 2020 Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HrEmployee(models.Model): + """Adds PPE information tab on employees form view.""" + + _inherit = 'hr.employee' + + ppe_ids = fields.One2many( + 'hr.employee.ppe', + 'employee_id', + 'PPEs', + help="PPEs" + ) diff --git a/hr_employee_ppe/models/hr_employee_ppe.py b/hr_employee_ppe/models/hr_employee_ppe.py new file mode 100644 index 00000000000..8b9a109265a --- /dev/null +++ b/hr_employee_ppe/models/hr_employee_ppe.py @@ -0,0 +1,51 @@ +# Copyright 2020 Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class HrEmployeePPE(models.Model): + """Adds PPE information and allocation.""" + + _name = 'hr.employee.ppe' + _description = 'Personal Protective Equipments' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Many2one( + string='Equipment', + required=True, + comodel_name='hr.employee.ppe.equipment', + ) + employee_id = fields.Many2one( + 'hr.employee', + string='Employee', + required=True + ) + start_date = fields.Date( + 'Start Date', + default=fields.Date.today() + ) + end_date = fields.Date('End Date') + description = fields.Text('Description') + partner_id = fields.Many2one( + 'res.partner', + 'Partner', + help="Employer, School, University" + "Certification Authority" + ) + location = fields.Char('Location', help="Location") + expire = fields.Boolean('Expire', help="Expire", default=True) + certification = fields.Char( + 'Certification Number', + help='Certification Number' + ) + status = fields.Selection( + [('valid', 'Valid'), ('expired', 'Expired')], + default='valid', + readonly=True, + help='Certification Number' + ) + + @api.onchange('name') + def verify_expiracy(self): + self.expire = self.name.expirable diff --git a/hr_employee_ppe/models/hr_employee_ppe_equipment.py b/hr_employee_ppe/models/hr_employee_ppe_equipment.py new file mode 100644 index 00000000000..d64b9ecb5af --- /dev/null +++ b/hr_employee_ppe/models/hr_employee_ppe_equipment.py @@ -0,0 +1,14 @@ +# Copyright 2020 Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HrEmployeePpeEquipment(models.Model): + + _name = 'hr.employee.ppe.equipment' + _description = 'Personal Protective Equipments - Equipment List' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string='Equipment') + expirable = fields.Boolean() diff --git a/hr_employee_ppe/readme/CONFIGURE.rst b/hr_employee_ppe/readme/CONFIGURE.rst new file mode 100644 index 00000000000..e69de29bb2d diff --git a/hr_employee_ppe/readme/CONTRIBUTORS.rst b/hr_employee_ppe/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..5b6599e79e8 --- /dev/null +++ b/hr_employee_ppe/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Eduardo Aparicio +* Marcel Savegnago +* Joao Carassato +* Fernando Colus \ No newline at end of file diff --git a/hr_employee_ppe/readme/DESCRIPTION.rst b/hr_employee_ppe/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..5e1e17ea2ed --- /dev/null +++ b/hr_employee_ppe/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows you to manage allocation of PPE to your employees. \ No newline at end of file diff --git a/hr_employee_ppe/readme/INSTALL.rst b/hr_employee_ppe/readme/INSTALL.rst new file mode 100644 index 00000000000..4606a0a5efa --- /dev/null +++ b/hr_employee_ppe/readme/INSTALL.rst @@ -0,0 +1 @@ +To install this module, you need to have HR module installed or it will be requested during installation. \ No newline at end of file diff --git a/hr_employee_ppe/readme/USAGE.rst b/hr_employee_ppe/readme/USAGE.rst new file mode 100644 index 00000000000..5c88eafaec7 --- /dev/null +++ b/hr_employee_ppe/readme/USAGE.rst @@ -0,0 +1,9 @@ +To manage PPEs allocation to employees, you will have to populate a list of equipments first. + +1. Go to menu *Human Resources -> PPE -> Equipment* + +Then you can allocate: + +1. Go to menu *Human Resources -> Human Resources -> Employees* +2. Open employee data +3. Goto *PPE* tab \ No newline at end of file diff --git a/hr_employee_ppe/security/hr_employee_ppe_equipment.xml b/hr_employee_ppe/security/hr_employee_ppe_equipment.xml new file mode 100644 index 00000000000..6d9bafb45b0 --- /dev/null +++ b/hr_employee_ppe/security/hr_employee_ppe_equipment.xml @@ -0,0 +1,18 @@ + + + + + + + hr.employee.ppe.equipment access name + + + + + + + + + + diff --git a/hr_employee_ppe/security/hr_security.xml b/hr_employee_ppe/security/hr_security.xml new file mode 100644 index 00000000000..19615a5f7ba --- /dev/null +++ b/hr_employee_ppe/security/hr_security.xml @@ -0,0 +1,18 @@ + + + + + PPE User Rule + + + [('employee_id.user_id','=',user.id)] + + + + PPE Officer + + + [(1,'=',1)] + + + diff --git a/hr_employee_ppe/security/ir.model.access.csv b/hr_employee_ppe/security/ir.model.access.csv new file mode 100644 index 00000000000..ff8d8c4974a --- /dev/null +++ b/hr_employee_ppe/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 +access_hr_employee_ppe_employee,hr.employee.ppe.employee,model_hr_employee_ppe,base.group_user,1,0,0,0 +access_hr_employee_ppe_officer,hr.employee.ppe.officer,model_hr_employee_ppe,hr.group_hr_user,1,1,1,1 diff --git a/hr_employee_ppe/static/description/icon.png b/hr_employee_ppe/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml new file mode 100644 index 00000000000..ed873f460b4 --- /dev/null +++ b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml @@ -0,0 +1,59 @@ + + + + + + + hr.employee.ppe.equipment.form (in hr_employee_ppe) + hr.employee.ppe.equipment + +
+ + + + + + +
+
+
+
+ + + hr.employee.ppe.equipment.search (in hr_employee_ppe) + hr.employee.ppe.equipment + + + + + + + + + hr.employee.ppe.equipment.tree (in hr_employee_ppe) + hr.employee.ppe.equipment + + + + + + + + + + PPE - Equipment + hr.employee.ppe.equipment + tree,form + [] + {} + + + + Equipments + + + + + +
diff --git a/hr_employee_ppe/views/hr_employee_ppe_view.xml b/hr_employee_ppe/views/hr_employee_ppe_view.xml new file mode 100644 index 00000000000..4aca81b9214 --- /dev/null +++ b/hr_employee_ppe/views/hr_employee_ppe_view.xml @@ -0,0 +1,87 @@ + + + + + hr.employee.ppe.tree + hr.employee.ppe + tree + + + + + + + + + + + + + + + + hr.employee.ppe.form + hr.employee.ppe + +
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + hr.employee.ppe.form + hr.employee.ppe + + + + + + + + + + + + + + + + PPEs + hr.employee.ppe + form + tree,form + + + + +
diff --git a/hr_employee_ppe/views/hr_employee_view.xml b/hr_employee_ppe/views/hr_employee_view.xml new file mode 100644 index 00000000000..8ac06ba04c4 --- /dev/null +++ b/hr_employee_ppe/views/hr_employee_view.xml @@ -0,0 +1,39 @@ + + + + + + hr.employee.ppe.employee.form + hr.employee + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+
+
+
+ + + + +
From 5e1fcb842f8d699ac7bf9bf299395b247d18cd8f Mon Sep 17 00:00:00 2001 From: Eduardo Aparicio Date: Wed, 24 Jun 2020 00:17:54 -0300 Subject: [PATCH 02/42] [12.0][UPD] Changes proposed by the Community for the first version implemented. --- hr_employee_ppe/__manifest__.py | 3 +- hr_employee_ppe/data/hr_employee_ppe_cron.xml | 16 ++ hr_employee_ppe/demo/hr_employee_ppe_demo.xml | 25 +++- hr_employee_ppe/i18n/hr_employee_ppe.pot | 137 +++++++++++++++--- .../i18n/hr_employee_ppe.pot:Zone.Identifier | 4 - hr_employee_ppe/models/hr_employee_ppe.py | 80 ++++++++-- .../models/hr_employee_ppe_equipment.py | 19 ++- hr_employee_ppe/readme/CONTRIBUTORS.rst | 2 +- hr_employee_ppe/readme/DESCRIPTION.rst | 2 +- hr_employee_ppe/readme/INSTALL.rst | 2 +- hr_employee_ppe/readme/USAGE.rst | 2 +- .../views/hr_employee_ppe_equipment.xml | 4 +- .../views/hr_employee_ppe_view.xml | 62 +++++++- hr_employee_ppe/views/hr_employee_view.xml | 29 +++- 14 files changed, 318 insertions(+), 69 deletions(-) create mode 100644 hr_employee_ppe/data/hr_employee_ppe_cron.xml delete mode 100644 hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index 34f30aa6fac..2c6c5618361 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Personal Protective Equipment (PPE) Management", "version": "12.0.1.0.0", - "author": "Escodoo," + "author": "Escodoo" "Odoo Community Association (OCA)", "website": "https://github.com/oca/hr", "license": "AGPL-3", @@ -18,6 +18,7 @@ "views/hr_employee_view.xml", "views/hr_employee_ppe_view.xml", 'views/hr_employee_ppe_equipment.xml', + 'data/hr_employee_ppe_cron.xml', ], 'demo': [ 'demo/hr_employee_ppe_demo.xml', diff --git a/hr_employee_ppe/data/hr_employee_ppe_cron.xml b/hr_employee_ppe/data/hr_employee_ppe_cron.xml new file mode 100644 index 00000000000..e23f4deda40 --- /dev/null +++ b/hr_employee_ppe/data/hr_employee_ppe_cron.xml @@ -0,0 +1,16 @@ + + + + + PPE's expiry date verification + + code + model.cron_ppe_expiry_verification() + + 1 + days + -1 + + + + diff --git a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml index a86bfdc3250..cbdad5f7628 100644 --- a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml +++ b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml @@ -3,11 +3,26 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> - - + + Mask for COVID-19 to Abigail Peterson + + + True + 2020-01-01 + 2020-12-31 + + Plant 32 + CA 1234567890 + Mask appropriate for COVID-19 + diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index fe03725fb0e..3eb89f25406 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-08 18:30+0000\n" -"PO-Revision-Date: 2020-06-08 18:30+0000\n" +"POT-Creation-Date: 2020-06-24 03:12+0000\n" +"PO-Revision-Date: 2020-06-24 03:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,32 +15,46 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:66 +#, python-format +msgid " to " +msgstr "" + #. module: hr_employee_ppe #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree msgid "# Certificate" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction msgid "Action Needed" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_ids msgid "Activities" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_state +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_state msgid "Activity State" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_attachment_count +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_attachment_count msgid "Attachment Count" msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__partner_id +msgid "Certification Authority" +msgstr "" + #. module: hr_employee_ppe #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form @@ -54,11 +68,6 @@ msgstr "" msgid "Certification Number" msgstr "" -#. module: hr_employee_ppe -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree -msgid "Personal Protective Equipment" -msgstr "" - #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__create_uid #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__create_uid @@ -90,17 +99,18 @@ msgid "Employee" msgstr "" #. module: hr_employee_ppe -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__partner_id -msgid "Employer, School, University, Certification Authority" +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__end_date +msgid "End Date" msgstr "" #. module: hr_employee_ppe -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__end_date -msgid "End Date" +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:101 +#, python-format +msgid "End date cannot occur earlier than the start date." msgstr "" #. module: hr_employee_ppe -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__name +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__ppe_id msgid "Equipment" msgstr "" @@ -116,7 +126,6 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__expire -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__expire msgid "Expire" msgstr "" @@ -127,16 +136,19 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_follower_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_follower_ids msgid "Followers" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_channel_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_channel_ids msgid "Followers (Channels)" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_partner_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_partner_ids msgid "Followers (Partners)" msgstr "" @@ -153,29 +165,32 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread msgid "If checked new messages require your attention." msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction msgid "If checked, new messages require your attention." msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error msgid "If checked, some messages have a delivery error." msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_is_follower +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_is_follower msgid "Is Follower" msgstr "" #. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__partner_id #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree msgid "Issued By" msgstr "" @@ -205,73 +220,92 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_main_attachment_id msgid "Main Attachment" msgstr "" +#. module: hr_employee_ppe +#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_demo_1 +#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template +msgid "Mask for COVID-19" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error msgid "Message Delivery error" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_ids msgid "Messages" msgstr "" #. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__name #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__name msgid "Name" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_date_deadline +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_date_deadline msgid "Next Activity Deadline" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_summary +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_summary msgid "Next Activity Summary" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_type_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_type_id msgid "Next Activity Type" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction_counter msgid "Number of Actions" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error_counter msgid "Number of error" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction_counter msgid "Number of messages which requires an action" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error_counter msgid "Number of messages with delivery error" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread_counter msgid "Number of unread messages" msgstr "" #. module: hr_employee_ppe #: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 msgid "Overdue" msgstr "" #. module: hr_employee_ppe #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search msgid "PPE" msgstr "" @@ -282,11 +316,18 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.ui.menu,name:hr_employee_ppe.menu_open_view_employee_ppe_form +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree msgid "PPE Allocation" msgstr "" #. module: hr_employee_ppe -#: model:ir.actions.act_window,name:hr_employee_ppe.open_view_employee_ppe_form +#: model:ir.actions.server,name:hr_employee_ppe.hr_employee_ppe_cron_ir_actions_server +#: model:ir.cron,cron_name:hr_employee_ppe.hr_employee_ppe_cron +#: model:ir.cron,name:hr_employee_ppe.hr_employee_ppe_cron +msgid "PPE's expiry date verification" +msgstr "" + +#. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee__ppe_ids #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee__ppe_ids #: model:ir.ui.menu,name:hr_employee_ppe.menu_hr_employee_ppe @@ -294,13 +335,19 @@ msgid "PPEs" msgstr "" #. module: hr_employee_ppe -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__partner_id -msgid "Partner" +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +msgid "Personal Protective Equipment (PPE)" msgstr "" #. module: hr_employee_ppe -#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit -msgid "Personal Protective Equipment (PPE)" +#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "Personal Protective Equipments" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.actions.act_window,name:hr_employee_ppe.open_view_employee_ppe_form +msgid "Personal Protective Equipments (PPEs)" msgstr "" #. module: hr_employee_ppe @@ -310,11 +357,18 @@ msgstr "" #. module: hr_employee_ppe #: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 msgid "Planned" msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__product_id +msgid "Product" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_user_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_user_id msgid "Responsible User" msgstr "" @@ -323,6 +377,16 @@ msgstr "" msgid "Search PPEs" msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__product_id +msgid "Select the PPE from the product list. Please note that the PPE must be a consumable product." +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__expirable +msgid "Select this option if the PPE has expiry date." +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__start_date msgid "Start Date" @@ -330,11 +394,13 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__status +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search msgid "Status" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__activity_state +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_state msgid "Status based on activities\n" "Overdue: Due date is already passed\n" "Today: Activity date is today\n" @@ -343,16 +409,30 @@ msgstr "" #. module: hr_employee_ppe #: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 msgid "Today" msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__expire +msgid "True if the PPE expires" +msgstr "" + +#. module: hr_employee_ppe +#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_demo_1 +#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template +msgid "Unit(s)" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread msgid "Unread Messages" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread_counter msgid "Unread Messages Counter" msgstr "" @@ -363,16 +443,25 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids msgid "Website Messages" msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids msgid "Website communication history" msgstr "" #. module: hr_employee_ppe -#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe -msgid "hr.employee.ppe" +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:96 +#, python-format +msgid "You must inform start date and end date for expirable PPEs." +msgstr "" + +#. module: hr_employee_ppe +#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_demo_1 +#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template +msgid "kg" msgstr "" diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier b/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier deleted file mode 100644 index acebd2efd45..00000000000 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot:Zone.Identifier +++ /dev/null @@ -1,4 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=about:client -HostUrl=about:internet diff --git a/hr_employee_ppe/models/hr_employee_ppe.py b/hr_employee_ppe/models/hr_employee_ppe.py index 8b9a109265a..874e2008f5a 100644 --- a/hr_employee_ppe/models/hr_employee_ppe.py +++ b/hr_employee_ppe/models/hr_employee_ppe.py @@ -1,7 +1,8 @@ # Copyright 2020 Escodoo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError class HrEmployeePPE(models.Model): @@ -11,32 +12,45 @@ class HrEmployeePPE(models.Model): _description = 'Personal Protective Equipments' _inherit = ['mail.thread', 'mail.activity.mixin'] - name = fields.Many2one( + name = fields.Char( + required=True, + ) + ppe_id = fields.Many2one( string='Equipment', required=True, comodel_name='hr.employee.ppe.equipment', ) employee_id = fields.Many2one( - 'hr.employee', + comodel_name='hr.employee', string='Employee', required=True ) start_date = fields.Date( - 'Start Date', + string='Start Date', default=fields.Date.today() ) - end_date = fields.Date('End Date') - description = fields.Text('Description') + end_date = fields.Date( + string='End Date' + ) + description = fields.Text( + string='Description' + ) partner_id = fields.Many2one( - 'res.partner', - 'Partner', - help="Employer, School, University" - "Certification Authority" + comodel_name='res.partner', + string='Issued By', + help='Certification Authority' + ) + location = fields.Char( + string='Location', + help='Location' + ) + expire = fields.Boolean( + string='Expire', + help='True if the PPE expires', + default=True ) - location = fields.Char('Location', help="Location") - expire = fields.Boolean('Expire', help="Expire", default=True) certification = fields.Char( - 'Certification Number', + string='Certification Number', help='Certification Number' ) status = fields.Selection( @@ -46,6 +60,42 @@ class HrEmployeePPE(models.Model): help='Certification Number' ) - @api.onchange('name') + @api.onchange('ppe_id', 'employee_id', 'end_date', 'start_date') def verify_expiracy(self): - self.expire = self.name.expirable + if self.ppe_id and self.employee_id: + self.name = self.ppe_id.name + _(' to ') + self.employee_id.name + + self.expire = self.ppe_id.expirable + + if not self.expire: + self.status = 'valid' + + if self.expire and self.end_date: + if self.end_date < fields.Date.today(): + self.status = 'expired' + else: + self.status = 'valid' + + @api.model + def cron_ppe_expiry_verification(self, date_ref=None): + if not date_ref: + date_ref = fields.Date.context_today(self) + domain = [] + domain.extend([('end_date', '<', date_ref)]) + ppes_to_check_expiry = self.search(domain) + for record in ppes_to_check_expiry: + record.status = 'expired' + + @api.constrains('start_date', 'end_date') + def _check_dates(self): + for record in self: + if self.expire: + if not record.end_date or not record.start_date: + raise ValidationError( + _('You must inform start date and end date for expirable PPEs.') + ) + if record.end_date and record.start_date: + if record.end_date < record.start_date: + raise ValidationError( + _('End date cannot occur earlier than the start date.') + ) diff --git a/hr_employee_ppe/models/hr_employee_ppe_equipment.py b/hr_employee_ppe/models/hr_employee_ppe_equipment.py index d64b9ecb5af..9735f54651a 100644 --- a/hr_employee_ppe/models/hr_employee_ppe_equipment.py +++ b/hr_employee_ppe/models/hr_employee_ppe_equipment.py @@ -1,7 +1,7 @@ # Copyright 2020 Escodoo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class HrEmployeePpeEquipment(models.Model): @@ -10,5 +10,18 @@ class HrEmployeePpeEquipment(models.Model): _description = 'Personal Protective Equipments - Equipment List' _inherit = ['mail.thread', 'mail.activity.mixin'] - name = fields.Char(string='Equipment') - expirable = fields.Boolean() + name = fields.Char() + product_id = fields.Many2one( + required=True, + help="""Select the PPE from the product list. + Please note that the PPE must be a consumable product.""", + comodel_name='product.product', + domain="[('type', '=', 'consu')]" + ) + expirable = fields.Boolean( + help='Select this option if the PPE has expiry date.' + ) + + @api.onchange('product_id') + def update_name(self): + self.name = self.product_id.name diff --git a/hr_employee_ppe/readme/CONTRIBUTORS.rst b/hr_employee_ppe/readme/CONTRIBUTORS.rst index 5b6599e79e8..574da743387 100644 --- a/hr_employee_ppe/readme/CONTRIBUTORS.rst +++ b/hr_employee_ppe/readme/CONTRIBUTORS.rst @@ -1,4 +1,4 @@ * Eduardo Aparicio * Marcel Savegnago * Joao Carassato -* Fernando Colus \ No newline at end of file +* Fernando Colus diff --git a/hr_employee_ppe/readme/DESCRIPTION.rst b/hr_employee_ppe/readme/DESCRIPTION.rst index 5e1e17ea2ed..141b1a3205d 100644 --- a/hr_employee_ppe/readme/DESCRIPTION.rst +++ b/hr_employee_ppe/readme/DESCRIPTION.rst @@ -1 +1 @@ -This module allows you to manage allocation of PPE to your employees. \ No newline at end of file +This module allows you to manage allocation of PPE to your employees. diff --git a/hr_employee_ppe/readme/INSTALL.rst b/hr_employee_ppe/readme/INSTALL.rst index 4606a0a5efa..9b546f3535e 100644 --- a/hr_employee_ppe/readme/INSTALL.rst +++ b/hr_employee_ppe/readme/INSTALL.rst @@ -1 +1 @@ -To install this module, you need to have HR module installed or it will be requested during installation. \ No newline at end of file +To install this module, you need to have HR module installed or it will be requested during installation. diff --git a/hr_employee_ppe/readme/USAGE.rst b/hr_employee_ppe/readme/USAGE.rst index 5c88eafaec7..bd28509b6b8 100644 --- a/hr_employee_ppe/readme/USAGE.rst +++ b/hr_employee_ppe/readme/USAGE.rst @@ -6,4 +6,4 @@ Then you can allocate: 1. Go to menu *Human Resources -> Human Resources -> Employees* 2. Open employee data -3. Goto *PPE* tab \ No newline at end of file +3. Goto *PPE* tab diff --git a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml index ed873f460b4..2dfc4a9df8f 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml @@ -11,7 +11,8 @@
- + + @@ -36,6 +37,7 @@ + diff --git a/hr_employee_ppe/views/hr_employee_ppe_view.xml b/hr_employee_ppe/views/hr_employee_ppe_view.xml index 4aca81b9214..9cfc708d9bf 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_view.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_view.xml @@ -1,16 +1,16 @@ + hr.employee.ppe.tree hr.employee.ppe tree - + - - + @@ -19,6 +19,7 @@ + hr.employee.ppe.form hr.employee.ppe @@ -28,9 +29,10 @@ + - + @@ -38,7 +40,7 @@ - + @@ -55,16 +57,62 @@ + + + hr.employee.ppe.kanban + hr.employee.ppe + + + + + + + + + +
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+ + hr.employee.ppe.form hr.employee.ppe + + + @@ -73,10 +121,10 @@ - PPEs + Personal Protective Equipments (PPEs) hr.employee.ppe form - tree,form + tree,form,kanban - + @@ -21,10 +21,29 @@ - - - - +
+ +
+ + + + + + + + + + + + + + + + + + + +
From ebf14ff28c1d82b535053bce6bf799832b21c418 Mon Sep 17 00:00:00 2001 From: Eduardo Aparicio Date: Wed, 24 Jun 2020 10:21:34 -0300 Subject: [PATCH 03/42] [12.0][UPD] Location field removed. Indications field included. Minor layout improvements and lynt corrections. --- hr_employee_ppe/README.rst | 3 ++- hr_employee_ppe/__manifest__.py | 3 +-- hr_employee_ppe/data/hr_employee_ppe_cron.xml | 2 +- hr_employee_ppe/demo/hr_employee_ppe_demo.xml | 3 +-- hr_employee_ppe/models/hr_employee_ppe.py | 13 +++++++------ hr_employee_ppe/models/hr_employee_ppe_equipment.py | 4 ++-- hr_employee_ppe/readme/USAGE.rst | 8 ++++---- hr_employee_ppe/views/hr_employee_ppe_equipment.xml | 3 +-- hr_employee_ppe/views/hr_employee_ppe_view.xml | 6 +++--- hr_employee_ppe/views/hr_employee_view.xml | 6 +++--- 10 files changed, 25 insertions(+), 26 deletions(-) diff --git a/hr_employee_ppe/README.rst b/hr_employee_ppe/README.rst index d1dbda46a21..7a5bf159a42 100644 --- a/hr_employee_ppe/README.rst +++ b/hr_employee_ppe/README.rst @@ -38,7 +38,8 @@ Then you can allocate: Known issues / Roadmap ====================== -This module is not connected to any fiscal or legal obligations. As it is intended only for informational purposes, anyone who needs connections to other modules can use this as base for development. +* Define mandatory PPEs list associated to a job position (Thanks @mymage for your idea) +* This module is not connected to any fiscal or legal obligations. As it is intended only for informational purposes, anyone who needs connections to other modules can use this as base for development. Bug Tracker =========== diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index 2c6c5618361..940ba68ac92 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -4,8 +4,7 @@ { "name": "Personal Protective Equipment (PPE) Management", "version": "12.0.1.0.0", - "author": "Escodoo" - "Odoo Community Association (OCA)", + "author": "Escodoo, Odoo Community Association (OCA)", "website": "https://github.com/oca/hr", "license": "AGPL-3", "category": "Human Resources", diff --git a/hr_employee_ppe/data/hr_employee_ppe_cron.xml b/hr_employee_ppe/data/hr_employee_ppe_cron.xml index e23f4deda40..f8f54d48061 100644 --- a/hr_employee_ppe/data/hr_employee_ppe_cron.xml +++ b/hr_employee_ppe/data/hr_employee_ppe_cron.xml @@ -8,7 +8,7 @@ model.cron_ppe_expiry_verification() 1 - days + days -1 diff --git a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml index cbdad5f7628..2b96b9db632 100644 --- a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml +++ b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml @@ -8,7 +8,6 @@ - Mask for COVID-19 True @@ -21,7 +20,7 @@ 2020-01-01 2020-12-31 - Plant 32 + Whenever close to other person CA 1234567890 Mask appropriate for COVID-19 diff --git a/hr_employee_ppe/models/hr_employee_ppe.py b/hr_employee_ppe/models/hr_employee_ppe.py index 874e2008f5a..aa742501254 100644 --- a/hr_employee_ppe/models/hr_employee_ppe.py +++ b/hr_employee_ppe/models/hr_employee_ppe.py @@ -40,9 +40,9 @@ class HrEmployeePPE(models.Model): string='Issued By', help='Certification Authority' ) - location = fields.Char( - string='Location', - help='Location' + indications = fields.Text( + string='Indications', + help='Situations in which the employee should use this equipment.' ) expire = fields.Boolean( string='Expire', @@ -63,7 +63,7 @@ class HrEmployeePPE(models.Model): @api.onchange('ppe_id', 'employee_id', 'end_date', 'start_date') def verify_expiracy(self): if self.ppe_id and self.employee_id: - self.name = self.ppe_id.name + _(' to ') + self.employee_id.name + self.name = self.ppe_id.product_id.name + _(' to ') + self.employee_id.name self.expire = self.ppe_id.expirable @@ -73,7 +73,7 @@ def verify_expiracy(self): if self.expire and self.end_date: if self.end_date < fields.Date.today(): self.status = 'expired' - else: + else: self.status = 'valid' @api.model @@ -92,7 +92,8 @@ def _check_dates(self): if self.expire: if not record.end_date or not record.start_date: raise ValidationError( - _('You must inform start date and end date for expirable PPEs.') + _("""You must inform start date and + end date for expirable PPEs.""") ) if record.end_date and record.start_date: if record.end_date < record.start_date: diff --git a/hr_employee_ppe/models/hr_employee_ppe_equipment.py b/hr_employee_ppe/models/hr_employee_ppe_equipment.py index 9735f54651a..9635b65c828 100644 --- a/hr_employee_ppe/models/hr_employee_ppe_equipment.py +++ b/hr_employee_ppe/models/hr_employee_ppe_equipment.py @@ -9,11 +9,11 @@ class HrEmployeePpeEquipment(models.Model): _name = 'hr.employee.ppe.equipment' _description = 'Personal Protective Equipments - Equipment List' _inherit = ['mail.thread', 'mail.activity.mixin'] + _rec_name = 'product_id' - name = fields.Char() product_id = fields.Many2one( required=True, - help="""Select the PPE from the product list. + help="""Select the PPE from the product list. Please note that the PPE must be a consumable product.""", comodel_name='product.product', domain="[('type', '=', 'consu')]" diff --git a/hr_employee_ppe/readme/USAGE.rst b/hr_employee_ppe/readme/USAGE.rst index bd28509b6b8..c52edd3ce95 100644 --- a/hr_employee_ppe/readme/USAGE.rst +++ b/hr_employee_ppe/readme/USAGE.rst @@ -1,9 +1,9 @@ To manage PPEs allocation to employees, you will have to populate a list of equipments first. -1. Go to menu *Human Resources -> PPE -> Equipment* +1. Go to menu *Employees -> PPEs -> Equipments* Then you can allocate: -1. Go to menu *Human Resources -> Human Resources -> Employees* -2. Open employee data -3. Goto *PPE* tab +1. Go to menu *Employees -> Employees* +2. Select an employee +3. Go to *PPE* tab diff --git a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml index 2dfc4a9df8f..04c2604807f 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml @@ -11,7 +11,7 @@
- + @@ -36,7 +36,6 @@ hr.employee.ppe.equipment - diff --git a/hr_employee_ppe/views/hr_employee_ppe_view.xml b/hr_employee_ppe/views/hr_employee_ppe_view.xml index 9cfc708d9bf..99339a08533 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_view.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_view.xml @@ -39,11 +39,11 @@ - - - + + + diff --git a/hr_employee_ppe/views/hr_employee_view.xml b/hr_employee_ppe/views/hr_employee_view.xml index 10398816f0a..85eea1dd3f8 100644 --- a/hr_employee_ppe/views/hr_employee_view.xml +++ b/hr_employee_ppe/views/hr_employee_view.xml @@ -35,11 +35,11 @@ - - - + + + From 960c083760a5ba73af5c600e92674abea4fbf86a Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 15 Sep 2020 07:09:39 +0000 Subject: [PATCH 04/42] [UPD] Update hr_employee_ppe.pot --- hr_employee_ppe/i18n/hr_employee_ppe.pot | 27 +++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index 3eb89f25406..8aaea11a390 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-24 03:12+0000\n" -"PO-Revision-Date: 2020-06-24 03:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -181,6 +179,11 @@ msgstr "" msgid "If checked, some messages have a delivery error." msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__indications +msgid "Indications" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_is_follower #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_is_follower @@ -212,12 +215,6 @@ msgstr "" msgid "Last Updated on" msgstr "" -#. module: hr_employee_ppe -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__location -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__location -msgid "Location" -msgstr "" - #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_main_attachment_id #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_main_attachment_id @@ -244,7 +241,6 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__name -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__name msgid "Name" msgstr "" @@ -379,7 +375,8 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__product_id -msgid "Select the PPE from the product list. Please note that the PPE must be a consumable product." +msgid "Select the PPE from the product list.\n" +" Please note that the PPE must be a consumable product." msgstr "" #. module: hr_employee_ppe @@ -387,6 +384,11 @@ msgstr "" msgid "Select this option if the PPE has expiry date." msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__indications +msgid "Situations in which the employee should use this equipment." +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__start_date msgid "Start Date" @@ -454,9 +456,10 @@ msgid "Website communication history" msgstr "" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:96 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:95 #, python-format -msgid "You must inform start date and end date for expirable PPEs." +msgid "You must inform start date and\n" +" end date for expirable PPEs." msgstr "" #. module: hr_employee_ppe From 9a90f4ebec6eb8178e0b12780ad2fcc824c0ce87 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 15 Sep 2020 07:35:24 +0000 Subject: [PATCH 05/42] [UPD] README.rst --- hr_employee_ppe/README.rst | 75 +-- hr_employee_ppe/static/description/index.html | 441 ++++++++++++++++++ 2 files changed, 483 insertions(+), 33 deletions(-) create mode 100644 hr_employee_ppe/static/description/index.html diff --git a/hr_employee_ppe/README.rst b/hr_employee_ppe/README.rst index 7a5bf159a42..d3a2cc0cbc5 100644 --- a/hr_employee_ppe/README.rst +++ b/hr_employee_ppe/README.rst @@ -1,12 +1,31 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -=================================== -Personal Protective Equipment (PPE) -=================================== - - +============================================== +Personal Protective Equipment (PPE) Management +============================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github + :target: https://github.com/OCA/hr/tree/12.0/hr_employee_ppe + :alt: OCA/hr +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_employee_ppe + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/116/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to manage allocation of PPE to your employees. **Table of contents** @@ -18,49 +37,39 @@ Installation To install this module, you need to have HR module installed or it will be requested during installation. -Configuration -============= - -No additional steps are needed. - Usage ===== + To manage PPEs allocation to employees, you will have to populate a list of equipments first. -1. Go to menu *Human Resources -> PPE -> Equipment* +1. Go to menu *Employees -> PPEs -> Equipments* Then you can allocate: -1. Go to menu *Human Resources -> Human Resources -> Employees* -2. Open employee data -3. Goto *PPE* tab - -Known issues / Roadmap -====================== - -* Define mandatory PPEs list associated to a job position (Thanks @mymage for your idea) -* This module is not connected to any fiscal or legal obligations. As it is intended only for informational purposes, anyone who needs connections to other modules can use this as base for development. +1. Go to menu *Employees -> Employees* +2. Select an employee +3. Go to *PPE* tab 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 smash it by providing detailed and welcomed feedback. +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Escodoo - Authors -======= +~~~~~~~ * Escodoo Contributors -============ +~~~~~~~~~~~~ * Eduardo Aparicio * Marcel Savegnago @@ -68,7 +77,7 @@ Contributors * Fernando Colus Maintainers -=========== +~~~~~~~~~~~ This module is maintained by the OCA. diff --git a/hr_employee_ppe/static/description/index.html b/hr_employee_ppe/static/description/index.html new file mode 100644 index 00000000000..a5fdc921b74 --- /dev/null +++ b/hr_employee_ppe/static/description/index.html @@ -0,0 +1,441 @@ + + + + + + +Personal Protective Equipment (PPE) Management + + + +
+

Personal Protective Equipment (PPE) Management

+ + +

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

+

This module allows you to manage allocation of PPE to your employees.

+

Table of contents

+ +
+

Installation

+

To install this module, you need to have HR module installed or it will be requested during installation.

+
+
+

Usage

+

To manage PPEs allocation to employees, you will have to populate a list of equipments first.

+
    +
  1. Go to menu Employees -> PPEs -> Equipments
  2. +
+

Then you can allocate:

+
    +
  1. Go to menu Employees -> Employees
  2. +
  3. Select an employee
  4. +
  5. Go to PPE tab
  6. +
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Escodoo
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

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

+

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

+
+
+
+ + From 09315a5947c4730ebec91c4965e04f02db4a777d Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Sat, 31 Oct 2020 18:56:47 -0300 Subject: [PATCH 06/42] [IMP] hr_employee_ppe: Fix Maintainers and module credits --- hr_employee_ppe/__manifest__.py | 2 ++ hr_employee_ppe/readme/CREDITS.rst | 3 +++ hr_employee_ppe/static/description/banner.png | Bin 0 -> 6733 bytes 3 files changed, 5 insertions(+) create mode 100644 hr_employee_ppe/readme/CREDITS.rst create mode 100644 hr_employee_ppe/static/description/banner.png diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index 940ba68ac92..c506f66734f 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -5,6 +5,8 @@ "name": "Personal Protective Equipment (PPE) Management", "version": "12.0.1.0.0", "author": "Escodoo, Odoo Community Association (OCA)", + 'maintainers': ['marcelsavegnago', 'eduaparicio'], + 'images': ['static/description/banner.png'], "website": "https://github.com/oca/hr", "license": "AGPL-3", "category": "Human Resources", diff --git a/hr_employee_ppe/readme/CREDITS.rst b/hr_employee_ppe/readme/CREDITS.rst new file mode 100644 index 00000000000..7762abc85c0 --- /dev/null +++ b/hr_employee_ppe/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Escodoo - `https://www.escodoo.com.br `_ diff --git a/hr_employee_ppe/static/description/banner.png b/hr_employee_ppe/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..da4f6de2a24707c5658d507c81cdd7625d9bf9e4 GIT binary patch literal 6733 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 literal 0 HcmV?d00001 From fb65cb00e82bdc6f9160a9271366d1870b8ad5c3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 5 Nov 2020 06:29:22 +0000 Subject: [PATCH 07/42] [UPD] README.rst --- hr_employee_ppe/README.rst | 18 ++++++++++++++++++ hr_employee_ppe/static/description/index.html | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/hr_employee_ppe/README.rst b/hr_employee_ppe/README.rst index d3a2cc0cbc5..c6ee9f2a103 100644 --- a/hr_employee_ppe/README.rst +++ b/hr_employee_ppe/README.rst @@ -76,6 +76,13 @@ Contributors * Joao Carassato * Fernando Colus +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Escodoo - `https://www.escodoo.com.br `_ + Maintainers ~~~~~~~~~~~ @@ -89,6 +96,17 @@ 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-marcelsavegnago| image:: https://github.com/marcelsavegnago.png?size=40px + :target: https://github.com/marcelsavegnago + :alt: marcelsavegnago +.. |maintainer-eduaparicio| image:: https://github.com/eduaparicio.png?size=40px + :target: https://github.com/eduaparicio + :alt: eduaparicio + +Current `maintainers `__: + +|maintainer-marcelsavegnago| |maintainer-eduaparicio| + This module is part of the `OCA/hr `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_employee_ppe/static/description/index.html b/hr_employee_ppe/static/description/index.html index a5fdc921b74..544b933bce8 100644 --- a/hr_employee_ppe/static/description/index.html +++ b/hr_employee_ppe/static/description/index.html @@ -378,7 +378,8 @@

Personal Protective Equipment (PPE) Management

  • Credits
  • @@ -425,13 +426,22 @@

    Contributors

  • Fernando Colus <fernando.colus@escodoo.com.br>
  • +
    +

    Other credits

    +

    The development of this module has been financially supported by:

    + +
    -

    Maintainers

    +

    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 maintainers:

    +

    marcelsavegnago eduaparicio

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

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

    From 92e4886a3f714e3326a5a3a1595f6a32554eb39c Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Sat, 20 Feb 2021 02:06:00 -0300 Subject: [PATCH 08/42] [IMP] Tests and fixes --- hr_employee_ppe/__manifest__.py | 3 +- hr_employee_ppe/demo/hr_employee_ppe_demo.xml | 61 ++- hr_employee_ppe/i18n/hr_employee_ppe.pot | 44 +- hr_employee_ppe/i18n/pt_BR.po | 458 ++++++++++++++++++ hr_employee_ppe/models/hr_employee_ppe.py | 96 ++-- hr_employee_ppe/tests/__init__.py | 1 + hr_employee_ppe/tests/test_hr_employee_ppe.py | 38 ++ .../views/hr_employee_ppe_view.xml | 59 ++- 8 files changed, 629 insertions(+), 131 deletions(-) create mode 100644 hr_employee_ppe/i18n/pt_BR.po create mode 100644 hr_employee_ppe/tests/__init__.py create mode 100644 hr_employee_ppe/tests/test_hr_employee_ppe.py diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index c506f66734f..28cd161fe3b 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -11,7 +11,8 @@ "license": "AGPL-3", "category": "Human Resources", "depends": ["hr", - 'mail'], + 'mail', + 'product'], "data": [ "security/hr_security.xml", 'security/hr_employee_ppe_equipment.xml', diff --git a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml index 2b96b9db632..4a492c2f732 100644 --- a/hr_employee_ppe/demo/hr_employee_ppe_demo.xml +++ b/hr_employee_ppe/demo/hr_employee_ppe_demo.xml @@ -1,27 +1,50 @@ - + - - - + + + + PPE + + Mask for COVID-19 + + consu + + + Face Shield + + consu - - - + + True - - - Mask for COVID-19 to Abigail Peterson - - - True - 2020-01-01 - 2020-12-31 - - Whenever close to other person - CA 1234567890 - Mask appropriate for COVID-19 + + + False + + + Mask for COVID-19 to Abigail Peterson + + + True + 2020-01-01 + 2020-12-31 + + Whenever close to other person + CA 1234567890 + Mask appropriate for COVID-19 + + + Face Shield to Abigail Peterson + + + False + 2020-01-01 + + Whenever close to other person + CA 1234567891 + Face Shield appropriate for COVID-19 diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index 8aaea11a390..f651a0af013 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-02-20 17:47+0000\n" +"PO-Revision-Date: 2021-02-20 17:47+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -14,7 +16,7 @@ msgstr "" "Plural-Forms: \n" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:66 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:49 #, python-format msgid " to " msgstr "" @@ -62,7 +64,6 @@ msgstr "" #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__certification #: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__certification -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__status msgid "Certification Number" msgstr "" @@ -102,7 +103,7 @@ msgid "End Date" msgstr "" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:101 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:86 #, python-format msgid "End date cannot occur earlier than the start date." msgstr "" @@ -221,12 +222,6 @@ msgstr "" msgid "Main Attachment" msgstr "" -#. module: hr_employee_ppe -#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_demo_1 -#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template -msgid "Mask for COVID-19" -msgstr "" - #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error @@ -316,6 +311,11 @@ msgstr "" msgid "PPE Allocation" msgstr "" +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__status +msgid "PPE Status" +msgstr "" + #. module: hr_employee_ppe #: model:ir.actions.server,name:hr_employee_ppe.hr_employee_ppe_cron_ir_actions_server #: model:ir.cron,cron_name:hr_employee_ppe.hr_employee_ppe_cron @@ -420,12 +420,6 @@ msgstr "" msgid "True if the PPE expires" msgstr "" -#. module: hr_employee_ppe -#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_demo_1 -#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template -msgid "Unit(s)" -msgstr "" - #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread @@ -444,27 +438,9 @@ msgid "Valid" msgstr "" #. module: hr_employee_ppe -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__website_message_ids -#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: hr_employee_ppe -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__website_message_ids -#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids -msgid "Website communication history" -msgstr "" - -#. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:95 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:78 #, python-format msgid "You must inform start date and\n" " end date for expirable PPEs." msgstr "" -#. module: hr_employee_ppe -#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_demo_1 -#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_demo_1_product_template -msgid "kg" -msgstr "" - diff --git a/hr_employee_ppe/i18n/pt_BR.po b/hr_employee_ppe/i18n/pt_BR.po new file mode 100644 index 00000000000..05ce936dd22 --- /dev/null +++ b/hr_employee_ppe/i18n/pt_BR.po @@ -0,0 +1,458 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_employee_ppe +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-02-20 17:47+0000\n" +"PO-Revision-Date: 2021-02-20 14:48-0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.4.1\n" +"Last-Translator: Marcel Savegnago \n" +"Language: pt_BR\n" + +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:49 +#, python-format +msgid " to " +msgstr " para " + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +msgid "# Certificate" +msgstr "# Certificado" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction +msgid "Action Needed" +msgstr "Ação Necessária" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_ids +msgid "Activities" +msgstr "Atividades" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_state +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_state +msgid "Activity State" +msgstr "Estado de Atividade" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_attachment_count +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_attachment_count +msgid "Attachment Count" +msgstr "Contagem de Anexos" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__partner_id +msgid "Certification Authority" +msgstr "Autoridade de Certificação" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form +msgid "Certification Information" +msgstr "Informações de certificação" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__certification +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__certification +msgid "Certification Number" +msgstr "Número de Certificação" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__create_uid +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__create_date +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__description +msgid "Description" +msgstr "Descrição" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__display_name +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__display_name +msgid "Display Name" +msgstr "Nome exibido" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__employee_id +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Employee" +msgstr "Funcionário" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__end_date +msgid "End Date" +msgstr "Data Final" + +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:86 +#, python-format +msgid "End date cannot occur earlier than the start date." +msgstr "A data de término não pode ocorrer antes da data de início." + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__ppe_id +msgid "Equipment" +msgstr "Equipamento" + +#. module: hr_employee_ppe +#: model:ir.ui.menu,name:hr_employee_ppe.hr_employee_ppe_equipment_menu +msgid "Equipments" +msgstr "Equipamentos" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__expirable +msgid "Expirable" +msgstr "Expirado" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__expire +msgid "Expire" +msgstr "Expirar" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,status:0 +msgid "Expired" +msgstr "Expirado" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_follower_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_channel_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_channel_ids +msgid "Followers (Channels)" +msgstr "Seguidores (Canais)" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_partner_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Parceiros)" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__id +msgid "ID" +msgstr "ID" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread +msgid "If checked new messages require your attention." +msgstr "Se marcado, novas mensagens solicitarão sua atenção." + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se marcado novas mensagens solicitarão sua atenção." + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se marcado, algumas mensagens tem erro de entrega." + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__indications +msgid "Indications" +msgstr "Indicações" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_is_follower +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_is_follower +msgid "Is Follower" +msgstr "É um seguidor" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__partner_id +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Issued By" +msgstr "Publicado Por" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe____last_update +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment____last_update +msgid "Last Modified on" +msgstr "Última modificação em" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__write_uid +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__write_date +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_main_attachment_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Anexo Principal" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error +msgid "Message Delivery error" +msgstr "Erro de entrega de Mensagem" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_ids +msgid "Messages" +msgstr "Mensagens" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__name +msgid "Name" +msgstr "Nome" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_date_deadline +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Prazo final para Próxima Atividade" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_summary +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_summary +msgid "Next Activity Summary" +msgstr "Próximo Sumário de Atividade" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_type_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo da Próxima Atividade" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de ações" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error_counter +msgid "Number of error" +msgstr "Número do erro" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_needaction_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Número de mensagens que requer uma ação" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_has_error_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensagens com erro de entrega" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread_counter +msgid "Number of unread messages" +msgstr "Quantidade de mensagens não lidas" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 +msgid "Overdue" +msgstr "Vencido(a)" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "PPE" +msgstr "EPI" + +#. module: hr_employee_ppe +#: model:ir.actions.act_window,name:hr_employee_ppe.hr_employee_ppe_equipment_act_window +msgid "PPE - Equipment" +msgstr "EPI - Equipamento" + +#. module: hr_employee_ppe +#: model:ir.ui.menu,name:hr_employee_ppe.menu_open_view_employee_ppe_form +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "PPE Allocation" +msgstr "Alocação de EPI" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__status +msgid "PPE Status" +msgstr "Situação do EPI" + +#. module: hr_employee_ppe +#: model:ir.actions.server,name:hr_employee_ppe.hr_employee_ppe_cron_ir_actions_server +#: model:ir.cron,cron_name:hr_employee_ppe.hr_employee_ppe_cron +#: model:ir.cron,name:hr_employee_ppe.hr_employee_ppe_cron +msgid "PPE's expiry date verification" +msgstr "Verificação da data de validade do EPI" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee__ppe_ids +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee__ppe_ids +#: model:ir.ui.menu,name:hr_employee_ppe.menu_hr_employee_ppe +msgid "PPEs" +msgstr "EPIs" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit +msgid "Personal Protective Equipment (PPE)" +msgstr "Equipamento de proteção individual (EPI)" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_ppe_tree +msgid "Personal Protective Equipments" +msgstr "Equipamentos de Proteção Individual" + +#. module: hr_employee_ppe +#: model:ir.actions.act_window,name:hr_employee_ppe.open_view_employee_ppe_form +msgid "Personal Protective Equipments (PPEs)" +msgstr "Equipamentos de Proteção Individual (EPIs)" + +#. module: hr_employee_ppe +#: model:ir.model,name:hr_employee_ppe.model_hr_employee_ppe_equipment +msgid "Personal Protective Equipments - Equipment List" +msgstr "Equipamentos de Proteção Individual - Lista de Equipamentos" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 +msgid "Planned" +msgstr "Planejado" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__product_id +msgid "Product" +msgstr "Produto" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__activity_user_id +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_user_id +msgid "Responsible User" +msgstr "Usuário Responsável" + +#. module: hr_employee_ppe +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Search PPEs" +msgstr "Pesquisar EPIs" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__product_id +msgid "" +"Select the PPE from the product list.\n" +" Please note that the PPE must be a consumable product." +msgstr "" +"Selecione o EPI na lista de produtos.\n" +" Por favor, note que o EPI deve ser um produto consumível." + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__expirable +msgid "Select this option if the PPE has expiry date." +msgstr "Selecione esta opção se o EPI tiver data de validade." + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__indications +msgid "Situations in which the employee should use this equipment." +msgstr "Situações em que o funcionário deve usar este equipamento." + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__start_date +msgid "Start Date" +msgstr "Data de Início" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__status +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +msgid "Status" +msgstr "Situação" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__activity_state +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Status baseado em atividades\n" +"Atrasado: Data definida já passou\n" +"Hoje: Data de atividade é hoje\n" +"Planejado: Atividades futuras." + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,activity_state:0 +#: selection:hr.employee.ppe.equipment,activity_state:0 +msgid "Today" +msgstr "Hoje" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__expire +msgid "True if the PPE expires" +msgstr "Verdade se o EPI expirar" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread +msgid "Unread Messages" +msgstr "Mensagens não lidas" + +#. module: hr_employee_ppe +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread_counter +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de Mensagens Não Lidas" + +#. module: hr_employee_ppe +#: selection:hr.employee.ppe,status:0 +msgid "Valid" +msgstr "Válido" + +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:78 +#, python-format +msgid "" +"You must inform start date and\n" +" end date for expirable PPEs." +msgstr "" +"Você deve informar a data de início e\n" +" data final para EPIs expirados." diff --git a/hr_employee_ppe/models/hr_employee_ppe.py b/hr_employee_ppe/models/hr_employee_ppe.py index aa742501254..9670975dd59 100644 --- a/hr_employee_ppe/models/hr_employee_ppe.py +++ b/hr_employee_ppe/models/hr_employee_ppe.py @@ -1,102 +1,90 @@ # Copyright 2020 Escodoo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, _ +from odoo import _, api, fields, models from odoo.exceptions import ValidationError class HrEmployeePPE(models.Model): """Adds PPE information and allocation.""" - _name = 'hr.employee.ppe' - _description = 'Personal Protective Equipments' - _inherit = ['mail.thread', 'mail.activity.mixin'] + _name = "hr.employee.ppe" + _description = "Personal Protective Equipments" + _inherit = ["mail.thread", "mail.activity.mixin"] name = fields.Char( - required=True, + compute='_compute_name', ) ppe_id = fields.Many2one( - string='Equipment', - required=True, - comodel_name='hr.employee.ppe.equipment', + string="Equipment", required=True, comodel_name="hr.employee.ppe.equipment", ) employee_id = fields.Many2one( - comodel_name='hr.employee', - string='Employee', - required=True - ) - start_date = fields.Date( - string='Start Date', - default=fields.Date.today() - ) - end_date = fields.Date( - string='End Date' - ) - description = fields.Text( - string='Description' + comodel_name="hr.employee", string="Employee", required=True ) + start_date = fields.Date(string="Start Date", default=fields.Date.today()) + end_date = fields.Date(string="End Date") + description = fields.Text(string="Description") partner_id = fields.Many2one( - comodel_name='res.partner', - string='Issued By', - help='Certification Authority' + comodel_name="res.partner", string="Issued By", help="Certification Authority" ) indications = fields.Text( - string='Indications', - help='Situations in which the employee should use this equipment.' + string="Indications", + help="Situations in which the employee should use this equipment.", ) expire = fields.Boolean( - string='Expire', - help='True if the PPE expires', - default=True + string="Expire", help="True if the PPE expires", default=True, ) certification = fields.Char( - string='Certification Number', - help='Certification Number' + string="Certification Number", help="Certification Number" ) status = fields.Selection( - [('valid', 'Valid'), ('expired', 'Expired')], - default='valid', + [("valid", "Valid"), ("expired", "Expired")], + compute="_compute_status", readonly=True, - help='Certification Number' + help="PPE Status", ) - @api.onchange('ppe_id', 'employee_id', 'end_date', 'start_date') - def verify_expiracy(self): - if self.ppe_id and self.employee_id: - self.name = self.ppe_id.product_id.name + _(' to ') + self.employee_id.name + @api.depends('ppe_id', 'employee_id') + def _compute_name(self): + for rec in self: + if (rec.ppe_id.product_id.name and rec.employee_id.name): + rec.name = rec.ppe_id.product_id.name + _(" to ") + rec.employee_id.name + rec.expire = rec.ppe_id.expirable - self.expire = self.ppe_id.expirable - - if not self.expire: - self.status = 'valid' - - if self.expire and self.end_date: - if self.end_date < fields.Date.today(): - self.status = 'expired' - else: - self.status = 'valid' + @api.depends("end_date", "start_date") + def _compute_status(self): + for rec in self: + if not rec.expire: + rec.status = "valid" + if rec.expire and rec.end_date: + if rec.end_date < fields.Date.today(): + rec.status = "expired" + else: + rec.status = "valid" @api.model def cron_ppe_expiry_verification(self, date_ref=None): if not date_ref: date_ref = fields.Date.context_today(self) domain = [] - domain.extend([('end_date', '<', date_ref)]) + domain.extend([("end_date", "<", date_ref)]) ppes_to_check_expiry = self.search(domain) for record in ppes_to_check_expiry: - record.status = 'expired' + record.status = "expired" - @api.constrains('start_date', 'end_date') + @api.constrains("start_date", "end_date") def _check_dates(self): for record in self: if self.expire: if not record.end_date or not record.start_date: raise ValidationError( - _("""You must inform start date and - end date for expirable PPEs.""") + _( + """You must inform start date and + end date for expirable PPEs.""" + ) ) if record.end_date and record.start_date: if record.end_date < record.start_date: raise ValidationError( - _('End date cannot occur earlier than the start date.') + _("End date cannot occur earlier than the start date.") ) diff --git a/hr_employee_ppe/tests/__init__.py b/hr_employee_ppe/tests/__init__.py new file mode 100644 index 00000000000..a4ead52e41f --- /dev/null +++ b/hr_employee_ppe/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_employee_ppe diff --git a/hr_employee_ppe/tests/test_hr_employee_ppe.py b/hr_employee_ppe/tests/test_hr_employee_ppe.py new file mode 100644 index 00000000000..c83e0aeecf9 --- /dev/null +++ b/hr_employee_ppe/tests/test_hr_employee_ppe.py @@ -0,0 +1,38 @@ +# Copyright 2020 - TODAY, Marcel Savegnago - Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl + +from datetime import datetime, timedelta + +from odoo.tests import SavepointCase + + +class TestHREmployeePPE(SavepointCase): + @classmethod + def setUpClass(cls): + super(TestHREmployeePPE, cls).setUpClass() + cls.hr_employee_ppe = cls.env["hr.employee.ppe"] + cls.hr_employee_ppe_equipment = cls.env["hr.employee.ppe.equipment"] + cls.hr_employee_ppe1 = cls.env.ref("hr_employee_ppe.hr_employee_ppe1") + cls.hr_employee_ppe2 = cls.env.ref("hr_employee_ppe.hr_employee_ppe2") + + def test_hr_employee_ppe(self): + self.hr_employee_ppe1._compute_status() + self.assertEqual(self.hr_employee_ppe1.status, "expired") + + self.hr_employee_ppe1.status = "valid" + self.env["hr.employee.ppe"].cron_ppe_expiry_verification() + self.assertEqual(self.hr_employee_ppe1.status, 'expired') + + self.hr_employee_ppe1.end_date = (datetime.now() + timedelta(days=1)).strftime( + "%Y-%m-%d" + ) + self.hr_employee_ppe1._compute_status() + self.assertEqual(self.hr_employee_ppe1.status, "valid") + + self.hr_employee_ppe2._compute_status() + self.assertEqual(self.hr_employee_ppe2.status, "valid") + + self.hr_employee_ppe1._compute_name() + self.assertEqual(self.hr_employee_ppe1.name, + "Mask for COVID-19 to Abigail Peterson") + self.assertEqual(self.hr_employee_ppe1.expire, True) diff --git a/hr_employee_ppe/views/hr_employee_ppe_view.xml b/hr_employee_ppe/views/hr_employee_ppe_view.xml index 99339a08533..d1f0677e3db 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_view.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_view.xml @@ -14,7 +14,7 @@ - + @@ -26,10 +26,14 @@
    -
    + +
    Expired
    +
    Valid
    @@ -37,7 +41,8 @@ - + @@ -71,25 +76,33 @@
    -
    - -
    -
    - -
    -
    -
    - -
    -
    - +
    +
    +
    +
    + + + + +
    + +
    +
    +
    + + + +
    +
    +
    +
    + +
    +
    + +
    +
    @@ -101,7 +114,7 @@ - hr.employee.ppe.form + hr.employee.ppe.search hr.employee.ppe From 0a56c3a47aef54504c5b1fe2bdae7e61862174e9 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sun, 28 Feb 2021 09:07:13 +0000 Subject: [PATCH 09/42] [UPD] Update hr_employee_ppe.pot --- hr_employee_ppe/i18n/hr_employee_ppe.pot | 54 +++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index f651a0af013..cb90101887a 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-20 17:47+0000\n" -"PO-Revision-Date: 2021-02-20 17:47+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,7 +14,8 @@ msgstr "" "Plural-Forms: \n" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:49 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:51 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:66 #, python-format msgid " to " msgstr "" @@ -103,7 +102,8 @@ msgid "End Date" msgstr "" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:86 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:89 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:101 #, python-format msgid "End date cannot occur earlier than the start date." msgstr "" @@ -130,9 +130,16 @@ msgstr "" #. module: hr_employee_ppe #: selection:hr.employee.ppe,status:0 +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form msgid "Expired" msgstr "" +#. module: hr_employee_ppe +#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "Face Shield" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_follower_ids #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_follower_ids @@ -222,6 +229,12 @@ msgstr "" msgid "Main Attachment" msgstr "" +#. module: hr_employee_ppe +#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_product1_product_template +msgid "Mask for COVID-19" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error @@ -297,6 +310,7 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +#: model:product.category,name:hr_employee_ppe.product_category_ppe msgid "PPE" msgstr "" @@ -420,6 +434,14 @@ msgstr "" msgid "True if the PPE expires" msgstr "" +#. module: hr_employee_ppe +#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_product1_product_template +#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "Unit(s)" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread @@ -434,13 +456,35 @@ msgstr "" #. module: hr_employee_ppe #: selection:hr.employee.ppe,status:0 +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form msgid "Valid" msgstr "" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:78 +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:81 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:95 #, python-format msgid "You must inform start date and\n" " end date for expirable PPEs." msgstr "" +#. module: hr_employee_ppe +#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product1_product_template +#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "kg" +msgstr "" + From 5fef3f1de4ebb15ce4512cddbddef678e6deb156 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 28 Feb 2021 09:36:05 +0000 Subject: [PATCH 10/42] hr_employee_ppe 12.0.1.1.0 --- hr_employee_ppe/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index 28cd161fe3b..5427f3993e4 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Personal Protective Equipment (PPE) Management", - "version": "12.0.1.0.0", + "version": "12.0.1.1.0", "author": "Escodoo, Odoo Community Association (OCA)", 'maintainers': ['marcelsavegnago', 'eduaparicio'], 'images': ['static/description/banner.png'], From 783f16961f3c1d4d005d59ef3f907a1d05d2e8ef Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sun, 28 Feb 2021 09:59:24 +0000 Subject: [PATCH 11/42] [UPD] Update hr_employee_ppe.pot --- hr_employee_ppe/i18n/hr_employee_ppe.pot | 3 --- 1 file changed, 3 deletions(-) diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index cb90101887a..5f8de9a5e94 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -15,7 +15,6 @@ msgstr "" #. module: hr_employee_ppe #: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:51 -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:66 #, python-format msgid " to " msgstr "" @@ -103,7 +102,6 @@ msgstr "" #. module: hr_employee_ppe #: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:89 -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:101 #, python-format msgid "End date cannot occur earlier than the start date." msgstr "" @@ -474,7 +472,6 @@ msgstr "" #. module: hr_employee_ppe #: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:81 -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:95 #, python-format msgid "You must inform start date and\n" " end date for expirable PPEs." From d619c1810ce54a557c09cf9a28715f35914c2700 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 28 Feb 2021 10:01:18 +0000 Subject: [PATCH 12/42] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: hr-12.0/hr-12.0-hr_employee_ppe Translate-URL: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_employee_ppe/ --- hr_employee_ppe/i18n/pt_BR.po | 53 +++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/hr_employee_ppe/i18n/pt_BR.po b/hr_employee_ppe/i18n/pt_BR.po index 05ce936dd22..91b829c2a66 100644 --- a/hr_employee_ppe/i18n/pt_BR.po +++ b/hr_employee_ppe/i18n/pt_BR.po @@ -8,17 +8,17 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-20 17:47+0000\n" "PO-Revision-Date: 2021-02-20 14:48-0300\n" +"Last-Translator: Marcel Savegnago \n" "Language-Team: \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.4.1\n" -"Last-Translator: Marcel Savegnago \n" -"Language: pt_BR\n" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:49 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:51 #, python-format msgid " to " msgstr " para " @@ -105,7 +105,7 @@ msgid "End Date" msgstr "Data Final" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:86 +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:89 #, python-format msgid "End date cannot occur earlier than the start date." msgstr "A data de término não pode ocorrer antes da data de início." @@ -132,9 +132,16 @@ msgstr "Expirar" #. module: hr_employee_ppe #: selection:hr.employee.ppe,status:0 +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form msgid "Expired" msgstr "Expirado" +#. module: hr_employee_ppe +#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "Face Shield" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_follower_ids #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_follower_ids @@ -224,6 +231,12 @@ msgstr "Atualizado pela última vez em" msgid "Main Attachment" msgstr "Anexo Principal" +#. module: hr_employee_ppe +#: model:product.product,name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.template,name:hr_employee_ppe.hr_employee_ppe_product1_product_template +msgid "Mask for COVID-19" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_has_error #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_has_error @@ -299,6 +312,7 @@ msgstr "Vencido(a)" #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_form_inherit #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form #: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_search +#: model:product.category,name:hr_employee_ppe.product_category_ppe msgid "PPE" msgstr "EPI" @@ -430,6 +444,14 @@ msgstr "Hoje" msgid "True if the PPE expires" msgstr "Verdade se o EPI expirar" +#. module: hr_employee_ppe +#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.product,uom_name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_product1_product_template +#: model:product.template,uom_name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "Unit(s)" +msgstr "" + #. module: hr_employee_ppe #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__message_unread #: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__message_unread @@ -444,11 +466,24 @@ msgstr "Contador de Mensagens Não Lidas" #. module: hr_employee_ppe #: selection:hr.employee.ppe,status:0 +#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.view_employee_ppe_form msgid "Valid" msgstr "Válido" #. module: hr_employee_ppe -#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:78 +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: hr_employee_ppe +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe__website_message_ids +#: model:ir.model.fields,help:hr_employee_ppe.field_hr_employee_ppe_equipment__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: hr_employee_ppe +#: code:addons/hr_employee_ppe/models/hr_employee_ppe.py:81 #, python-format msgid "" "You must inform start date and\n" @@ -456,3 +491,11 @@ msgid "" msgstr "" "Você deve informar a data de início e\n" " data final para EPIs expirados." + +#. module: hr_employee_ppe +#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product1 +#: model:product.product,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product2 +#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product1_product_template +#: model:product.template,weight_uom_name:hr_employee_ppe.hr_employee_ppe_product2_product_template +msgid "kg" +msgstr "" From a6e618c69f51fe1e15fe233309f43d0a9870684a Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Sun, 28 Feb 2021 14:58:46 -0300 Subject: [PATCH 13/42] [IMP] hr_employee_ppe: black, isort, prettier --- hr_employee_ppe/__manifest__.py | 22 +-- hr_employee_ppe/data/hr_employee_ppe_cron.xml | 6 +- hr_employee_ppe/models/hr_employee.py | 9 +- hr_employee_ppe/models/hr_employee_ppe.py | 8 +- .../models/hr_employee_ppe_equipment.py | 18 +- .../security/hr_employee_ppe_equipment.xml | 23 ++- hr_employee_ppe/security/hr_security.xml | 13 +- hr_employee_ppe/tests/test_hr_employee_ppe.py | 7 +- .../views/hr_employee_ppe_equipment.xml | 28 ++- .../views/hr_employee_ppe_view.xml | 167 +++++++++++------- hr_employee_ppe/views/hr_employee_view.xml | 68 ++++--- 11 files changed, 205 insertions(+), 164 deletions(-) diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index 5427f3993e4..f4ecec91f7f 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -3,27 +3,23 @@ { "name": "Personal Protective Equipment (PPE) Management", - "version": "12.0.1.1.0", + "version": "13.0.1.1.0", "author": "Escodoo, Odoo Community Association (OCA)", - 'maintainers': ['marcelsavegnago', 'eduaparicio'], - 'images': ['static/description/banner.png'], + "maintainers": ["marcelsavegnago", "eduaparicio"], + "images": ["static/description/banner.png"], "website": "https://github.com/oca/hr", "license": "AGPL-3", "category": "Human Resources", - "depends": ["hr", - 'mail', - 'product'], + "depends": ["hr", "mail", "product"], "data": [ "security/hr_security.xml", - 'security/hr_employee_ppe_equipment.xml', + "security/hr_employee_ppe_equipment.xml", "security/ir.model.access.csv", "views/hr_employee_view.xml", "views/hr_employee_ppe_view.xml", - 'views/hr_employee_ppe_equipment.xml', - 'data/hr_employee_ppe_cron.xml', + "views/hr_employee_ppe_equipment.xml", + "data/hr_employee_ppe_cron.xml", ], - 'demo': [ - 'demo/hr_employee_ppe_demo.xml', - ], - 'installable': True + "demo": ["demo/hr_employee_ppe_demo.xml"], + "installable": True, } diff --git a/hr_employee_ppe/data/hr_employee_ppe_cron.xml b/hr_employee_ppe/data/hr_employee_ppe_cron.xml index f8f54d48061..70c981b7f80 100644 --- a/hr_employee_ppe/data/hr_employee_ppe_cron.xml +++ b/hr_employee_ppe/data/hr_employee_ppe_cron.xml @@ -1,9 +1,8 @@ - + - PPE's expiry date verification - + code model.cron_ppe_expiry_verification() @@ -12,5 +11,4 @@ -1 - diff --git a/hr_employee_ppe/models/hr_employee.py b/hr_employee_ppe/models/hr_employee.py index cfb850a475c..423a435160f 100644 --- a/hr_employee_ppe/models/hr_employee.py +++ b/hr_employee_ppe/models/hr_employee.py @@ -7,11 +7,6 @@ class HrEmployee(models.Model): """Adds PPE information tab on employees form view.""" - _inherit = 'hr.employee' + _inherit = "hr.employee" - ppe_ids = fields.One2many( - 'hr.employee.ppe', - 'employee_id', - 'PPEs', - help="PPEs" - ) + ppe_ids = fields.One2many("hr.employee.ppe", "employee_id", "PPEs", help="PPEs") diff --git a/hr_employee_ppe/models/hr_employee_ppe.py b/hr_employee_ppe/models/hr_employee_ppe.py index 9670975dd59..58adfceaba2 100644 --- a/hr_employee_ppe/models/hr_employee_ppe.py +++ b/hr_employee_ppe/models/hr_employee_ppe.py @@ -12,9 +12,7 @@ class HrEmployeePPE(models.Model): _description = "Personal Protective Equipments" _inherit = ["mail.thread", "mail.activity.mixin"] - name = fields.Char( - compute='_compute_name', - ) + name = fields.Char(compute="_compute_name",) ppe_id = fields.Many2one( string="Equipment", required=True, comodel_name="hr.employee.ppe.equipment", ) @@ -44,10 +42,10 @@ class HrEmployeePPE(models.Model): help="PPE Status", ) - @api.depends('ppe_id', 'employee_id') + @api.depends("ppe_id", "employee_id") def _compute_name(self): for rec in self: - if (rec.ppe_id.product_id.name and rec.employee_id.name): + if rec.ppe_id.product_id.name and rec.employee_id.name: rec.name = rec.ppe_id.product_id.name + _(" to ") + rec.employee_id.name rec.expire = rec.ppe_id.expirable diff --git a/hr_employee_ppe/models/hr_employee_ppe_equipment.py b/hr_employee_ppe/models/hr_employee_ppe_equipment.py index 9635b65c828..f0a5b1b067c 100644 --- a/hr_employee_ppe/models/hr_employee_ppe_equipment.py +++ b/hr_employee_ppe/models/hr_employee_ppe_equipment.py @@ -6,22 +6,20 @@ class HrEmployeePpeEquipment(models.Model): - _name = 'hr.employee.ppe.equipment' - _description = 'Personal Protective Equipments - Equipment List' - _inherit = ['mail.thread', 'mail.activity.mixin'] - _rec_name = 'product_id' + _name = "hr.employee.ppe.equipment" + _description = "Personal Protective Equipments - Equipment List" + _inherit = ["mail.thread", "mail.activity.mixin"] + _rec_name = "product_id" product_id = fields.Many2one( required=True, help="""Select the PPE from the product list. Please note that the PPE must be a consumable product.""", - comodel_name='product.product', - domain="[('type', '=', 'consu')]" - ) - expirable = fields.Boolean( - help='Select this option if the PPE has expiry date.' + comodel_name="product.product", + domain="[('type', '=', 'consu')]", ) + expirable = fields.Boolean(help="Select this option if the PPE has expiry date.") - @api.onchange('product_id') + @api.onchange("product_id") def update_name(self): self.name = self.product_id.name diff --git a/hr_employee_ppe/security/hr_employee_ppe_equipment.xml b/hr_employee_ppe/security/hr_employee_ppe_equipment.xml index 6d9bafb45b0..072fd6aaff4 100644 --- a/hr_employee_ppe/security/hr_employee_ppe_equipment.xml +++ b/hr_employee_ppe/security/hr_employee_ppe_equipment.xml @@ -1,18 +1,17 @@ - + - - - - hr.employee.ppe.equipment access name - + + + hr.employee.ppe.equipment access name + + - - - - - + + + + + - diff --git a/hr_employee_ppe/security/hr_security.xml b/hr_employee_ppe/security/hr_security.xml index 19615a5f7ba..b30b6cc9846 100644 --- a/hr_employee_ppe/security/hr_security.xml +++ b/hr_employee_ppe/security/hr_security.xml @@ -1,18 +1,15 @@ - + - PPE User Rule - - + + [('employee_id.user_id','=',user.id)] - PPE Officer - - + + [(1,'=',1)] - diff --git a/hr_employee_ppe/tests/test_hr_employee_ppe.py b/hr_employee_ppe/tests/test_hr_employee_ppe.py index c83e0aeecf9..dccf20bb170 100644 --- a/hr_employee_ppe/tests/test_hr_employee_ppe.py +++ b/hr_employee_ppe/tests/test_hr_employee_ppe.py @@ -21,7 +21,7 @@ def test_hr_employee_ppe(self): self.hr_employee_ppe1.status = "valid" self.env["hr.employee.ppe"].cron_ppe_expiry_verification() - self.assertEqual(self.hr_employee_ppe1.status, 'expired') + self.assertEqual(self.hr_employee_ppe1.status, "expired") self.hr_employee_ppe1.end_date = (datetime.now() + timedelta(days=1)).strftime( "%Y-%m-%d" @@ -33,6 +33,7 @@ def test_hr_employee_ppe(self): self.assertEqual(self.hr_employee_ppe2.status, "valid") self.hr_employee_ppe1._compute_name() - self.assertEqual(self.hr_employee_ppe1.name, - "Mask for COVID-19 to Abigail Peterson") + self.assertEqual( + self.hr_employee_ppe1.name, "Mask for COVID-19 to Abigail Peterson" + ) self.assertEqual(self.hr_employee_ppe1.expire, True) diff --git a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml index 04c2604807f..cc9801c70c0 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_equipment.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_equipment.xml @@ -1,9 +1,7 @@ - + - - hr.employee.ppe.equipment.form (in hr_employee_ppe) hr.employee.ppe.equipment @@ -12,15 +10,14 @@ - - + + -
    +
    - hr.employee.ppe.equipment.search (in hr_employee_ppe) hr.employee.ppe.equipment @@ -30,31 +27,28 @@ - hr.employee.ppe.equipment.tree (in hr_employee_ppe) hr.employee.ppe.equipment - - + + - - PPE - Equipment + PPE - Equipment + hr.employee.ppe.equipment tree,form [] {} - Equipments - - - + + + - diff --git a/hr_employee_ppe/views/hr_employee_ppe_view.xml b/hr_employee_ppe/views/hr_employee_ppe_view.xml index d1f0677e3db..49117be17b8 100644 --- a/hr_employee_ppe/views/hr_employee_ppe_view.xml +++ b/hr_employee_ppe/views/hr_employee_ppe_view.xml @@ -1,6 +1,5 @@ - + - hr.employee.ppe.tree @@ -8,17 +7,20 @@ tree - - - - - - - + + + + + + + - hr.employee.ppe.form @@ -28,79 +30,108 @@
    - - -
    Expired
    -
    Valid
    + + +
    Expired
    +
    Valid
    - - + + - - - + + + - + - - - + + +
    - - - + + +
    - hr.employee.ppe.kanban hr.employee.ppe - - - - - - + + + + + +
    -
    +
    - + + + + + -
    - + + +
    - +
    - +
    - +
    @@ -111,38 +142,52 @@ - hr.employee.ppe.search hr.employee.ppe - - - - - + + + + + - - - - + + + + - Personal Protective Equipments (PPEs) hr.employee.ppe form tree,form,kanban - - - + diff --git a/hr_employee_ppe/views/hr_employee_view.xml b/hr_employee_ppe/views/hr_employee_view.xml index 85eea1dd3f8..5ae670a79cd 100644 --- a/hr_employee_ppe/views/hr_employee_view.xml +++ b/hr_employee_ppe/views/hr_employee_view.xml @@ -1,47 +1,64 @@ - + - hr.employee.ppe.employee.form hr.employee - + - + - - - - - - - + + + + + + +
    - +
    - - + + - - - + + + - + - - - + + +
    @@ -51,8 +68,11 @@
    - - - +
    From fbf8da0aaf25ec0cf641d55ef93fa16987a20639 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Sun, 28 Feb 2021 15:00:23 -0300 Subject: [PATCH 14/42] [MIG] hr_employee_ppe: Migration to 13.0 --- hr_employee_ppe/README.rst | 10 +++--- hr_employee_ppe/__manifest__.py | 4 +-- hr_employee_ppe/i18n/hr_employee_ppe.pot | 2 +- hr_employee_ppe/i18n/pt_BR.po | 2 +- hr_employee_ppe/static/description/index.html | 36 ++++--------------- .../views/hr_employee_ppe_view.xml | 1 - 6 files changed, 16 insertions(+), 39 deletions(-) diff --git a/hr_employee_ppe/README.rst b/hr_employee_ppe/README.rst index c6ee9f2a103..93986d9f0de 100644 --- a/hr_employee_ppe/README.rst +++ b/hr_employee_ppe/README.rst @@ -14,13 +14,13 @@ Personal Protective Equipment (PPE) Management :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github - :target: https://github.com/OCA/hr/tree/12.0/hr_employee_ppe + :target: https://github.com/OCA/hr/tree/13.0/hr_employee_ppe :alt: OCA/hr .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/hr-12-0/hr-12-0-hr_employee_ppe + :target: https://translation.odoo-community.org/projects/hr-13-0/hr-13-0-hr_employee_ppe :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/116/12.0 + :target: https://runbot.odoo-community.org/runbot/116/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -56,7 +56,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -107,6 +107,6 @@ Current `maintainers `__: |maintainer-marcelsavegnago| |maintainer-eduaparicio| -This module is part of the `OCA/hr `_ project on GitHub. +This module is part of the `OCA/hr `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_employee_ppe/__manifest__.py b/hr_employee_ppe/__manifest__.py index f4ecec91f7f..e765b44b59c 100644 --- a/hr_employee_ppe/__manifest__.py +++ b/hr_employee_ppe/__manifest__.py @@ -3,11 +3,11 @@ { "name": "Personal Protective Equipment (PPE) Management", - "version": "13.0.1.1.0", + "version": "13.0.1.0.0", "author": "Escodoo, Odoo Community Association (OCA)", "maintainers": ["marcelsavegnago", "eduaparicio"], "images": ["static/description/banner.png"], - "website": "https://github.com/oca/hr", + "website": "https://github.com/OCA/hr", "license": "AGPL-3", "category": "Human Resources", "depends": ["hr", "mail", "product"], diff --git a/hr_employee_ppe/i18n/hr_employee_ppe.pot b/hr_employee_ppe/i18n/hr_employee_ppe.pot index 5f8de9a5e94..c29a54df0c6 100644 --- a/hr_employee_ppe/i18n/hr_employee_ppe.pot +++ b/hr_employee_ppe/i18n/hr_employee_ppe.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/hr_employee_ppe/i18n/pt_BR.po b/hr_employee_ppe/i18n/pt_BR.po index 91b829c2a66..6f8536964f2 100644 --- a/hr_employee_ppe/i18n/pt_BR.po +++ b/hr_employee_ppe/i18n/pt_BR.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-20 17:47+0000\n" "PO-Revision-Date: 2021-02-20 14:48-0300\n" diff --git a/hr_employee_ppe/static/description/index.html b/hr_employee_ppe/static/description/index.html index 544b933bce8..fea06e06a0d 100644 --- a/hr_employee_ppe/static/description/index.html +++ b/hr_employee_ppe/static/description/index.html @@ -3,13 +3,13 @@ - + Personal Protective Equipment (PPE) Management