Ir al contenido
Menú
Se marcó esta pregunta

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



Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
2
abr 24
1771
1
may 23
3204
0
feb 23
2201
2
jun 24
2184
1
may 25
1882