Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions hr_personal_equipment_request_sign_oca/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
======================================
Hr Personal Equipment Request Sign Oca
======================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:adb18013225c7e07e55f00281a5bf96055ba36b61a11354a582bab7a55a62cd1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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%2Fsign-lightgray.png?logo=github
:target: https://github.com/OCA/sign/tree/16.0/hr_personal_equipment_request_sign_oca
:alt: OCA/sign
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sign-16-0/sign-16-0-hr_personal_equipment_request_sign_oca
: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/sign&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows you to generate manual and automatic signature
requests from Personal Equipment Request to For employees who request
it. A new PPE sign report has been created in order to manage dynamic
Personal Equipments' table.

**Table of contents**

.. contents::
:local:

Configuration
=============

1. Go to Sign > Settings > Roles and create a role with the following
data:

- Partner type: Expression
- Expression: {{object.employee_id.user_id.partner_id.id}}

2. Go to Sign > Templates and create a template with the following data:

- Model: "This model allows to create a personal equipment request"
- In one of the fields, you must set the previously created role.

3. (Optional) Go to Employees > Configuration > Settings.

- In the Personal Equipment Request Sign section, define a template to
enable automatic task sign requests.
- Use the template previously created.

Usage
=====

Creating a Signature Request from a Personal Equipment Request:

- Go to Employees > Personal Equipment > Personal Equipment Request.
- Create a new Personal Equipment Request.
- In the list or form view, click on the action "Sign from template".
- Sign Requests will have been generated (and sent) linked to the
selected Personal Equipment Request.

Automatic Signature Request creation:

- Define a template in Employees > Configuration > Settings.
- When a Personal Equipment Request is created, or employee in an
existing one changes, a Sign Request will be created (and sent)
automatically.

Viewing Signature Requests:

- Go to Employees > Personal Equipment > Personal Equipment Request.
- Open a personal equipment request with an associated signature
request.
- Click on the smart-button Sign Requests.
- Click on any signature request to view its details, status, and
progress.
- Alternatively, go to Sign > Requests.
- Use the Group By feature to group requests by Employess.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sign/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/sign/issues/new?body=module:%20hr_personal_equipment_request_sign_oca%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
-------

* PyTech SRL

Contributors
------------

- `PyTech SRL <https://pytech.it>`__:

- Quirino Leone <quirino.leone@pytech.it>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

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

