如何从Odoo v11中的按钮添加打印自定义报告?

时间:2019-08-09 14:09:01

标签: python python-3.x report odoo odoo-11

我不久前在会计模块中创建了一个自定义报告,一个自定义报告..效果很好..现在,我想做的是在标题中添加一个按钮,默认情况下,该按钮是与我的自定义报告有关

<report
    id="account_invoices"
    model="account.invoice"
    string="Factura pre-impresa"
    report_type="qweb-pdf"
    name="custom_report_module.report_custom_template"
    file="custom_report_module.report_custom_template"
    attachment_use="True"
    attachment="(object.state in ('open','paid')) and
        ('INV'+(object.number or '').replace('/','')+'.pdf')"
/>

这就是我所说的出现在下拉列表中的报告,此后我尝试添加按钮,但对我来说不起作用

<record id="my_invoice_tree_inherit" model="ir.ui.view">
        <field name="name">account.invoice.form</field>
        <field name="model">account.invoice</field>
        <field name="inherit_id" ref="account.invoice_form"/>
        <field name="arch" type="xml">
            <button name="invoice_print" position="after">
                <button name="print_bank_statement" string="Print Statement" type="object" help="Print in Pdf"/>
            </button>
        </field>

    </record>

一些帮助?

1 个答案:

答案 0 :(得分:1)

如果使用打印Odoo v11中某些报告的方法查看其他按钮,则它们看起来像这样:

@api.multi
def print_quotation(self):
    self.filtered(lambda s: s.state == 'draft').write({'state': 'sent'})
    return self.env.ref('sale.action_report_saleorder').report_action(self)

因此,在您的情况下,如果您不想运行任何python操作,则可以简化以下操作:

@api.multi
def print_bank_statement(self):
    return self.env.ref('module_name.account_invoices').report_action(self)

此外,您可以直接调用报表的XML ID,而无需调用任何python代码:

<button name="%(account_invoices)d" string="Print" type="action" />

请确保您在此处使用正确的按钮类型:type="action"

正如@Amal所说,请检查您继承的表单引用是否正确