Files
gh-jamshu-jamshi-marketplac…/skills/odoo-feature-enhancer/references/implementation_patterns.md
2025-11-29 18:50:04 +08:00

1.5 KiB

Additional Implementation Patterns

Action Buttons

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)

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

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)

<record id="ir_cron_task" model="ir.cron">
    <field name="name">Task Name</field>
    <field name="model_id" ref="model_model_name"/>
    <field name="state">code</field>
    <field name="code">model._cron_method()</field>
    <field name="interval_number">1</field>
    <field name="interval_type">days</field>
</record>