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

Odoo 10.0表单视图如何分别显示客户/供应商发票?

解决Odoo 10.0中客户/供应商表单分别显示对应发票的问题

要实现客户表单仅显示客户发票(out_invoice类型)、供应商表单仅显示供应商发票(in_invoice类型),你可以通过视图继承分别设置字段domain的方式来实现,这是最直接且可靠的方案,具体步骤如下:

1. 保留基础字段定义

你现有的字段定义可以保留基础的state='open'过滤,后续在视图中补充发票类型的过滤条件:

invoice_id = fields.Many2one('account.invoice', 'Invoice', domain=[('state','=','open')])

2. 继承客户表单视图,添加字段并设置专属Domain

在你的模块XML文件中,继承Odoo默认的客户表单视图,将invoice_id字段添加到合适位置,并限制仅显示客户发票:

<record id="view_partner_customer_invoice_field" model="ir.ui.view">
    <field name="name">res.partner.customer.form.invoice.field</field>
    <field name="model">res.partner</field>
    <!-- 继承默认客户表单视图 -->
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <!-- 这里以添加在邮箱字段后为例,你可以根据需求调整xpath定位 -->
        <xpath expr="//field[@name='email']" position="after">
            <field name="invoice_id" domain="[('state','=','open'), ('type','=','out_invoice')]"/>
        </xpath>
    </field>
</record>

3. 继承供应商表单视图,添加字段并设置专属Domain

同样在XML中,继承默认的供应商表单视图,添加字段并限制仅显示供应商发票:

<record id="view_partner_supplier_invoice_field" model="ir.ui.view">
    <field name="name">res.partner.supplier.form.invoice.field</field>
    <field name="model">res.partner</field>
    <!-- 继承默认供应商表单视图 -->
    <field name="inherit_id" ref="base.view_partner_supplier_form"/>
    <field name="arch" type="xml">
        <!-- 同样可根据需求调整字段位置 -->
        <xpath expr="//field[@name='email']" position="after">
            <field name="invoice_id" domain="[('state','=','open'), ('type','=','in_invoice')]"/>
        </xpath>
    </field>
</record>

额外说明

  • 字段位置调整:你可以修改xpath的expr值,将字段放在表单的任意位置,比如某个分组(group)内,只需定位到对应的元素即可。
  • 动态Domain备选方案:如果想通过字段本身的动态Domain实现,也可以用lambda表达式根据当前伙伴类型过滤,但这种方式对新建记录的上下文依赖较强,不如视图层面的控制直观:
    invoice_id = fields.Many2one('account.invoice', 'Invoice', domain=lambda self: [
        ('state', '=', 'open'),
        ('type', '=', 'out_invoice' if self.customer else 'in_invoice')
    ])
    
    这种方式下,打开现有客户/供应商记录时能正确过滤,但新建记录时需要确保上下文传递了customer或supplier的默认值,否则可能不符合预期。

内容的提问来源于stack exchange,提问作者bjr_tlb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:17:31