Search code examples
reportingodoo-8odoo-9

Button not displaying report in odoo


I have been battling with an issue for a while now....Kindly help me. Below is the issue:

I created a button on the header of a form, the idea of this button is to show a report of an image file on click. But anytime i click this button, nothing happens. And when i edited the form view from developer's mode, i realized that the button is picking a different name. i.e

<header>
       <button name="reports/bh_customcustom.report_formdownload_view" type="report" string="Form Download" class="oe_highlight"/>
</header>

instead of this which is in the code:

<header>
                <button name="action_formdownloader" type="object"
                      string="Form Downloader" class="oe_highlight"/>
</header>

Below are my code snippet:

The form view:

<record model="ir.ui.view" id="form_download_form_view">
            <field name="name">form_download.form</field>
            <field name="model">formdownload</field>
            <field name="arch" type="xml">
                <form string="Form Download Form">
                    <header>
                        <button name="action_formdownloader" type="object"
                                string="Form Downloader" class="oe_highlight"/>
                    </header>

                    <sheet>
                        <group string="Company Name">
                            <!--<field name="company_name_id"/>-->
                            <field name="name"/>
                            <!--<field name="form_serial_no" />-->
                        </group>
                    </sheet>
                </form>
            </field>
        </record>

The model:

class FormDownload(models.Model):
    _name = 'formdownload'
    _rec_name = 'form_serial_no'

    # @api.multi
    def action_formdownloader(self):
        return self.env['report'].get('bh_customcustom.report_formdownload_view')

    name = fields.Many2one('companyname', string="Company Name", ondelete='cascade',
                           required=True)
    form_serial_no = fields.Char(string="Form Serial No", readonly=True)
    status = fields.Boolean(string="Status", default=False)

Part of the openerp.py file related to it

'depends': ['base', 'construction_plot_4devnet', 'bh_custom', 'report'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/bh_customcustom.xml',
        'sequences.xml',
        'report/form_download_report.xml',
        'security/security_groups.xml',
        'templates.xml',
    ],

    'images': [
        'img/firstpage.png',
    ],

The report file:

<openerp>
<data>
    <report
        id="report_form_download"
        model="formdownload"
        string="Form Download Report"
        name="bh_customcustom.report_formdownload_view"
        file="bh_customcustom.report_formdownload_view"
        report_type="qweb-pdf"/>

    <record id="paperformat_formdownloadcheck" model="report.paperformat">
        <field name="name">Form Download Check</field>
        <field name="default" eval="True"/>
        <field name="format">custom</field>
        <field name="page_height">80</field>
        <field name="page_width">175</field>
        <field name="orientation">Portrait</field>
        <field name="margin_top">3</field>
        <field name="margin_bottom">3</field>
        <field name="margin_left">3</field>
        <field name="margin_right">3</field>
        <field name="header_line" eval="False"/>
        <field name="header_spacing">3</field>
        <field name="dpi">80</field>
    </record>

    <template id="report_formdownload_view">
        <t t-call="report.html_container">
            <t t-foreach="docs" t-as="doc">
                <t t-call="report.external_layout">
                    <div class="page">
                        <!--<img class="img img-responsive" src="/bh_customcustom/static/src/img/firstpage.png"-->
                        <!--style="max-height: 45px"/>-->
                        <img src="/static/src/img/firstpage.png"
                        style="max-height: 45px"/>
                    </div>
                </t>
            </t>
        </t>
    </template>
</data>
</openerp>

Solution

  • The problem was from my path on the view xml file cos i edited the form view now and it's picking the exact method that it suppose to pick after i reviewed the path. Moreso, the method that would pull the report should be like this:

    @api.multi
        def action_formdownloader(self):
            return self.env['report'].get_action(self, 'bh_customcustom.report_formdownload_view')