# -*- 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 _logger = logging.getLogger(__name__) def post_init_hook(env): """Wire reports onto mail templates + clean up double-attach flags. Both the mail-template and fp.notification.template XML records are tagged noupdate="1" so user customizations aren't overwritten on module update. This hook runs once to: 1. Point report_template_ids at the current branded reports. 2. Turn off attach_quotation / attach_sale_order / attach_invoice flags on fp.notification.template — those would duplicate the PDF that's now auto-attached via the mail template's report_template_ids. """ # 1. Attach correct reports to mail templates _apply_report_template( env, 'fusion_plating_notifications.fp_mail_template_quote_sent', 'fusion_plating_reports.action_report_fp_sale_portrait', ) _apply_report_template( env, 'fusion_plating_notifications.fp_mail_template_so_confirmed', 'fusion_plating_reports.action_report_fp_sale_portrait', ) _apply_report_template( env, 'fusion_plating_notifications.fp_mail_template_invoice_posted', 'fusion_plating_reports.action_report_fp_invoice_portrait', ) # 2. Clear duplicate-attach flags on the auto-dispatch records. # The PDF is already auto-attached by the mail.template's # report_template_ids; leaving these flags on produces 2 PDFs. for xmlid, flags in [ ('fusion_plating_notifications.fp_notif_quote_sent', {'attach_quotation': False}), ('fusion_plating_notifications.fp_notif_so_confirmed', {'attach_sale_order': False}), ('fusion_plating_notifications.fp_notif_invoice_posted', {'attach_invoice': False}), ]: rec = env.ref(xmlid, raise_if_not_found=False) if not rec: continue needs_write = any(rec[k] != v for k, v in flags.items()) if needs_write: rec.write(flags) _logger.info( 'fusion_plating_notifications: cleared duplicate-attach ' 'flags on %s (%s)', xmlid, flags, ) def _apply_report_template(env, mail_template_xmlid, report_xmlid): """Replace the template's report_template_ids with exactly [report]. We use `set` semantics (replace all) rather than `add` so that old attachments from previous refactors get cleaned up — e.g. when the Acknowledgement report was consolidated into the Sales Order report, the now-stale Acknowledgement reference gets removed here. """ mail_template = env.ref(mail_template_xmlid, raise_if_not_found=False) report = env.ref(report_xmlid, raise_if_not_found=False) if not mail_template or not report: _logger.warning( 'fusion_plating_notifications post_init: missing %s or %s', mail_template_xmlid, report_xmlid, ) return current_ids = set(mail_template.report_template_ids.ids) if current_ids != {report.id}: mail_template.write({ 'report_template_ids': [(6, 0, [report.id])], }) _logger.info( 'fusion_plating_notifications: set report %s on template %s', report_xmlid, mail_template_xmlid, )