You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:09:03