37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
# 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
|
|
from trytond.tools import grouped_slice
|
|
|
|
|
|
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
|
|
for sub_accounts in grouped_slice(accounts):
|
|
sub_account_ids = [a.id for a in sub_accounts]
|
|
journals = Journal.search([
|
|
('bank_account', 'in', sub_account_ids),
|
|
])
|
|
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))
|