2017-06-19 1 views
0

J'ajoute un champ dans account.payment.Comment invisible un champ basé sur une condition complexe dans odoo10?

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

quand je clique sur le bouton de paiement de registre account.invoice il est ouvert un assistant de paiement de registre.

Je veux invisible le bank_id en fonction de la condition

journal_id.type not in bank 

Comment est-il possible dans Odoo ??

dans xml J'ajoute une condition comme celle-ci.

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

Comment corriger la condition?

Répondre

2

dans cette situation, vous ne pouvez pas appliquer directement attrs si vous devez prendre un Compute champ booléen pour vérifier le type de revue et basé sur ce champ rendre bank_id visible ou invisible

dans 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 

en compte.paiement voir

<field name="check_journal" invisible="1"/> 
<field name="bank_id" attrs="{'invisible': [('check_journal', '=', True)]}"/>