Files
Odoo-Modules/fusion_claims/wizard/send_page11_wizard.py
Nexa Admin 431052920e feat: separate fusion field service and LTC into standalone modules, update core modules
- fusion_claims: separated field service logic, updated controllers/views
- fusion_tasks: updated task views and map integration
- fusion_authorizer_portal: added page 11 signing, schedule booking, migrations
- fusion_shipping: new standalone shipping module (Canada Post, FedEx, DHL, Purolator)
- fusion_ltc_management: new standalone LTC management module
2026-03-11 16:19:52 +00:00

93 lines
3.3 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2024-2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
from datetime import timedelta
from odoo import models, fields, api, _
from odoo.exceptions import UserError
class SendPage11Wizard(models.TransientModel):
_name = 'fusion_claims.send.page11.wizard'
_description = 'Send Page 11 for Remote Signing'
sale_order_id = fields.Many2one(
'sale.order', string='Sale Order',
required=True, readonly=True,
)
signer_email = fields.Char(string='Recipient Email', required=True)
signer_type = fields.Selection([
('client', 'Client (Self)'),
('spouse', 'Spouse'),
('parent', 'Parent'),
('legal_guardian', 'Legal Guardian'),
('poa', 'Power of Attorney'),
('public_trustee', 'Public Trustee'),
], string='Signer Type', default='client', required=True)
signer_name = fields.Char(string='Signer Name', required=True)
custom_message = fields.Text(
string='Personal Message',
help='Optional message to include in the signing request email.',
)
expiry_days = fields.Integer(
string='Link Valid For (days)', default=7, required=True,
)
client_name = fields.Char(string='Client', readonly=True)
case_ref = fields.Char(string='Case Reference', readonly=True)
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
active_id = self.env.context.get('active_id')
if not active_id:
return res
order = self.env['sale.order'].browse(active_id)
res['sale_order_id'] = order.id
res['client_name'] = order.partner_id.name or ''
res['case_ref'] = order.name or ''
res['signer_name'] = order.partner_id.name or ''
res['signer_email'] = order.partner_id.email or ''
return res
def action_send(self):
"""Create a signing request and send the email."""
self.ensure_one()
if not self.signer_email:
raise UserError(_("Please enter the recipient's email address."))
if self.expiry_days < 1:
raise UserError(_("Expiry must be at least 1 day."))
request = self.env['fusion.page11.sign.request'].create({
'sale_order_id': self.sale_order_id.id,
'signer_email': self.signer_email,
'signer_type': self.signer_type,
'signer_name': self.signer_name,
'custom_message': self.custom_message,
'expiry_date': fields.Datetime.now() + timedelta(days=self.expiry_days),
'consent_signed_by': 'applicant' if self.signer_type == 'client' else 'agent',
'signer_relationship': dict(self._fields['signer_type'].selection).get(
self.signer_type, ''
) if self.signer_type != 'client' else '',
})
request._send_signing_email()
return {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'title': _('Page 11 Signing Request Sent'),
'message': _(
'Signing request has been sent to %s.',
self.signer_email,
),
'type': 'success',
'sticky': False,
'next': {'type': 'ir.actions.act_window_close'},
},
}