Custom Report Generation

Hi, I have 2 models that one2many

[Parent]

class UserTimesheet(ModelSQL, ModelView):
    "User Timesheet"
    __name__ = 'afx.user.timesheet'

    year = fields.Selection([], "Year", help='Format: YYYY', required=True, states={
        'readonly': Eval('id', -1) > 0
    }, depends=['id'])
    month = fields.Selection([], "Month", sort=False, required=True, states={
        'readonly': Eval('id', -1) > 0
    }, depends=['id'])
    user = fields.Many2One('company.employee', "User", required=True, domain=[
        ('company', '=', MAIN_COMPANY)])

    records = fields.One2Many('afx.user.timesheet.record', 'timesheet', "Records", required=False)

[Child]

class UserTimesheetRecord(ModelSQL, ModelView):
    "Timesheet Record"
    __name__ = 'afx.user.timesheet.record'

    # unique_id field is to map between this record to its related ProjectTask record
    unique_id = fields.Char("Uuid")
    timesheet = fields.Many2One('afx.user.timesheet', "Timesheet")
    date = fields.Date("Date", required=True, states={
        'readonly': Eval('id', -1) > 0
    }, depends=['id'])
    day = fields.Selection([], "Day")
    task = fields.Selection([], "Status", sort=False)
    project = fields.Many2One('afx.project', "Project", domain=[
        ('so_no', '!=', None)
    ])
    detail = fields.Text("Detail")
    so_no = fields.Char("S/O Number")
    time_in = fields.Time("Time In")
    time_out = fields.Time('Time Out')
    total = fields.Float('Total Hours')

I am required to create report based on below layout, with the top yellow box come from parent model, and below are the list of child models.

Is this possible in trytond using aggregate model? or should I seek for custom library?

Meanwhile, when I use built-in report builder from Tryton, I can only produce as below screenshot:

Regards
Bromo

You can define aggregated model.