Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Personal Protective Equipment (PPE) Management
Odoo addon: hr_employee_ppe
## Installation
```bash
pip install odoo-bringout-oca-hr-hr_employee_ppe
```
## Dependencies
This addon depends on:
- hr_personal_equipment_request
## Manifest Information
- **Name**: Personal Protective Equipment (PPE) Management
- **Version**: 16.0.1.0.0
- **Category**: Human Resources
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/hr](https://github.com/OCA/hr) branch 16.0, addon `hr_employee_ppe`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Hr_employee_ppe Module - hr_employee_ppe
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for hr_employee_ppe. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [hr_personal_equipment_request](../../odoo-bringout-oca-hr-hr_personal_equipment_request)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon hr_employee_ppe or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-hr-hr_employee_ppe"
# or
uv pip install odoo-bringout-oca-hr-hr_employee_ppe"
```

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in hr_employee_ppe.
```mermaid
classDiagram
class hr_personal_equipment
class product_template
class hr_personal_equipment_request
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: hr_employee_ppe. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon hr_employee_ppe
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,8 @@
# Security
This module does not define custom security rules or access controls beyond Odoo defaults.
Default Odoo security applies:
- Base user access through standard groups
- Model access inherited from dependencies
- No custom row-level security rules

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon hr_employee_ppe
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,107 @@
==============================================
Personal Protective Equipment (PPE) Management
==============================================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:9bcb307c3317e98f10b653046c507389ca2294b2d66c62f712f97d2ed4e26d32
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/16.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-16-0/hr-16-0-hr_employee_ppe
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/hr&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to manage allocation of PPE to your employees.
A product can be marked as ppe and additional information as duration and indications can also be added.
If ppe products are selected in a equipment request, a button to print a receipt of PPE will appear.
In addition, a chron will check every day if an allocation has been expired.
**Table of contents**
.. contents::
:local:
Installation
============
To install this module, you need to have HR module installed or it will be requested during installation.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/hr/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/hr/issues/new?body=module:%20hr_employee_ppe%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Escodoo
Contributors
~~~~~~~~~~~~
* Eduardo Aparicio <eduardo.aparicio@escodoo.com.br>
* Marcel Savegnago <marcel.savegnago@escodoo.com.br>
* Joao Carassato <joao.carassato@escodoo.com.br>
* Fernando Colus <fernando.colus@escodoo.com.br>
* Alba Riera <alba.riera@creublanca.es>
Other credits
~~~~~~~~~~~~~
The development of this module has been financially supported by:
* Escodoo - `https://www.escodoo.com.br <https://www.escodoo.com.br>`_
* Creu Blanca - `https://www.creublanca.es <https://www.creublanca.es>`_
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-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 <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-marcelsavegnago| |maintainer-eduaparicio|
This module is part of the `OCA/hr <https://github.com/OCA/hr/tree/16.0/hr_employee_ppe>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1 @@
from . import models

View file

@ -0,0 +1,23 @@
# Copyright 2020 Escodoo
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Personal Protective Equipment (PPE) Management",
"version": "16.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",
"depends": ["hr_personal_equipment_request"],
"data": [
"views/product_template.xml",
"views/hr_personal_equipment.xml",
"views/hr_personal_equipment_request.xml",
"data/hr_employee_ppe_cron.xml",
"reports/hr_employee_ppe_report_template.xml",
"reports/hr_employee_ppe_report.xml",
],
"installable": True,
}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding='UTF-8' ?>
<odoo noupdate="1">
<record model="ir.cron" id="hr_employee_ppe_cron">
<field name="name">PPE's expiry date verification</field>
<field name="model_id" ref="model_hr_personal_equipment" />
<field name="state">code</field>
<field name="code">model.cron_ppe_expiry_verification()</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
</record>
</odoo>

View file

@ -0,0 +1,244 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_employee_ppe
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr "<span>Datum:</span>"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr "<span>Potpis:</span>"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr "Dodaje informacije o osobnoj opremi i raspodijeli"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr "Informacije o certifikaciji"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr "Broj certifikata"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr "Sadrži ZOO"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr "Sadrži ZOO"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr "Dani"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr "ZOO radnika"
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr "Datum završetka ne može biti prije datuma početka."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr "Ističe"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr "ZOO koja ističe"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr "ZOO ističe"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr "Sati"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to protect against.\n"
" I acknowledge that my failure to do so may subject me to disciplinary action."
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or damaged, I will report the same to my employer promptly for replacement."
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr "Indikacije"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr "Jedinica intervala"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr "Je ZOO"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr "Je ZOO"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr "Izdao"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr "Minute"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr "Mjeseci"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr "Trajanje ZOO"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr "Indikacije ZOO"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr "Tip intervala ZOO"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
msgstr "Trajanje ZOO"
#. 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
msgid "PPE's expiry date verification"
msgstr "Provjera datuma isteka ZOO"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr "Ispiši priznanicu ZOO"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr "Artikal"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr "Količina"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr "Priznanica za sredstva za osobnu zaštitu"
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr "Priznanica za sredstva za osobnu zaštitu"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Select this option if the PPE has expiry date."
msgstr "Izaberite ovu opciju ako ZOO ima datum isteka."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__indications
msgid "Situations in which the employee should use this equipment."
msgstr "Situacije u kojima radnik treba koristiti ovu opremu."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr "Ovaj model omogućava kreiranje zahtjeva za osobnu opremu"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr "Tačno ako ZOO ističe"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr "Sedmice"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr "omogućava"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr "sljedećim sredstvima za osobnu zaštitu (ZOO):"

View file

@ -0,0 +1,249 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_employee_ppe
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr ""
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to "
"protect against.\n"
" I acknowledge that my failure to do so may "
"subject me to disciplinary action."
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I "
"further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or "
"damaged, I will report the same to my employer promptly for replacement."
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
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
msgid "PPE's expiry date verification"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
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_personal_equipment__indications
msgid "Situations in which the employee should use this equipment."
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr ""

View file

@ -0,0 +1,273 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_employee_ppe
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-02-18 21:33+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr "<span>Fecha:</span>"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr "<span>Firma:</span>"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr "Agrega información y asignación del equipo individual"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr "Información de certificación"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr "Número de certificación"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr "Contiene EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr "Contiene EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr "Días"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr "Empleado EPI"
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr "La fecha de finalización no puede ser anterior a la fecha de inicio."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr "Vencido"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr "EPI vencido"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr "EPI vencido"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr "Horas"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to "
"protect against.\n"
" I acknowledge that my failure to do so may "
"subject me to disciplinary action."
msgstr ""
"Acepto llevar el equipo cuando me enfrente a la exposición contra la que "
"está diseñado para protegerme.\n"
" Reconozco que mi incumplimiento puede ser objeto "
"de medidas disciplinarias."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I "
"further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or "
"damaged, I will report the same to my employer promptly for replacement."
msgstr ""
"Yo, el abajo firmante, acepto el EPI que mi empleador me proporciona. "
"Reconozco además que he sido instruido\n"
" sobre cómo llevarlo y mantenerlo. En caso de "
"pérdida o deterioro, informaré inmediatamente a mi empleador para su "
"sustitución."
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr "Indicaciones"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr "Unidad de intervalo"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr "Es EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr "Es EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr "Usado por"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr "Minutos"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr "Meses"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr "Duración del EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr "Indicaciones del EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr "Tipo de intervalo de EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
msgstr "Duración del 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
msgid "PPE's expiry date verification"
msgstr "Verificación de la fecha de caducidad del EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr "Imprimir nota del EPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr "Producto"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr "Cantidad"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr "Recibo del Equipo de protección personal"
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr "Recibo del Equipo de protección personal"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Select this option if the PPE has expiry date."
msgstr "Seleccione esta opción si el EPI tiene fecha de caducidad."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__indications
msgid "Situations in which the employee should use this equipment."
msgstr "Situaciones en las que el empleado debe utilizar este equipo."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
"Situaciones en las que el empleado debe utilizar este equipo. Solo para EPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr "Este modelo permite crear una solicitud de equipo personal"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr "Verdadero si el EPI caduca"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr "Semanas"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr "está proporcionando"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr "con los siguientes Equipos de Protección Individual (EPI):"
#~ msgid "Display Name"
#~ msgstr "Nombre mostrado"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Última modificación el"
#~ msgid "Product Template"
#~ msgstr "Plantilla de producto"

View file

@ -0,0 +1,244 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_employee_ppe
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr ""
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to protect against.\n"
" I acknowledge that my failure to do so may subject me to disciplinary action."
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or damaged, I will report the same to my employer promptly for replacement."
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
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
msgid "PPE's expiry date verification"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
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_personal_equipment__indications
msgid "Situations in which the employee should use this equipment."
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr ""
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr ""
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr ""

View file

@ -0,0 +1,274 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_employee_ppe
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-05-31 16:09+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr "<span>Data:</span>"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr "<span>Firma:</span>"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr "Aggiunge informazioni e assegnazione su attrezzatura individuale"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr "Informazione certificazione"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr "Numero certificazione"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr "Contiene DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr "Contiene DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr "Giorni"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr "DPI dipendente"
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr "La data di fine non può precedere quella di inizio."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr "Con scadenza"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr "DPI con scadenza"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr "Scadenza DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr "Ore"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to "
"protect against.\n"
" I acknowledge that my failure to do so may "
"subject me to disciplinary action."
msgstr ""
"Concordo di indossare il dispositivo quando sono esposto ad un rischio "
"contro il quale è progettato.\n"
" Riconosco che non utilizzarlo mi farà incorrere "
"in un'azione disciplinare."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I "
"further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or "
"damaged, I will report the same to my employer promptly for replacement."
msgstr ""
"Io sottoscritto accetto il DPI che il mio datore di lavoro mi sta fornendo. "
"Riconosco che sono stato istruito\n"
" su come indossarlo e manutenerlo. Se verrà perso "
"o danneggiato, informerò prontamente il mio datore di lavoro per la "
"sostituzione."
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr "Indicazioni"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr "Unità intervallo"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr "È un DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr "È un DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr "Distribuito da"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr "Minuti"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr "Mesi"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr "Durata DPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr "Indicazioni DPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr "Tipo intervallo DPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
msgstr "Durata DPI"
#. 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
msgid "PPE's expiry date verification"
msgstr "Verifica data scadenza DPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr "Stampa ricevuta DPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr "Prodotto"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr "Quantità"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr "Ricevuta dispositivo di protezione individuale"
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr "Ricevuta dispositivo di protezione individuale"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Select this option if the PPE has expiry date."
msgstr "Selezionare questa opzione se il DPI ha una data di scadenza."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__indications
msgid "Situations in which the employee should use this equipment."
msgstr "Casi in cui il dipendente deve utilizzare questo dispositivo."
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
"Casi in cui il dipendente deve utilizzare questo dispositivo. solo per DPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr ""
"Questo modello permette di creare una richiesta attrezzatura individuale"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr "Vero se il DPI scade"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr "Settimane"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr "sta fornendo"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr "con il seguente dispositivo di protezione individuale (DPI):"
#~ msgid "Display Name"
#~ msgstr "Nome visualizzato"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Ultima modifica il"
#~ msgid "Product Template"
#~ msgstr "Modello prodotto"

View file

@ -0,0 +1,474 @@
# 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: 2023-09-03 13:41+0000\n"
"Last-Translator: Douglas Custódio <douglascstd@yahoo.com>\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: Weblate 4.17\n"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Date:</span>"
msgstr "<span>Data:</span>"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "<span>Signature:</span>"
msgstr "<span>Assinatura:</span>"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment
msgid "Adds personal equipment information and allocation"
msgstr "Adiciona informações e alocação de equipamentos pessoais"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
msgid "Certification Information"
msgstr "Informações de certificação"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__certification
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__certification
msgid "Certification Number"
msgstr "Número de Certificação"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Contains PPE"
msgstr "Contém EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment_request__contains_ppe
msgid "Contains Ppe"
msgstr "Contém Epi"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__days
msgid "Days"
msgstr "Dias"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Employee PPE"
msgstr "EPI de Funcionário"
#. module: hr_employee_ppe
#. odoo-python
#: code:addons/hr_employee_ppe/models/hr_personal_equipment.py:0
#, python-format
msgid "End date cannot occur earlier than start date."
msgstr "Data final não pode ocorrer antes da data de início."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_tree_view
msgid "Expirable"
msgstr "Expirado"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__expirable_ppe
msgid "Expirable Ppe"
msgstr "EPI Expirável"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "Expire Ppe"
msgstr "Expirar EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__hours
msgid "Hours"
msgstr "Horas"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I agree to wear the equipment when facing the exposure it is designed to "
"protect against.\n"
" I acknowledge that my failure to do so may "
"subject me to disciplinary action."
msgstr ""
"Concordo em usar o equipamento quando enfrentar a exposição contra a qual "
"foi projetado para proteger.\n"
" Reconheço que minha falha em fazê-lo pode me "
"sujeitar a ações disciplinares."
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid ""
"I, the undersigned accept the PPE that my employer is providing to me. I "
"further acknowledge that I have been instructed\n"
" in how to wear and maintain it. If it is lost or "
"damaged, I will report the same to my employer promptly for replacement."
msgstr ""
"Eu, abaixo assinado, aceito o EPI que meu empregador me fornece. Reconheço "
"ainda que fui instruído\n"
" em como usá-lo e mantê-lo. Se for perdido ou "
"danificado, informarei o mesmo ao meu empregador imediatamente para "
"substituição."
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__indications
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Indications"
msgstr "Indicações"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_interval_type
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_interval_type
msgid "Interval Unit"
msgstr "Unidade de Intervalo"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "Is PPE"
msgstr "É EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__is_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__is_ppe
msgid "Is Ppe"
msgstr "É Epi"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_hr_personal_equipment__issued_by
msgid "Issued By"
msgstr "Publicado Por"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__minutes
msgid "Minutes"
msgstr "Minutos"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__months
msgid "Months"
msgstr "Meses"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Duration"
msgstr "Duração do EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_form_view
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Indications"
msgstr "Indicações do EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.product_template_form_view
msgid "PPE Interval Type"
msgstr "Tipo de Intervalo do EPI"
#. module: hr_employee_ppe
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_product__ppe_duration
#: model:ir.model.fields,field_description:hr_employee_ppe.field_product_template__ppe_duration
msgid "PPE duration"
msgstr "Duraçã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
msgid "PPE's expiry date verification"
msgstr "Verificação da data de validade do EPI"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_personal_equipment_request_form_view
msgid "Print Receipt of PPE"
msgstr "Imprimir Recibo de EPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_product_template
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Product"
msgstr "Produto"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Quantity"
msgstr "Quantidade"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "Receipt of Personal Protection Equipment"
msgstr "Recebimento de Equipamentos de Proteção Individual"
#. module: hr_employee_ppe
#: model:ir.actions.report,name:hr_employee_ppe.hr_employee_ppe_report
msgid "Receipt of Personal protection Equipment"
msgstr "Recebimento de Equipamento de Proteção Individual"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_product__expirable_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__expirable_ppe
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_personal_equipment__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,help:hr_employee_ppe.field_product_product__indications
#: model:ir.model.fields,help:hr_employee_ppe.field_product_template__indications
msgid ""
"Situations in which the employee should use this equipment. Only for ppe"
msgstr ""
"Situações em que o funcionário deverá utilizar este equipamento. Somente "
"para EPI"
#. module: hr_employee_ppe
#: model:ir.model,name:hr_employee_ppe.model_hr_personal_equipment_request
msgid "This model allows to create a personal equipment request"
msgstr "Este modelo permite criar uma requisição de equipamento pessoal"
#. module: hr_employee_ppe
#: model:ir.model.fields,help:hr_employee_ppe.field_hr_personal_equipment__expire_ppe
msgid "True if the PPE expires"
msgstr "Verdadeiro se o EPI expira"
#. module: hr_employee_ppe
#: model:ir.model.fields.selection,name:hr_employee_ppe.selection__product_template__ppe_interval_type__weeks
msgid "Weeks"
msgstr "Semanas"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "is providing"
msgstr "está fornecendo"
#. module: hr_employee_ppe
#: model_terms:ir.ui.view,arch_db:hr_employee_ppe.hr_employee_ppe_report_template
msgid "with the following Personal Protection Equipment (PPE):"
msgstr "com o seguinte Equipamento de Proteção Individual (EPI):"
#~ msgid "Display Name"
#~ msgstr "Nome exibido"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Última modificação em"
#~ msgid "Product Template"
#~ msgstr "Modelo Produto"
#~ msgid " to "
#~ msgstr " para "
#~ msgid "# Certificate"
#~ msgstr "# Certificado"
#~ msgid "Action Needed"
#~ msgstr "Ação Necessária"
#~ msgid "Activities"
#~ msgstr "Atividades"
#~ msgid "Activity State"
#~ msgstr "Estado de Atividade"
#~ msgid "Attachment Count"
#~ msgstr "Contagem de Anexos"
#~ msgid "Certification Authority"
#~ msgstr "Autoridade de Certificação"
#~ msgid "Created by"
#~ msgstr "Criado por"
#~ msgid "Created on"
#~ msgstr "Criado em"
#~ msgid "Description"
#~ msgstr "Descrição"
#~ msgid "Employee"
#~ msgstr "Funcionário"
#~ msgid "End Date"
#~ msgstr "Data Final"
#~ 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."
#~ msgid "Equipment"
#~ msgstr "Equipamento"
#~ msgid "Equipments"
#~ msgstr "Equipamentos"
#~ msgid "Expire"
#~ msgstr "Expirar"
#~ msgid "Expired"
#~ msgstr "Expirado"
#~ msgid "Followers"
#~ msgstr "Seguidores"
#~ msgid "Followers (Channels)"
#~ msgstr "Seguidores (Canais)"
#~ msgid "Followers (Partners)"
#~ msgstr "Seguidores (Parceiros)"
#~ msgid "Group By"
#~ msgstr "Agrupar por"
#~ msgid "If checked new messages require your attention."
#~ msgstr "Se marcado, novas mensagens solicitarão sua atenção."
#~ msgid "If checked, new messages require your attention."
#~ msgstr "Se marcado novas mensagens solicitarão sua atenção."
#~ msgid "If checked, some messages have a delivery error."
#~ msgstr "Se marcado, algumas mensagens tem erro de entrega."
#~ msgid "Is Follower"
#~ msgstr "É um seguidor"
#~ msgid "Last Updated by"
#~ msgstr "Última atualização por"
#~ msgid "Last Updated on"
#~ msgstr "Atualizado pela última vez em"
#~ msgid "Main Attachment"
#~ msgstr "Anexo Principal"
#~ msgid "Message Delivery error"
#~ msgstr "Erro de entrega de Mensagem"
#~ msgid "Messages"
#~ msgstr "Mensagens"
#~ msgid "Name"
#~ msgstr "Nome"
#~ msgid "Next Activity Deadline"
#~ msgstr "Prazo final para Próxima Atividade"
#~ msgid "Next Activity Summary"
#~ msgstr "Próximo Sumário de Atividade"
#~ msgid "Next Activity Type"
#~ msgstr "Tipo da Próxima Atividade"
#~ msgid "Number of Actions"
#~ msgstr "Número de ações"
#~ msgid "Number of error"
#~ msgstr "Número do erro"
#~ msgid "Number of messages which requires an action"
#~ msgstr "Número de mensagens que requer uma ação"
#~ msgid "Number of messages with delivery error"
#~ msgstr "Número de mensagens com erro de entrega"
#~ msgid "Number of unread messages"
#~ msgstr "Quantidade de mensagens não lidas"
#~ msgid "Overdue"
#~ msgstr "Vencido(a)"
#~ msgid "PPE"
#~ msgstr "EPI"
#~ msgid "PPE - Equipment"
#~ msgstr "EPI - Equipamento"
#~ msgid "PPE Allocation"
#~ msgstr "Alocação de EPI"
#~ msgid "PPE Status"
#~ msgstr "Situação do EPI"
#~ msgid "PPEs"
#~ msgstr "EPIs"
#~ msgid "Personal Protective Equipment (PPE)"
#~ msgstr "Equipamento de proteção individual (EPI)"
#~ msgid "Personal Protective Equipments"
#~ msgstr "Equipamentos de Proteção Individual"
#~ msgid "Personal Protective Equipments (PPEs)"
#~ msgstr "Equipamentos de Proteção Individual (EPIs)"
#~ msgid "Personal Protective Equipments - Equipment List"
#~ msgstr "Equipamentos de Proteção Individual - Lista de Equipamentos"
#~ msgid "Planned"
#~ msgstr "Planejado"
#~ msgid "Responsible User"
#~ msgstr "Usuário Responsável"
#~ msgid "Search PPEs"
#~ msgstr "Pesquisar EPIs"
#~ 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."
#~ msgid "Start Date"
#~ msgstr "Data de Início"
#~ msgid "Status"
#~ msgstr "Situação"
#~ 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."
#~ msgid "Today"
#~ msgstr "Hoje"
#~ msgid "Unread Messages"
#~ msgstr "Mensagens não lidas"
#~ msgid "Unread Messages Counter"
#~ msgstr "Contador de Mensagens Não Lidas"
#~ msgid "Valid"
#~ msgstr "Válido"
#~ 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."

View file

@ -0,0 +1,3 @@
from . import hr_personal_equipment
from . import product_template
from . import hr_personal_equipment_request

View file

@ -0,0 +1,76 @@
# Copyright 2020 Escodoo
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from datetime import date
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
from odoo.addons.base.models.ir_cron import _intervalTypes
class HrPersonalEquipment(models.Model):
_name = "hr.personal.equipment"
_inherit = ["hr.personal.equipment"]
is_ppe = fields.Boolean()
indications = fields.Text(
help="Situations in which the employee should use this equipment.",
)
expire_ppe = fields.Boolean(help="True if the PPE expires")
certification = fields.Char(
string="Certification Number", help="Certification Number"
)
issued_by = fields.Many2one(comodel_name="res.users")
def _accept_request_vals(self):
res = super()._accept_request_vals()
res["issued_by"] = self.env.user.id
return res
@api.onchange("product_id")
def _compute_fields(self):
for rec in self:
if rec.product_id.is_ppe:
rec.is_ppe = rec.product_id.is_ppe
if rec.product_id.expirable_ppe:
rec.expire_ppe = rec.product_id.expirable_ppe
if rec.product_id.indications:
rec.indications = rec.product_id.indications
def _validate_allocation_vals(self):
res = super()._validate_allocation_vals()
if self.start_date:
start_date = self.start_date
else:
start_date = date.today()
if not self.expiry_date and self.product_id.expirable_ppe:
res["expiry_date"] = start_date + _intervalTypes[
self.product_id.ppe_interval_type
](self.product_id.ppe_duration)
return res
def validate_allocation(self):
res = super().validate_allocation()
self._check_dates()
return res
@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([("expiry_date", "<", date_ref)])
ppes_to_check_expiry = self.search(domain)
for record in ppes_to_check_expiry:
record.state = "expired"
def _check_dates(self):
for record in self:
if record.expire_ppe:
start_date = record.start_date if record.start_date else date.today()
if record.expiry_date < start_date:
raise ValidationError(
_("End date cannot occur earlier than start date.")
)

View file

@ -0,0 +1,26 @@
# Copyright 2021 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class HrPersonalEquipmentRequest(models.Model):
_inherit = "hr.personal.equipment.request"
contains_ppe = fields.Boolean(compute="_compute_contains_ppe")
def _compute_contains_ppe(self):
for rec in self:
contains_ppe = False
for line in rec.line_ids:
if line.is_ppe:
contains_ppe = True
break
rec.contains_ppe = contains_ppe
def action_view_ppe_report(self):
report = self.env["ir.actions.report"]._get_report_from_name(
"hr_employee_ppe.hr_employee_ppe_report_template"
)
return report.report_action(self)

View file

@ -0,0 +1,29 @@
# Copyright 2020 Escodoo
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ProductTemplate(models.Model):
_name = "product.template"
_inherit = ["product.template"]
is_ppe = fields.Boolean(default=False)
indications = fields.Text(
help="Situations in which the employee should use this equipment. Only for ppe",
)
expirable_ppe = fields.Boolean(
help="Select this option if the PPE has expiry date.", default=False
)
ppe_duration = fields.Integer(string="PPE duration")
ppe_interval_type = fields.Selection(
[
("minutes", "Minutes"),
("hours", "Hours"),
("days", "Days"),
("weeks", "Weeks"),
("months", "Months"),
],
string="Interval Unit",
)

View file

@ -0,0 +1,5 @@
* Eduardo Aparicio <eduardo.aparicio@escodoo.com.br>
* Marcel Savegnago <marcel.savegnago@escodoo.com.br>
* Joao Carassato <joao.carassato@escodoo.com.br>
* Fernando Colus <fernando.colus@escodoo.com.br>
* Alba Riera <alba.riera@creublanca.es>

View file

@ -0,0 +1,4 @@
The development of this module has been financially supported by:
* Escodoo - `https://www.escodoo.com.br <https://www.escodoo.com.br>`_
* Creu Blanca - `https://www.creublanca.es <https://www.creublanca.es>`_

View file

@ -0,0 +1,4 @@
This module allows you to manage allocation of PPE to your employees.
A product can be marked as ppe and additional information as duration and indications can also be added.
If ppe products are selected in a equipment request, a button to print a receipt of PPE will appear.
In addition, a chron will check every day if an allocation has been expired.

View file

@ -0,0 +1 @@
To install this module, you need to have HR module installed or it will be requested during installation.

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="hr_employee_ppe_report" model="ir.actions.report">
<field name="name">Receipt of Personal protection Equipment</field>
<field name="model">hr.personal.equipment.request</field>
<field name="report_type">qweb-pdf</field>
<field
name="report_name"
>hr_employee_ppe.hr_employee_ppe_report_template</field>
<field
name="report_file"
>hr_employee_ppe.hr_employee_ppe_report_template</field>
<field name="binding_model_id" eval="False" />
<field name="binding_type">report</field>
</record>
</odoo>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template id="hr_employee_ppe_report_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc" t-if="doc.contains_ppe">
<t t-call="web.external_layout">
<div class="page">
<h3
class="text-center"
>Receipt of Personal Protection Equipment</h3>
<br />
<div name="employee_name">
<span
t-field="doc.employee_id.company_id.name"
/> is providing <u>
<span t-field="doc.employee_id.name" />
</u> with the following Personal Protection Equipment (PPE):
</div>
<br />
<table class="table table-condensed">
<tbody>
<div>
<t>
<tr>
<th>
Product
</th>
<th>
Quantity
</th>
<th>
Indications
</th>
</tr>
<tr
t-foreach="doc.line_ids"
t-as="line"
t-if="line.is_ppe"
>
<td>
<t t-out="line.product_id.name" />
</td>
<td>
<t t-out="line.quantity" />
</td>
<td>
<t t-out="line.indications" />
</td>
</tr>
</t>
</div>
</tbody>
</table>
<p>
I, the undersigned accept the PPE that my employer is providing to me. I further acknowledge that I have been instructed
in how to wear and maintain it. If it is lost or damaged, I will report the same to my employer promptly for replacement.
</p>
<p>
I agree to wear the equipment when facing the exposure it is designed to protect against.
I acknowledge that my failure to do so may subject me to disciplinary action.
</p>
<div class="row">
<div class="col-4 text-left">
<span>Signature:</span>
</div>
<div class="col-4 text-right">
<span>Date:</span>
</div>
</div>
</div>
</t>
</t>
</t>
</template>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,446 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Personal Protective Equipment (PPE) Management</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="personal-protective-equipment-ppe-management">
<h1 class="title">Personal Protective Equipment (PPE) Management</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:9bcb307c3317e98f10b653046c507389ca2294b2d66c62f712f97d2ed4e26d32
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/hr/tree/16.0/hr_employee_ppe"><img alt="OCA/hr" src="https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/hr-16-0/hr-16-0-hr_employee_ppe"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/hr&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to manage allocation of PPE to your employees.
A product can be marked as ppe and additional information as duration and indications can also be added.
If ppe products are selected in a equipment request, a button to print a receipt of PPE will appear.
In addition, a chron will check every day if an allocation has been expired.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#installation" id="toc-entry-1">Installation</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-6">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="installation">
<h1><a class="toc-backref" href="#toc-entry-1">Installation</a></h1>
<p>To install this module, you need to have HR module installed or it will be requested during installation.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/hr/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/hr/issues/new?body=module:%20hr_employee_ppe%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Escodoo</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Eduardo Aparicio &lt;<a class="reference external" href="mailto:eduardo.aparicio&#64;escodoo.com.br">eduardo.aparicio&#64;escodoo.com.br</a>&gt;</li>
<li>Marcel Savegnago &lt;<a class="reference external" href="mailto:marcel.savegnago&#64;escodoo.com.br">marcel.savegnago&#64;escodoo.com.br</a>&gt;</li>
<li>Joao Carassato &lt;<a class="reference external" href="mailto:joao.carassato&#64;escodoo.com.br">joao.carassato&#64;escodoo.com.br</a>&gt;</li>
<li>Fernando Colus &lt;<a class="reference external" href="mailto:fernando.colus&#64;escodoo.com.br">fernando.colus&#64;escodoo.com.br</a>&gt;</li>
<li>Alba Riera &lt;<a class="reference external" href="mailto:alba.riera&#64;creublanca.es">alba.riera&#64;creublanca.es</a>&gt;</li>
</ul>
</div>
<div class="section" id="other-credits">
<h2><a class="toc-backref" href="#toc-entry-6">Other credits</a></h2>
<p>The development of this module has been financially supported by:</p>
<ul class="simple">
<li>Escodoo - <a class="reference external" href="https://www.escodoo.com.br">https://www.escodoo.com.br</a></li>
<li>Creu Blanca - <a class="reference external" href="https://www.creublanca.es">https://www.creublanca.es</a></li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/marcelsavegnago"><img alt="marcelsavegnago" src="https://github.com/marcelsavegnago.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/eduaparicio"><img alt="eduaparicio" src="https://github.com/eduaparicio.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/hr/tree/16.0/hr_employee_ppe">OCA/hr</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_hr_employee_ppe

View file

@ -0,0 +1,203 @@
# Copyright 2020 - TODAY, Marcel Savegnago - Escodoo
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl
from datetime import date, datetime, timedelta
from odoo.exceptions import ValidationError
from odoo.tests import TransactionCase
from odoo.addons.base.models.ir_cron import _intervalTypes
class TestHREmployeePPE(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_employee_ppe_expirable = cls.env["product.template"].create(
{
"name": "Product Test Employee PPE",
"is_personal_equipment": True,
"is_ppe": True,
"indications": "Test indications",
"expirable_ppe": True,
"ppe_interval_type": "days",
"ppe_duration": 3,
}
)
cls.product_employee_ppe_no_expirable = cls.env["product.template"].create(
{
"name": "Product Test Employee No PPE",
"is_personal_equipment": True,
"is_ppe": True,
"indications": "Test indications",
"expirable_ppe": False,
}
)
cls.user = (
cls.env["res.users"]
.sudo()
.create(
{
"name": "Test User",
"login": "user@test.com",
"email": "user@test.com",
"groups_id": [
(4, cls.env.ref("base.group_user").id),
(4, cls.env.ref("hr.group_hr_user").id),
],
}
)
)
cls.employee = cls.env["hr.employee"].create(
{"name": "Employee Test", "user_id": cls.user.id}
)
product_exp = cls.product_employee_ppe_expirable.product_variant_id
product_no_exp = cls.product_employee_ppe_no_expirable.product_variant_id
lines = [
{
"name": "Personal Equipment PPE Expirable",
"product_id": product_exp.id,
"quantity": 3,
},
{
"name": "Personal Equipment No Expirable",
"product_id": product_no_exp.id,
"quantity": 2,
},
]
cls.personal_equipment_request = (
cls.env["hr.personal.equipment.request"]
.with_user(cls.user.id)
.create(
{
"name": "Personal Equipment Request Test",
"line_ids": [(0, 0, line) for line in lines],
}
)
)
cls.hr_employee_ppe_expirable = cls.personal_equipment_request.line_ids[0]
cls.hr_employee_ppe_no_expirable = cls.personal_equipment_request.line_ids[1]
def test_compute_fields(self):
self.hr_employee_ppe_expirable._compute_fields()
self.assertTrue(self.hr_employee_ppe_expirable.is_ppe)
self.assertTrue(self.hr_employee_ppe_expirable.expire_ppe)
self.assertEqual(
self.hr_employee_ppe_expirable.indications,
self.product_employee_ppe_expirable.indications,
)
def test_accept_allocation(self):
self.assertFalse(self.hr_employee_ppe_expirable.issued_by)
self.personal_equipment_request.with_user(self.user).accept_request()
self.assertTrue(self.hr_employee_ppe_expirable.issued_by)
self.assertEqual(self.hr_employee_ppe_expirable.issued_by, self.user)
def test_validate_allocation_with_start_date(self):
self.assertFalse(self.hr_employee_ppe_expirable.expiry_date)
self.hr_employee_ppe_expirable.start_date = "2020-01-01"
self.hr_employee_ppe_expirable.validate_allocation()
self.assertTrue(self.hr_employee_ppe_expirable.expiry_date)
self.assertEqual(str(self.hr_employee_ppe_expirable.expiry_date), "2020-01-04")
def test_validate_allocation_without_start_date(self):
self.assertFalse(self.hr_employee_ppe_expirable.expiry_date)
self.assertFalse(self.hr_employee_ppe_expirable.start_date)
self.hr_employee_ppe_expirable.validate_allocation()
self.assertEqual(
self.hr_employee_ppe_expirable.expiry_date,
date.today()
+ _intervalTypes[self.product_employee_ppe_expirable.ppe_interval_type](
self.product_employee_ppe_expirable.ppe_duration
),
)
def test_cron_ppe_expiry_verification_expired_product(self):
self.hr_employee_ppe_expirable.start_date = "2020-01-01"
self.hr_employee_ppe_expirable.expiry_date = "2020-12-31"
self.hr_employee_ppe_expirable.validate_allocation()
self.assertEqual(self.hr_employee_ppe_expirable.state, "valid")
self.hr_employee_ppe_expirable.cron_ppe_expiry_verification()
self.assertEqual(self.hr_employee_ppe_expirable.state, "expired")
def test_cron_ppe_expiry_verification_no_expired_product(self):
self.hr_employee_ppe_expirable.expiry_date = (
datetime.now() + timedelta(days=1)
).strftime("%Y-%m-%d")
self.hr_employee_ppe_expirable.validate_allocation()
self.assertEqual(self.hr_employee_ppe_expirable.state, "valid")
self.hr_employee_ppe_expirable.cron_ppe_expiry_verification()
self.assertNotEqual(self.hr_employee_ppe_expirable.state, "expired")
def test_cron_ppe_expiry_verification_no_expirable_product(self):
self.hr_employee_ppe_no_expirable.validate_allocation()
self.assertEqual(self.hr_employee_ppe_no_expirable.state, "valid")
self.hr_employee_ppe_no_expirable.cron_ppe_expiry_verification()
self.assertNotEqual(self.hr_employee_ppe_no_expirable.state, "expired")
def test_check_dates(self):
with self.assertRaises(ValidationError):
self.hr_employee_ppe_expirable.start_date = "2020-01-01"
self.hr_employee_ppe_expirable.expiry_date = "2019-12-31"
self.hr_employee_ppe_expirable._compute_fields()
self.hr_employee_ppe_expirable.validate_allocation()
def test_compute_contains_ppe(self):
# Without ppes
product_employee_no_ppe = self.env["product.template"].create(
{
"name": "Product Test Employee No PPE",
"is_personal_equipment": True,
"is_ppe": False,
}
)
product = product_employee_no_ppe.product_variant_id
lines = [
{
"name": "Personal Equipment PPE Expirable",
"product_id": product.id,
"quantity": 3,
}
]
personal_equipment_request = (
self.env["hr.personal.equipment.request"]
.with_user(self.user.id)
.create(
{
"name": "Personal Equipment Request Test",
"line_ids": [(0, 0, line) for line in lines],
}
)
)
personal_equipment_request._compute_contains_ppe()
self.assertFalse(personal_equipment_request.contains_ppe)
# With ppes
product = self.product_employee_ppe_expirable.product_variant_id
lines.append(
{
"name": "Personal Equipment PPE Expirable",
"is_ppe": True,
"product_id": product.id,
"quantity": 3,
}
)
personal_equipment_request["line_ids"] = [(0, 0, line) for line in lines]
personal_equipment_request._compute_contains_ppe()
self.assertTrue(personal_equipment_request.contains_ppe)
def test_action_view_ppe_report(self):
self.env.company.external_report_layout_id = self.env.ref(
"web.external_layout_standard"
).id
action = self.personal_equipment_request.action_view_ppe_report()
self.assertEqual(action["name"], "Receipt of Personal protection Equipment")
self.assertEqual(len(action["context"]["active_ids"]), 1)
self.assertEqual(
action["context"]["active_ids"][0], self.personal_equipment_request.id
)
self.assertEqual(action["report_type"], "qweb-pdf")

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- TREE -->
<record id="hr_personal_equipment_tree_view" model="ir.ui.view">
<field name="name">hr.personal.equipment.tree</field>
<field name="model">hr.personal.equipment</field>
<field
name="inherit_id"
ref="hr_personal_equipment_request.hr_personal_equipment_tree_view"
/>
<field name="arch" type="xml">
<xpath expr="//field[@name='start_date']" position="after">
<field name="expire_ppe" string="Expirable" />
<field name="expiry_date" />
</xpath>
</field>
</record>
<!-- FORM -->
<record model="ir.ui.view" id="hr_personal_equipment_form_view">
<field name="name">hr.personal.equipment.form (in hr_employee_ppe)</field>
<field name="model">hr.personal.equipment</field>
<field
name="inherit_id"
ref="hr_personal_equipment_request.hr_personal_equipment_form_view"
/>
<field name="arch" type="xml">
<xpath expr="//field[@name='product_id']" position="after">
<field
name="is_ppe"
string="Is PPE"
readonly="1"
attrs="{'invisible':[('is_ppe', '=', False)]}"
/>
</xpath>
<xpath expr="//field[@name='start_date']" position="before">
<field
name="expire_ppe"
string="Expirable"
attrs="{'invisible':[('is_ppe', '=', False)],'readonly': [('state', 'not in', ('draft','accepted'))]}"
/>
</xpath>
<field name="expiry_date" position="attributes">
<attribute name="attrs">
{'invisible':['&amp;', ('state', '!=', 'expired'), ('expire_ppe', '=', False)],'readonly': [('state', 'not in', ('draft','accepted'))]}
</attribute>
</field>
<xpath expr="//group[@name='date']" position="after">
<group
name="directions_info"
string="PPE Indications"
attrs="{'invisible':[('is_ppe', '=', False)]}"
>
<field
name="indications"
attrs="{'invisible':[('is_ppe', '=', False)]}"
readonly="1"
/>
</group>
<group
string="Certification Information"
attrs="{'invisible':[('is_ppe', '=', False)]}"
>
<field
name="issued_by"
attrs="{'invisible':[('is_ppe', '=', False)]}"
readonly="1"
/>
<field
name="certification"
attrs="{'invisible':[('is_ppe', '=', False)],'readonly': [('state', 'not in', ('draft','accepted'))]}"
/>
</group>
</xpath>
</field>
</record>
<record id="hr_personal_equipment_form_view_base_user" model="ir.ui.view">
<field name="name">hr.personal.equipment.form (in hr_employee_ppe)</field>
<field name="model">hr.personal.equipment</field>
<field
name="inherit_id"
ref="hr_employee_ppe.hr_personal_equipment_form_view"
/>
<field name="arch" type="xml">
<field name="expire_ppe" position="attributes">
<attribute name="readonly">True</attribute>
<attribute name="groups">base.group_user</attribute>
</field>
<field name="expire_ppe" position="attributes">
<attribute name="readonly">True</attribute>
<attribute name="groups">base.group_user</attribute>
</field>
<field name="start_date" position="attributes">
<attribute name="readonly">True</attribute>
<attribute name="groups">base.group_user</attribute>
</field>
<field name="expiry_date" position="attributes">
<attribute name="readonly">True</attribute>
<attribute name="groups">base.group_user</attribute>
</field>
<field name="certification" position="attributes">
<attribute name="readonly">True</attribute>
<attribute name="groups">base.group_user</attribute>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2021 Creu Blanca
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="hr_personal_equipment_request_form_view">
<field
name="name"
>hr.personal.equipment.request.form (in hr_employee_ppe)</field>
<field name="model">hr.personal.equipment.request</field>
<field
name="inherit_id"
ref="hr_personal_equipment_request.hr_personal_equipment_request_form_view"
/>
<field name="arch" type="xml">
<xpath expr="//button[@name='cancel_request']" position="before">
<button
type="object"
name="action_view_ppe_report"
string="Print Receipt of PPE"
groups="hr.group_hr_user"
attrs="{'invisible':['|',('contains_ppe','=',False), ('state', 'not in', ('draft', 'accepted'))]}"
/>
</xpath>
<xpath
expr="//group[@name='employee']//field[@name='employee_id']"
position="after"
>
<field name="contains_ppe" invisible="1" string="Contains PPE" />
</xpath>
<xpath expr="//notebook//field[@name='product_id']" position="after">
<field name="is_ppe" string="Is PPE" />
<field name="indications" invisible="1" />
</xpath>
<xpath expr="//notebook//field[@name='start_date']" position="after">
<field name="expire_ppe" string="Expirable" />
<field name="expiry_date" />
<field name="certification" groups="hr.group_hr_user" />
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2020 Escodoo
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="product_template_form_view">
<field name="name">product.template.form (in hr_employee_ppe)</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<page name="personal_equipment" position="inside">
<group string="Employee PPE">
<field
name="is_ppe"
string="Is PPE"
attrs="{'invisible': [('is_personal_equipment', '=', False)]}"
/>
<field
name="indications"
string="PPE Indications"
attrs="{'invisible': [('is_ppe', '=', False)]}"
/>
<field
name="expirable_ppe"
attrs="{'invisible': [('is_ppe', '=', False)]}"
/>
<field
name="ppe_duration"
string="PPE Duration"
attrs="{'invisible': [('expirable_ppe', '=', False)], 'required': [('expirable_ppe', '!=', False)]}"
/>
<field
name="ppe_interval_type"
string="PPE Interval Type"
attrs="{'invisible': [('expirable_ppe', '=', False)], 'required': [('expirable_ppe', '!=', False)]}"
/>
</group>
</page>
</field>
</record>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-hr-hr_employee_ppe"
version = "16.0.0"
description = "Personal Protective Equipment (PPE) Management - Odoo addon"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-hr-hr_personal_equipment_request>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["hr_employee_ppe"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]