You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Odoo视图继承:如何修改付款表单中支付日记账字段的域

实现Odoo付款表单中按自定义Journal标识筛选日记账下拉选项

嘿,我来帮你搞定这个Odoo付款表单的日记账筛选问题!你已经完成了account.journal的字段扩展和视图配置,接下来只需要针对付款表单里的日记账下拉选项添加筛选条件就行,这里给你两种实用的实现方式:

1. 全局生效:通过模型层修改字段Domain

如果你希望所有用到account.payment的场景(比如创建付款、批量付款等)都应用这个筛选规则,直接继承account.payment模型,修改journal_id字段的Domain即可:

from odoo import models, fields

class AccountPayment(models.Model):
    _inherit = 'account.payment'

    journal_id = fields.Many2one(
        'account.journal',
        # 保留原有的银行/现金日记账筛选,加上你的自定义标识条件
        domain="[('type', 'in', ('bank', 'cash')), ('你的自定义字段名', '=', True)]",
        string="Payment Journal"
    )

2. 仅特定视图生效:通过视图层修改

如果你只想在「创建付款」这个表单视图里生效,就继承对应的表单视图,调整journal_id字段的Domain属性:

假设你要继承的原视图是官方会计模块的account.view_account_payment_form,编写如下XML代码:

<odoo>
    <record id="view_account_payment_form_custom_filter" model="ir.ui.view">
        <field name="name">account.payment.form.custom.filter</field>
        <field name="model">account.payment</field>
        <field name="inherit_id" ref="account.view_account_payment_form"/>
        <field name="arch" type="xml">
            <!-- 定位到journal_id字段,修改它的domain属性 -->
            <field name="journal_id" position="attributes">
                <attribute name="domain">[('type', 'in', ('bank', 'cash')), ('你的自定义字段名', '=', True)]</attribute>
            </field>
        </field>
    </record>
</odoo>

几个关键注意点

  • 记得把代码里的你的自定义字段名替换成你实际在account.journal上添加的字段名称(比如is_payment_allowed
  • 如果你的自定义字段是选择型、多选型,要对应调整Domain里的条件,比如字段是枚举值,就写成('your_field', '=', 'target_value')
  • 修改完成后,一定要升级你的自定义模块,让配置生效
  • 测试的时候多切换不同用户权限,确保筛选后的日记账能正常显示和选择

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

火山引擎 最新活动