Reports based on custom SQL
The report we built was based on a regular recordset. However, in some cases we need to transform or aggregate data in ways that are not easy or desirable to process in a QWeb template.
One approach for this is to write a SQL query to build the dataset we need, expose those results through a special model, and have our report work based on a recordset.
To showcase this, we will create a reports/todo_task_report.py file with the following code:
from odoo import models, fields
class TodoReport(models.Model):
_name = 'todo.task.report'
_description = 'To-do Report'
_auto = False
name = fields.Char('Description')
is_done = fields.Boolean('Done?')
active = fields.Boolean('Active?')
user_id = fields.Many2one('res.users', 'Responsible')
date_deadline = fields.Date('Deadline')
def init(self):
self.env.cr.execute("""
CREATE OR REPLACE VIEW todo_task_report AS
(SELECT *
FROM todo_task
...