# -*- 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 FpReceiving(models.Model): _inherit = 'fp.receiving' def action_accept(self): res = super().action_accept() for rec in self: self._send_fp_notification( 'parts_received', rec, rec.partner_id, sale_order=rec.sale_order_id, ) 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), })