是否可以打印其他型号的报告?

问题描述 投票:0回答:2

我正在开发一个计算工资的模块。

以“hr.contract”形式计算出所有工资后,我将可以选择打印报告。

该报告必须与我可以以“hr.payslip”表格打印的报告相同。

所以,问题是是否可以做到这一点。我已经尝试过,但效果不佳。

我试过这个:

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)

但结果是一个空的 PDF。

python python-3.x odoo odoo-12
2个回答
0
投票

我自己想办法。

首先,我在原始模型“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)

然后,从 hr.contract 中,我调用该函数以使用工资单实例打印报告:

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()

0
投票

我知道我已经迟到了。我遇到同样的情况。当我想从其他模型打印报告时,报告是空的

这是我的解决方案,无需在目标类上添加其他方法

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

    def print_nominee_report(self):
        account_payment_id = 1

        model = self.env['account.payment'].browse(account_payment_id)
        return model.env.ref('account.action_report_xxxxx').report_action(model)
© www.soinside.com 2019 - 2024. All rights reserved.