Odoo 8客户发票页面如何显示税率百分比而非税种名称
Odoo 8 客户发票页面显示税率百分比实现方案
共有两种可落地的实现方式,可根据自身需求选择:
方案1:仅修改客户发票页面的税率展示(不影响其他模块的税种名称显示)
通过继承视图修改客户发票行的列表字段展示逻辑,步骤如下:
- 新建自定义模块,在
__openerp__.py中声明依赖account模块 - 在模块的xml视图文件中添加继承代码,覆盖原发票行的税率字段展示:
<openerp> <data> <record id="invoice_form_inherit_tax_display" model="ir.ui.view"> <field name="name">account.invoice.form.tax.percent</field> <field name="model">account.invoice</field> <field name="inherit_id" ref="account.invoice_form"/> <field name="arch" type="xml"> <xpath expr="//field[@name='invoice_line']/tree/field[@name='invoice_line_tax_id']" position="replace"> <field name="invoice_line_tax_id" widget="many2many_tags" string="税率"> <tree> <field name="amount" string="税率" widget="percent"/> </tree> </field> </xpath> </field> </record> <!-- 同时修改列表视图的展示 --> <record id="invoice_tree_inherit_tax_display" model="ir.ui.view"> <field name="name">account.invoice.tree.tax.percent</field> <field name="model">account.invoice</field> <field name="inherit_id" ref="account.invoice_tree"/> <field name="arch" type="xml"> <xpath expr="//field[@name='amount_tax']" position="before"> <field name="invoice_line_tax_id" widget="many2many_tags" string="税率"> <tree> <field name="amount" string="税率" widget="percent"/> </tree> </field> </xpath> </field> </record> </data> </openerp>
- 升级自定义模块后即可生效,发票页面的税率会直接显示税种配置中的百分比数值。
方案2:全局修改税种的展示逻辑(所有模块调用税种时都显示百分比)
重写account.tax模型的name_get方法,统一返回税率百分比:
- 在自定义模块的py文件中添加如下代码:
from openerp.osv import fields, osv class account_tax(osv.osv): _inherit = 'account.tax' def name_get(self, cr, uid, ids, context=None): if not ids: return [] res = [] for tax in self.browse(cr, uid, ids, context=context): # 仅显示百分比,也可调整为 f"{tax.amount*100}% {tax.name}" 同时显示名称和税率 res.append((tax.id, "{}%".format(tax.amount * 100))) return res
- 在模块的xml中无需额外修改视图,升级模块后所有调用税种的地方都会显示税率百分比。
注意:两种方案都建议通过自定义模块实现,不要直接修改Odoo原生代码,避免后续版本升级覆盖自定义内容。
内容的提问来源于stack exchange,提问作者kimitch
相关产品推荐
相关产品推荐

