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
This commit is contained in:
92
fusion_claims/wizard/send_page11_wizard.py
Normal file
92
fusion_claims/wizard/send_page11_wizard.py
Normal file
@@ -0,0 +1,92 @@
|
||||
# -*- 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'},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user