This module is part of the `OCA/sign <https://github.com/OCA/sign/tree/16.0/hr_personal_equipment_request_sign_oca>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions hr_personal_equipment_request_sign_oca/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
18 changes: 18 additions & 0 deletions hr_personal_equipment_request_sign_oca/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "Hr Personal Equipment Request Sign Oca",
"summary": """Hr Personal Equipment Request Sign Oca""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "PyTech SRL, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/sign",
"depends": ["sign_oca", "hr_personal_equipment_request", "hr_employee_ppe"],
"data": [
"data/sign_oca_role.xml",
"data/sign_oca_template.xml",
"reports/ppe_sign_report.xml",
"reports/ppe_sign_report_template.xml",
"views/hr_personal_equipment_request.xml",
"views/res_config_settings.xml",
"views/sign_oca_request.xml",
],
}
10 changes: 10 additions & 0 deletions hr_personal_equipment_request_sign_oca/data/sign_oca_role.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo noupdate="1">
<record id="role_personal_equipment_request_owner" model="sign.oca.role">
<field name="name">Personal Equipment Request owner</field>
<field name="partner_selection_policy">expression</field>
<field
name="expression_partner"
>{{object.employee_id.user_id.partner_id.id}}</field>
</record>
</odoo>
34 changes: 34 additions & 0 deletions hr_personal_equipment_request_sign_oca/data/sign_oca_template.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo noupdate="1">
<record
id="sign_oca_template_personal_equipment_request_demo"
model="sign.oca.template"
>
<field name="name">Personal Equipment Request</field>
<field
name="model_id"
ref="hr_personal_equipment_request.model_hr_personal_equipment_request"
/>
<field name="data" type="base64" file="sign_oca/tests/empty.pdf" />
</record>
<record
id="sign_oca_template_personal_equipment_request_demo_item"
model="sign.oca.template.item"
>
<field
name="template_id"
ref="hr_personal_equipment_request_sign_oca.sign_oca_template_personal_equipment_request_demo"
/>
<field name="field_id" ref="sign_oca.sign_field_signature" />
<field
name="role_id"
ref="hr_personal_equipment_request_sign_oca.role_personal_equipment_request_owner"
/>
<field name="page">1</field>
<field name="position_x">10</field>
<field name="position_y">10</field>
<field name="width">30</field>
<field name="height">4</field>
<field name="required" eval="True" />
</record>
</odoo>
4 changes: 4 additions & 0 deletions hr_personal_equipment_request_sign_oca/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import hr_personal_equipment_request
from . import res_company
from . import res_config_settings
from . import sign_oca_request
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import base64

from odoo import api, fields, models


class HrPersonalEquipmentRequest(models.Model):
_inherit = "hr.personal.equipment.request"

sign_request_ids = fields.One2many(
comodel_name="sign.oca.request",
inverse_name="personal_equipment_request_id",
string="Sign Requests",
)
sign_request_count = fields.Integer(
string="Sign request count",
compute="_compute_sign_request_count",
store=True,
)

@api.depends("sign_request_ids")
def _compute_sign_request_count(self):
for item in self:
item.sign_request_count = len(item.sign_request_ids)

def action_view_sign_requests(self):
self.ensure_one()
result = self.env["ir.actions.act_window"]._for_xml_id(
"sign_oca.sign_oca_request_act_window"
)
result["domain"] = [("id", "in", self.sign_request_ids.ids)]
return result

def _generate_sign_oca_request(self):
sign_request_obj = self.env["sign.oca.request"].sudo()
for item in self:
sign_template = (
item.employee_id.company_id.personal_equipment_request_sign_oca_template_id
)
if sign_template:
sign_template = sign_template.sudo()
request_dict = sign_template._prepare_sign_oca_request_vals_from_record(
item
)
report = self.env["ir.actions.report"]._get_report_from_name(
"hr_personal_equipment_request_sign_oca.ppe_sign_report_template"
)
pdf = report._render_qweb_pdf(report.report_name, [self.id])[0]
request_dict.update({"data": base64.b64encode(pdf)})
request = sign_request_obj.create(request_dict)
request.action_send()

@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
res._generate_sign_oca_request()
return res

def write(self, vals):
if "employee_id" in vals:
old_employees = {rec.id: rec.employee_id for rec in self}
res = super().write(vals)
if "employee_id" in vals:
for rec in self:
if rec.employee_id and rec.employee_id != old_employees.get(rec.id):
rec._generate_sign_oca_request()
return res
11 changes: 11 additions & 0 deletions hr_personal_equipment_request_sign_oca/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from odoo import fields, models


class ResCompany(models.Model):
_inherit = "res.company"

personal_equipment_request_sign_oca_template_id = fields.Many2one(
comodel_name="sign.oca.template",
domain="[('model_id.model', '=', 'hr.personal.equipment.request')]",
string="Personal Equipment Request Sign Oca Template",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from odoo import fields, models


class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"

personal_equipment_request_sign_oca_template_id = fields.Many2one(
comodel_name="sign.oca.template",
related="company_id.personal_equipment_request_sign_oca_template_id",
readonly=False,
)
29 changes: 29 additions & 0 deletions hr_personal_equipment_request_sign_oca/models/sign_oca_request.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from odoo import api, fields, models


class SignOcaRequest(models.Model):
_inherit = "sign.oca.request"

personal_equipment_request_id = fields.Many2one(
comodel_name="hr.personal.equipment.request",
string="Personal Equipment Request",
compute="_compute_personal_equipment_request_id",
store=True,
)

ppe_employee_id = fields.Many2one(
comodel_name="hr.employee",
related="personal_equipment_request_id.employee_id",
store=True,
)

@api.depends("record_ref")
def _compute_personal_equipment_request_id(self):
for item in self:
if (
item.record_ref
and item.record_ref._name == "hr.personal.equipment.request"
):
item.personal_equipment_request_id = item.record_ref.id
else:
item.personal_equipment_request_id = False
14 changes: 14 additions & 0 deletions hr_personal_equipment_request_sign_oca/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
1. Go to Sign > Settings > Roles and create a role with the following data:

- Partner type: Expression
- Expression: {{object.employee_id.user_id.partner_id.id}}

2. Go to Sign > Templates and create a template with the following data:

- Model: "This model allows to create a personal equipment request"
- In one of the fields, you must set the previously created role.

3. (Optional) Go to Employees > Configuration > Settings.

- In the Personal Equipment Request Sign section, define a template to enable automatic task sign requests.
- Use the template previously created.
2 changes: 2 additions & 0 deletions hr_personal_equipment_request_sign_oca/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [PyTech SRL](https://pytech.it):
- Quirino Leone \<<quirino.leone@pytech.it>\>
2 changes: 2 additions & 0 deletions hr_personal_equipment_request_sign_oca/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This module allows you to generate manual and automatic signature requests from Personal Equipment Request to For employees who request it.
A new PPE sign report has been created in order to manage dynamic Personal Equipments' table.
17 changes: 17 additions & 0 deletions hr_personal_equipment_request_sign_oca/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Creating a Signature Request from a Personal Equipment Request:
- Go to Employees > Personal Equipment > Personal Equipment Request.
- Create a new Personal Equipment Request.
- In the list or form view, click on the action "Sign from template".
- Sign Requests will have been generated (and sent) linked to the selected Personal Equipment Request.

Automatic Signature Request creation:
- Define a template in Employees > Configuration > Settings.
- When a Personal Equipment Request is created, or employee in an existing one changes, a Sign Request will be created (and sent) automatically.

Viewing Signature Requests:
- Go to Employees > Personal Equipment > Personal Equipment Request.
- Open a personal equipment request with an associated signature request.
- Click on the smart-button Sign Requests.
- Click on any signature request to view its details, status, and progress.
- Alternatively, go to Sign > Requests.
- Use the Group By feature to group requests by Employess.
16 changes: 16 additions & 0 deletions hr_personal_equipment_request_sign_oca/reports/ppe_sign_report.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="hr_employee_ppe_sign_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_personal_equipment_request_sign_oca.ppe_sign_report_template</field>
<field
name="report_file"
>hr_personal_equipment_request_sign_oca.ppe_sign_report_template</field>
<field name="binding_model_id" eval="False" />
<field name="binding_type">report</field>
</record>
</odoo>
Loading