# This file is part of Tryton.  The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

from trytond.i18n import gettext
from trytond.modules.bank.exceptions import AccountValidationError
from trytond.pool import Pool, PoolMeta


class Account(metaclass=PoolMeta):
    __name__ = 'bank.account'

    @classmethod
    def validate_fields(cls, accounts, field_names):
        super().validate_fields(accounts, field_names)
        cls.check_currency_statement_journal(accounts, field_names)

    @classmethod
    def check_currency_statement_journal(cls, accounts, field_names):
        pool = Pool()
        Journal = pool.get('account.statement.journal')
        if field_names and 'currency' not in field_names:
            return
        journals = Journal.search([
                ('bank_account', 'in', accounts),
                ])
        for journal in journals:
            if (journal.currency != journal.bank_account.currency
                    and journal.bank_account.currency):
                raise AccountValidationError(
                    gettext('account_statement.msg_bank_account_currency',
                        bank_account=journal.bank_account.rec_name,
                        currency=journal.currency.rec_name,
                        journal=journal.rec_name))
