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

65 lines
1.5 KiB
Markdown

# 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
<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>
```