Skip to content

Commit

Permalink
[IMP] sign_oca: Send to signers the final signed document
Browse files Browse the repository at this point in the history
Once the request is completely signed, all the signers should receive a copy of the final document.
  • Loading branch information
BernatPForgeFlow authored and victoralmau committed Oct 11, 2024
1 parent d3aa481 commit 32d8bde
Show file tree
Hide file tree
Showing 7 changed files with 100 additions and 0 deletions.
1 change: 1 addition & 0 deletions sign_oca/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"security/security.xml",
"views/menu.xml",
"data/data.xml",
"wizards/res_config_settings_views.xml",
"wizards/sign_oca_template_generate.xml",
"wizards/sign_oca_template_generate_multi.xml",
"views/res_partner_views.xml",
Expand Down
1 change: 1 addition & 0 deletions sign_oca/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from . import res_company
from . import res_users
from . import res_partner
from . import sign_oca_template
Expand Down
14 changes: 14 additions & 0 deletions sign_oca/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from odoo import fields, models


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

sign_oca_send_sign_request_copy = fields.Boolean(
string="Send signers a copy of the final signed document",
help="Once all signers have signed the request, a copy of "
"the final document will be sent to each of them.",
)
35 changes: 35 additions & 0 deletions sign_oca/models/sign_oca_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,40 @@ def action_send(self, sign_now=False, message=""):
email_layout_xmlid="mail.mail_notification_light",
)

def action_send_signed_request(self):
self.ensure_one()
if (
self.state != "signed"
or not self.env.company.sign_oca_send_sign_request_copy
):
return
for signer in self.signer_ids:
attachments = (
self.env["ir.attachment"]
.sudo()
.search(
[
("res_model", "=", "sign.oca.request"),
("res_id", "=", self.id),
("res_field", "=", "data"),
]
)
)
# The message will not be linked to the record because we do not want
# it happen.
self.env["mail.thread"].message_notify(
body=_(
"%(name)s (%(email)s) has sent the signed document.",
name=self.create_uid.name,
email=self.create_uid.email,
),
partner_ids=signer.partner_id.ids,
subject=_("Signed document"),
subtype_id=self.env.ref("mail.mt_comment").id,
mail_auto_delete=False,
attachment_ids=attachments.ids,
)

def _check_signed(self):
self.ensure_one()
if self.state != "sent":
Expand Down Expand Up @@ -431,6 +465,7 @@ def action_sign(self, items, access_token=False):
self.signature_hash = final_hash
self.request_id._check_signed()
self._set_action_log("sign", access_token=access_token)
self.request_id.action_send_signed_request()
return {
"type": "ir.actions.act_url",
"url": self.access_url,
Expand Down
1 change: 1 addition & 0 deletions sign_oca/wizards/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from . import res_config_settings
from . import sign_oca_template_generate
from . import sign_oca_template_generate_multi
12 changes: 12 additions & 0 deletions sign_oca/wizards/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from odoo import fields, models


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

sign_oca_send_sign_request_copy = fields.Boolean(
related="company_id.sign_oca_send_sign_request_copy", readonly=False
)
36 changes: 36 additions & 0 deletions sign_oca/wizards/res_config_settings_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form (in sign_oca)</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div
class="app_settings_block"
data-string="Sign Oca"
string="Sign Oca"
data-key="sign_oca"
groups="sign_oca.sign_oca_group_admin"
>
<h2>Sign Requests</h2>
<div class="row mt16 o_settings_container" id="sign_oca_requests">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="sign_oca_send_sign_request_copy" />
</div>
<div class="o_setting_right_pane">
<label for="sign_oca_send_sign_request_copy" />
<div class="text-muted">
Once all signers have signed the request, a copy of the final document will be sent to each of them.
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

0 comments on commit 32d8bde

Please sign in to comment.