# Additional Implementation Patterns ## Action Buttons ```python def action_custom(self): self.ensure_one() # Logic here return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'title': 'Success', 'message': 'Action completed', 'type': 'success', } } ``` ## PDF Reports (QWeb) ```python class CustomReport(models.AbstractModel): _name = 'report.module.report_name' @api.model def _get_report_values(self, docids, data=None): docs = self.env['model.name'].browse(docids) return { 'doc_ids': docids, 'docs': docs, 'custom_data': self._prepare_data(docs), } ``` ## Excel Reports ```python from odoo import models class ExcelReport(models.AbstractModel): _name = 'report.module.report_xlsx' _inherit = 'report.report_xlsx.abstract' def generate_xlsx_report(self, workbook, data, objects): sheet = workbook.add_worksheet('Report') header_format = workbook.add_format({'bold': True}) sheet.write(0, 0, 'Header 1', header_format) # Add data rows ``` ## Scheduled Actions (Cron) ```xml Task Name code model._cron_method() 1 days ```