This question has been flagged
1 Reply
7949 Views

Hello everyone,
Based on some samples, I was abble to create a sample pdf report.
Now, I can see the print option on top my form.

Since this is a specific form, I do not want to have that "print" option on top of the form. I want to have a "Print" button instead.

1. So, how can I remove that print button on top of the form?
2. How can I pass a function/action for the print button in ways it prints the report I have created?
I already have the button "Print" on the form...

- I added the button to the form:

        <header>
          <button name="print_report" string="Print" states="confirm" type="object"/>
        </header>

       
- The report code on the xml:

        <template id ="mymodule.report_nametouseontemplate">
            <t t-call="web.html_container">
                <t t-foreach ="docs" t-as ="o">
                    <t t-call ="web.external_layout">
                        <div class="page">
                            <div class="oe_structure"/>
                            <!-- REPORT STRUCTURE STARTS HERE -->
                            <h1>Test Report Top Level Header</h1>
                            <h2>Test Report Item: <span t-field="o.name"/></h2>
                        </div>
                    </t>
                </t>
            </t>
        </template>


        <report
            id="report_test_report"
            string="Test Report"
            model="mymodule.moduletoprintfrom"
            report_type="qweb-pdf"
            name="mymodule.report_nametouseontemplate"
            file="file.nametoprint"
        />       


With this code I can sucessfully print the desired report, but only from the "print" option from the top of the form.
Now, I need to remove this "print" option from the top and add this print function to the "Print" button I have added to the form.

Another question I have:

Under template tag, I have the id: <template id ="mymodule.report_nametouseontemplate">
Under report tag, I have the name: <.... name="mymodule.report_nametouseontemplate">

Do I have to use the same exact value for "id" and "name" for the same report?
And by the way, feel free to instruct me on the best approach on building reports.

Thank you very much

Best regards

Paulo

Avatar
Discard
Best Answer

Hello for remove the "Print" option you have to do change like

<report id="report_test_report"
            string="Test Report"
            model="mymodule.moduletoprintfrom"
            report_type="qweb-pdf"
            name="mymodule.report_nametouseontemplate"
            menu="False"
            file="file.nametoprint"/>       


Then, you want print the report from button so you have to do python code like..

@api.multi

def print_report(self):

     return self.env.ref('your_module_name.report_test_report').report_action(self)


=> for your another question "Do I have to use the same exact value for "id" and "name" for the same report? 

", yes you have to give the template_id reference into <report> tag's name attribute for the same report. Here you are doing that is correct.

Avatar
Discard
Author

@Mutil, thank you my friend.

I can't believe it was so simple...

It was some how tricky for me because had already tried the self.env.ref('your_module_name.report_test_report').report_action(self).

Problem is, I was passing the "report_name" instead of "report id" and was getting a "'ir.ui.view' object has no attribute 'report_action'".

Saved my weekend

Best regards

Paulo