I want that User from portal(my/account) click on 'Accept & Sign' button then dialog box will open and user submit after sign. That information should post on res.partner table.
Now i am able to open dialog box and signature field availabe but not able to perform any action on that dialog box. it closing when click on anywhere of that dialog box.
I am using odoo 16. Please correct my code.
My code is like:
Python code:
class ResPartner(models.Model): _inherit = 'res.partner' signature = fields.Image(string="Signature", copy=False, attachment=True, max_width=1024, max_height=1024)
Xml code:
<record id="inherit_custom_view_partner_form" model="ir.ui.view">
<field name="name">res.partner.multiple.email.form.view</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="before">
<field name="signature" widget="image"/>
</xpath>
</field>
</record>
Contoller portal.py code:
class ResPartnerController(CustomerPortal): @route(['/my/account'], type='http', auth='public', website=True) def account(self, signature=None, **post): res = super().account() partner_id = request.env.user.partner_id # Signature code # if not partner_id._has_to_be_signed(): # return {'error': _('The order is not in a state requiring customer signature.')} # if not signature: # return {'error': _('Signature is missing.')} try: partner_id.update({ 'signature': signature, }) request.env.cr.commit() except (TypeError, binascii.Error) as e: return {'error': _('Invalid signature data.')} return res
Portal template xml code:
<template id="portal.portal_my_details">
<t t-call="portal.portal_layout">
<t t-set="additional_title">Contact Details</t>
<form action="/my/account" method="post" enctype="multipart/form-data">
<div class="row o_portal_details">
<div class="col-lg-8">
<div class="row">
<t t-call="portal.portal_my_details_fields"/>
<!-- Custom Signature code start -->
<!-- modal relative to the actions sign and pay -->
<div role="dialog" class="modal fade" id="modalaccept">
<div class="modal-dialog">
<form id="accept" method="POST" t-att-data-order-id="partner.id"
class="js_accept_json modal-content js_website_submit_form">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<header class="modal-header">
<h4 class="modal-title">Validate Order22</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal"
aria-label="Close"></button>
</header>
<main class="modal-body" id="sign-dialog">
<p>
<span>By signing this proposal, I agree to the following terms4444:</span>
</p>
<t t-call="portal.signature_form">
<t t-set="call_url" t-value="'/my/account'"/>
<t t-set="default_name" t-value="partner.name"/>
</t>
</main>
</form>
</div>
</div>
Thanks in advance