# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) # Part of the Fusion Plating product family. import logging from odoo import models _logger = logging.getLogger(__name__) class SaleOrder(models.Model): _inherit = 'sale.order' def action_confirm(self): res = super().action_confirm() for order in self: self._send_fp_notification( 'so_confirmed', order, order.partner_id, sale_order=order, ) return res def _send_fp_notification(self, trigger_event, record, partner, sale_order=None): """Send a notification email and log it.""" template = self.env['fp.notification.template'].search( [('trigger_event', '=', trigger_event), ('active', '=', True)], limit=1, ) if not template or not template.mail_template_id: return try: template.mail_template_id.send_mail(record.id, force_send=False) self.env['fp.notification.log'].create({ 'template_id': template.id, 'trigger_event': trigger_event, 'sale_order_id': sale_order.id if sale_order else False, 'partner_id': partner.id if partner else False, 'recipient_email': partner.email if partner else '', 'status': 'sent', }) except Exception as e: _logger.warning('FP notification failed (%s): %s', trigger_event, e) self.env['fp.notification.log'].create({ 'template_id': template.id, 'trigger_event': trigger_event, 'sale_order_id': sale_order.id if sale_order else False, 'partner_id': partner.id if partner else False, 'recipient_email': partner.email if partner else '', 'status': 'failed', 'error_message': str(e), })