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

如何在Account Payment弹窗表单的Account Journal下拉框隐藏部分选项?

解决Account Journal下拉框过滤不生效的问题

你的代码直接重写journal_id字段的domain没生效,核心原因是Odoo原生的account.payment模型会通过动态逻辑生成journal_id的筛选条件(比如根据付款类型、当前公司等动态调整),静态设置的domain会被覆盖。

推荐通过重写Odoo原生的_get_journal_domain方法来实现过滤,这是官方设计的用于自定义journal筛选逻辑的入口:

from odoo import models

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

    def _get_journal_domain(self):
        # 先获取原生的domain条件
        domain = super()._get_journal_domain()
        # 添加你需要的名称过滤条件,合并原有规则
        domain += [('name', 'in', ('Cash','Insurance','Bank', 'UPI Payment'))]
        return domain

额外注意事项

  • 如果系统启用了多语言,直接用name过滤可能因翻译失效,建议改用journal的xml_id或数据库ID来筛选,示例:
    def _get_journal_domain(self):
          domain = super()._get_journal_domain()
          # 通过xml_id获取指定journal的ID
          allowed_journal_ids = [
              self.env.ref('account.journal_cash').id,
              self.env.ref('your_module.journal_insurance').id,
              self.env.ref('account.journal_bank').id,
              self.env.ref('your_module.journal_upi_payment').id
          ]
          domain += [('id', 'in', allowed_journal_ids)]
          return domain
    
  • 确保你的模块依赖account模块,在__manifest__.py中添加'depends': ['account']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:57:12