Odoo 10 QWeb PDF销售订单报表:如何获取company_registry字段
在Odoo 10 QWeb PDF销售订单报表中获取company_registry字段的方法
嘿,我来帮你搞定这个问题!company_registry是res.company模型下的字段,而销售订单(sale.order)通过company_id关联到你的公司主体,所以只要在QWeb模板里通过关联关系正确调用它就行。下面是具体步骤和排查要点:
1. 先确认字段值已填写
别着急改代码,先检查你的公司是否已经设置了这个值:
- 进入Odoo后台,点击「设置」→「公司」→ 选中你的公司点击「编辑」
- 找到「公司注册编号」字段,填入对应的信息并保存。如果这里是空的,报表里自然显示不出内容。
2. 在QWeb模板中正确调用字段
销售订单PDF报表的默认模板是sale.report_saleorder_document,推荐用自定义模块继承模板的方式修改(避免直接改核心模块,防止升级后丢失),当然也可以直接修改核心模板(不推荐):
方式一:自定义模块继承模板(推荐)
在你的自定义模块中创建XML文件,写入如下代码:
<odoo> <data> <template id="custom_sale_report_add_registry" inherit_id="sale.report_saleorder_document"> <!-- 定位到公司名称所在的区域,把注册信息插入进去 --> <xpath expr="//div[@class='col-xs-6' and contains(., o.company_id.name)]" position="inside"> <t t-if="o.company_id.company_registry"> <p style="margin-top:6px;"><strong>Company Registry:</strong> <t t-esc="o.company_id.company_registry"/></p> </t> </xpath> </template> </data> </odoo>
写完后升级你的自定义模块,再去「设置→技术→参数→系统参数」点击「清除缓存」,确保新模板生效。
方式二:直接修改核心模板(不推荐)
找到sale模块下的报表模板XML,在你想显示注册信息的位置(比如公司名称下方)添加:
<t t-if="o.company_id.company_registry"> <p><strong>Company Registry:</strong> <t t-esc="o.company_id.company_registry"/></p> </t>
这里的o代表当前的销售订单对象,o.company_id就是关联的公司,再点出company_registry字段即可。用t-if判断是为了避免字段为空时显示多余的标签。
3. 常见问题排查
如果还是没显示,检查这几点:
- 字段名拼写是否正确:是
company_registry,别写成company_registration或者其他变体 - 关联路径是否正确:别误用
o.partner_id.company_registry,partner_id是你的客户,company_id才是你自己的公司 - 权限问题:确保当前用户有权限查看
res.company的company_registry字段(管理员权限默认没问题,普通用户需要在权限组里添加该字段的访问权限) - 缓存没清:修改模板后必须清除Odoo缓存,不然旧模板会继续生效
内容的提问来源于stack exchange,提问作者M.E.
相关产品推荐
相关产品推荐

