是否可以从其他型号打印报告?
Is it possible to print a report from another model?
我正在开发一个模块来计算工资。
计算完所有工资后,以 '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。
自己想办法。
首先,我在原始模型上实现了打印报告的功能'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()
我正在开发一个模块来计算工资。
计算完所有工资后,以 '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。
自己想办法。
首先,我在原始模型上实现了打印报告的功能'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()