Odoo View继承:如何在“帐户付款”表单中修改“付款日记帐”字段的域

时间:2018-02-11 10:39:30

标签: odoo odoo-10

我有一个自定义的Odoo模块,其中包括记录付款。为此,我使用会计模块中的付款表单。

我想允许用户根据account.journal实体上的标记过滤付款日记下拉列表中的选项,因此我按如下方式扩展了实体:

class AccountJournal(models.Model):
  _inherit = 'account.journal'
  available_as_payment_method = fields.Boolean(string='Available as payment method')

...并在用于编辑付款日记帐的视图中添加了该字段:

<field name="available_as_booking_payment_method"/>

此功能按预期工作,该字段存在于数据库中。

最后,我延长了付款方式:

<record model="ir.ui.view" id="payment_form_update_form">
  <field name="name">payment_form_update</field>
  <field name="model">account.payment</field>
  <field name="inherit_id" ref="account.view_account_payment_form" />
  <field name="type">form</field>
  <field name="arch" type="xml">
    <xpath expr="//field[@name='journal_id']" position="attributes">
     <attribute name="domain">[('available_as_booking_payment_method', '=', True)]</attribute>
     <!-- <attribute name="invisible">1</attribute> -->
    </xpath>
  </field>
</record>

出于某种原因,如果我修改域属性,则不会应用它。屏幕截图显示了Odoo调试弹出窗口中的现有域 - 这与我的视图或默认视图保持不变。

如果我应用invisible标志,该字段将消失,因此我知道视图和xpath是正确的。

感谢有关域名未被应用的原因的任何帮助。

提前致谢

The default Odoo payment form (account.view_account_payment_form) The debug popup for the Pament Journal field

1 个答案:

答案 0 :(得分:0)

由于 journal_id 在.py文件中有域定义,您可以尝试覆盖.py文件中的域,如下所示:

journal_id = fields.Many2one(domain=[('available_as_booking_payment_method', '=', True),('type', 'in', ('bank', 'cash'))])

我希望这个答案对你有帮助。