Odoo15如何将res.partner自定义字段address_suffix加入account.move及PDF报表
解决Odoo 15发票PDF报表添加客户地址附加信息的问题
方案1:直接在自定义PDF报表模板中调用字段
如果仅需在PDF报表中显示address_suffix,无需在发票编辑视图展示,直接修改你的自定义QWeb报表模板即可:
- 找到报表中渲染客户地址的代码段,通常类似:
<div class="customer-address"> <t t-if="o.partner_id.street"> <span t-esc="o.partner_id.street"/> </t> <t t-if="o.partner_id.zip or o.partner_id.city"> <span t-esc="o.partner_id.zip"/> <span t-esc="o.partner_id.city"/> </t> </div>
- 在现有地址字段后追加
address_suffix的渲染逻辑:
<div class="customer-address"> <t t-if="o.partner_id.street"> <span t-esc="o.partner_id.street"/> </t> <t t-if="o.partner_id.zip or o.partner_id.city"> <span t-esc="o.partner_id.zip"/> <span t-esc="o.partner_id.city"/> </t> <!-- 新增地址附加信息 --> <t t-if="o.partner_id.address_suffix"> <br/> <span t-esc="o.partner_id.address_suffix"/> </t> </div>
PDF渲染时,只要客户记录的address_suffix有值,就会自动显示在地址区域。
方案2:扩展account.move字段(如需在发票编辑视图同步展示)
如果需要在发票的表单/编辑视图中也显示该附加信息,需先给account.move添加关联字段,再调整报表:
- 在自定义模块的
models/account_move.py中添加字段:
from odoo import models, fields class AccountMove(models.Model): _inherit = 'account.move' address_suffix = fields.Char(related='partner_id.address_suffix', string='地址附加信息', readonly=True)
- 更新模块视图文件(如
views/account_move_views.xml),在表单视图的客户地址区域插入该字段:
<record id="view_account_move_form_inherit" model="ir.ui.view"> <field name="name">account.move.form.inherit</field> <field name="model">account.move</field> <field name="inherit_id" ref="account.view_move_form"/> <field name="arch" type="xml"> <!-- 找到客户街道字段的位置,在其后插入 --> <xpath expr="//field[@name='street']" position="after"> <field name="address_suffix" placeholder="地址附加信息"/> </xpath> </field> </record>
- 此时报表模板中可直接调用
o.address_suffix渲染:
<t t-if="o.address_suffix"> <br/> <span t-esc="o.address_suffix"/> </t>
收尾操作
- 升级你的自定义模块,确保代码生效
- 打开任意发票,选择带有
address_suffix值的客户,预览PDF报表确认附加信息已正常显示
内容的提问来源于stack exchange,提问作者holthaum
相关产品推荐
相关产品推荐

