【问题标题】:Qweb Report Template Odoo 10Qweb 报告模板 Odoo 10
【发布时间】:2017-03-07 16:44:50
【问题描述】:

如何在打印销售发票时显示字段,如果报表是从会计打印,如何隐藏该字段?有没有办法从 qweb 模板访问活动模块?类似于下面的代码:

<template id="report_invoice_document" inherit_id="account.report_invoice_document">
    <xpath expr="//div[@class='page']" position="replace">
        <div t-if="o.active_module == account" class="page">
                <!-- Hide Here -->
        </div>
        <div t-else="" class="page">
                <!-- Show Here -->
        </div>
    </xpath>
</template>

【问题讨论】:

  • 您可以尝试使用用户组。也许销售用户没有会计用户组。所以试试o.env.user.has_group('account.group_account_user')
  • 而且我认为没有机会找出在报告打印的上下文中使用了哪个模块或根菜单。
  • 如何打印销售发票?
  • 目前在销售和会计中,同一张发票打印的字段相同,但我只需要打印会计中的一些字段。我上面显示的代码只是一个示例,但它不起作用。
  • 在渲染报表脚本时使用活动模型更新您的上下文。

标签: odoo qweb


【解决方案1】:

您可以创建自定义报告或使用自定义报告覆盖现有报告。在 python 代码中评估活动模型并将参数传递给您的报告以进行 qweb 评估。您可以像您建议的那样向您的 qweb 传递一个参数,然后使用您在建议的代码中使用的完全相同的逻辑。

import logging
_logger = logging.getLogger(__name__)

class YourReport(models.AbstractModel):
    _name = 'report.your_addon.report_template_id'

    @api.multi
    def render_html(self, data=None):
        _logger.info("RUNNING REPORT")
        report_obj = self.env['report']
        report = report_obj._get_report_from_name('your_addon.report_template_id')
        docs = self.env.context.get('active_ids')   
        docargs = {
            'doc_model': report.model,
            'active_model': self.env.context.get('active_model'),
            'docs': docs,
        }
        return report_obj.render('your_addon.report_template_id', docargs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多