Передача контекста в отчет qweb для управления видимостью таблицы - odoo

Как мы можем передать значение контекста в отчет qweb, чтобы я мог контролировать видимость таблиц. У меня есть отчет qweb с большим количеством таблиц. В зависимости от списка выбора, я хочу контролировать представление этих таблиц в отчете qweb. Таким образом, мой вариант был контролировать с помощью контекста. Но не нашел способа передать контекст. Если есть другие мнения, пожалуйста, поделитесь.

2 ответа

В вашем вопросе не очень понятно, что именно вы хотите. Например, я не знаю, что вы подразумеваете под "В зависимости от списка выбора", поэтому я предполагаю, что у вас есть мастер, который предлагает пользователю выбрать некоторые параметры. Если это так, вы можете передать переменную выбора в словаре данных в операторе возврата вашей функции печати.

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)

Это передает выбор пользователя в data['form']. Затем вы можете получить доступ к выборкам в qweb как к данным ['form']['date_start']

Сначала создайте класс парсера

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..

Затем определите другой класс

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

Затем вы можете вызвать метод localcontext таким образом

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

Ссылайтесь на наш блог в отчете Qweb

Другие вопросы по тегам