简体   繁体   中英

Is it possible to print a report from another model?

I'm developing a module to calculate salaries.

Once all salaries are calculated, in 'hr.contract' form, I will have an option to print a report.

This report has to be the same report that I can print in 'hr.payslip' form.

So, the question is if it's possible to do this. I've tried but with bad results.

I've tried this:

class HrContract(models.Model):
    _inherit = 'hr.contract'

    def print_nominee_report(self):
        # I get this values from another methods,
        # I put 1 and 20 just to avoid confution in the question.
        run_id = 1
        indicador_id = 20

        # this method generate a payslip from which I want the report.
        payslip = self.generate_payslip(run_id, self.employee_id.id, indicador_id, self.id) 
        ids = [payslip.id]
        data = {
            'ids': ids,
            'model': 'hr.payslip',
            'form': self.env['hr.payslip'].search([('id', '=', payslip.id)])
        }
        return self.env.ref('hr_payroll.action_report_payslip').report_action(self, data=data)

but the result is an empty PDF.

Figure it out myself.

First of all, I made the fuction to print the report on the original model 'hr.payslip':

class HrPayslip(models.Model):
    _inherit = 'hr.payslip'

    def print_nominee_report(self):
        return self.env.ref('hr_payroll.action_report_payslip').report_action(self)

Then, from hr.contract, I call the function to print the report using the payslip instance:

class HrContract(models.Model):
    _inherit = 'hr.contract'

    def print_nominee_report(self):
        # I get this values from another methods,
        # I put 1 and 20 just to avoid confution in the question.
        run_id = 1
        indicador_id = 20

        payslip = self.generate_payslip(run_id, self.employee_id.id, indicador_id, self.id) 
        return payslip.print_nominee_report()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM