Я добавляю поле в account.payment.

bank_id = fields.Many2one('res.bank', string="Bank")

Когда я нажимаю кнопку регистрации платежа в account.invoice, открывается мастер регистрации платежей.

Я хочу, чтобы bank_id был невидимым, исходя из условия

journal_id.type not in bank

Как это можно в одоо ??

В xml я добавляю такое условие.

attrs="{'invisible': [('journal_id.type', 'not in', ['bank'])]}"

Как исправить состояние ??

0
code_explorer 19 Июн 2017 в 08:46

1 ответ

Лучший ответ

В этой ситуации вы не можете применить прямой attrs, поэтому вам нужно взять одно логическое поле вычисления, чтобы проверить тип журнала и на основе этого поля сделать bank_id видимым или невидимым

В account.payment

from odoo import models, fields, api, _

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

     bank_id = fields.Many2one('res.bank', string="Bank")
     check_journal = fields.Boolean(string="Journal Type", compute='_check_journal_type')

     @api.depends('journal_id')
     def _check_journal_type(self):
         if self.journal_id.type == 'bank':
             self.check_journal = False
         else:
             self.check_journal = True

В виде account.payment

<field name="check_journal" invisible="1"/>
<field name="bank_id" attrs="{'invisible': [('check_journal', '=', True)]}"/>
4
Alpesh Valaki 19 Июн 2017 в 09:49