OmaL
OmaL

Reputation: 5044

Passing context to qweb report for managing table visibility - odoo

How can we pass context value to qweb report so that i can control the visibility of tables. I have a qweb report with lot of tables. Depending on the selection list, i want to control the view of these tables in qweb report. So my option was to control using context. But didn't find any way to pass the context. If there is any other opinion, please share.

Upvotes: 0

Views: 3857

Answers (2)

Cyrusville
Cyrusville

Reputation: 305

Your question is not very clear on what exactly you want. For instance, I dont know what you mean by "Depending on the selection list", so I assume you have a wizard that prompts the user to select some options. If that is the case, you can pass the selection variable inside the data dictionary in the return statement of your print function.

def print_report(self, cr, uid, ids, context=None):
        if context is None:
            context = {}
        datas = {'ids': context.get('active_ids', [])}
        res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_ids'], context=context)
        res = res and res[0] or {}
        datas['form'] = res
        if res.get('id',False):
            datas['ids']=[res['id']]
        return self.pool['report'].get_action(cr, uid, [], 'point_of_sale.report_detailsofsales', data=datas, context=context)

This passes the user selection under data['form']. You can then access the selections in qweb as data['form']['date_start']

Upvotes: 1

Create parser class first

import time
from openerp.osv import osv
from openerp.report import report_sxw

class sale_quotation_report(report_sxw.rml_parse):

    def __init__(self, cr, uid, name, context): 
        super(sale_quotation_report, self).__init__(cr, uid, name, context=context)
            self.localcontext.update({
                    ‘key’: value,
                    ‘function_name’: self.function_name,
            })

    def function_name(self):
        ### add some code if required..

Then define another class

class report_saleorderqweb(osv.AbstractModel):
    _name = ‘module_name.report_sale_order_qweb’
    _inherit = ‘report.abstract_report’
    _template = ‘module_name.report_sale_order_qweb’
    _wrapped_report_class = sale_quotation_report

Then you can call the localcontext method in that way

<span t-esc=”function_name(parameter)”/>

Refer our blog on Qweb report

Upvotes: 1

Related Questions