mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[fix] account_statement_ext: trigger related fields
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
##############################################################################
|
||||
|
||||
{'name': "Bank statement extension and profiles",
|
||||
'version': '1.3.3',
|
||||
'version': '1.3.4',
|
||||
'author': 'Camptocamp',
|
||||
'maintainer': 'Camptocamp',
|
||||
'category': 'Finance',
|
||||
@@ -79,7 +79,7 @@
|
||||
'security/ir.model.access.csv',
|
||||
'security/ir_rule.xml'],
|
||||
'demo_xml': [],
|
||||
'test': [],
|
||||
'test': ['test/test_profile_related_fields.yml'],
|
||||
'installable': True,
|
||||
'images': [],
|
||||
'auto_install': False,
|
||||
|
||||
@@ -159,6 +159,23 @@ class AccountBankStatement(Model):
|
||||
|
||||
return profile_ids[0] if profile_ids else False
|
||||
|
||||
def _get_statement_from_profile(self, cr, uid, profile_ids, context=None):
|
||||
"""Stored function field trigger.
|
||||
|
||||
Weirdness warning: we are in the class account.bank.statement, but
|
||||
when the ORM calls this, self is an account.statement.profile.
|
||||
|
||||
Returns a list of account.bank.statement ids to recompute.
|
||||
|
||||
"""
|
||||
triggered = []
|
||||
for profile in self.browse(cr, uid, profile_ids, context=context):
|
||||
triggered += [st.id for st in profile.bank_statement_ids]
|
||||
return triggered
|
||||
|
||||
def _us(self, cr, uid, ids, context=None):
|
||||
return ids
|
||||
|
||||
_columns = {
|
||||
'profile_id': fields.many2one(
|
||||
'account.statement.profile',
|
||||
@@ -166,28 +183,41 @@ class AccountBankStatement(Model):
|
||||
required=True,
|
||||
states={'draft': [('readonly', False)]}),
|
||||
'credit_partner_id': fields.related(
|
||||
'profile_id',
|
||||
'partner_id',
|
||||
type='many2one',
|
||||
relation='res.partner',
|
||||
string='Financial Partner',
|
||||
store=True,
|
||||
readonly=True),
|
||||
'profile_id',
|
||||
'partner_id',
|
||||
type='many2one',
|
||||
relation='res.partner',
|
||||
string='Financial Partner',
|
||||
store={
|
||||
'account.bank.statement': (_us, ['profile_id'], 10),
|
||||
'account.statement.profile': (
|
||||
_get_statement_from_profile, ['partner_id'], 10),
|
||||
},
|
||||
readonly=True),
|
||||
'balance_check': fields.related(
|
||||
'profile_id',
|
||||
'balance_check',
|
||||
type='boolean',
|
||||
string='Balance check',
|
||||
store=True,
|
||||
readonly=True),
|
||||
'profile_id',
|
||||
'balance_check',
|
||||
type='boolean',
|
||||
string='Balance check',
|
||||
store={
|
||||
'account.bank.statement': (_us, ['profile_id'], 10),
|
||||
'account.statement.profile': (
|
||||
_get_statement_from_profile, ['balance_check'], 10),
|
||||
},
|
||||
readonly=True
|
||||
),
|
||||
'journal_id': fields.related(
|
||||
'profile_id',
|
||||
'journal_id',
|
||||
type='many2one',
|
||||
relation='account.journal',
|
||||
string='Journal',
|
||||
store=True,
|
||||
readonly=True),
|
||||
'profile_id',
|
||||
'journal_id',
|
||||
type='many2one',
|
||||
relation='account.journal',
|
||||
string='Journal',
|
||||
store={
|
||||
'account.bank.statement': (_us, ['profile_id'], 10),
|
||||
'account.statement.profile': (
|
||||
_get_statement_from_profile, ['journal_id'], 10),
|
||||
},
|
||||
readonly=True),
|
||||
'period_id': fields.many2one(
|
||||
'account.period',
|
||||
'Period',
|
||||
|
||||
78
account_statement_ext/test/test_profile_related_fields.yml
Normal file
78
account_statement_ext/test/test_profile_related_fields.yml
Normal file
@@ -0,0 +1,78 @@
|
||||
-
|
||||
In order to test the related fields in the profile, I first need to create a profile
|
||||
-
|
||||
!record {model: account.statement.profile, id: profile_test1}:
|
||||
name: Bank EUR Profile
|
||||
journal_id: account.bank_journal
|
||||
commission_account_id: account.a_expense
|
||||
company_id: base.main_company
|
||||
partner_id: base.res_partner_1
|
||||
journal_id: account.check_journal
|
||||
balance_check: True
|
||||
-
|
||||
I create a second profile
|
||||
-
|
||||
!record {model: account.statement.profile, id: profile_test2}:
|
||||
name: Second profile
|
||||
journal_id: account.bank_journal
|
||||
commission_account_id: account.a_expense
|
||||
company_id: base.main_company
|
||||
partner_id: base.res_partner_3
|
||||
journal_id: account.bank_journal
|
||||
balance_check: True
|
||||
-
|
||||
Now I create a statement.
|
||||
-
|
||||
!record {model: account.bank.statement, id: statement_test1}:
|
||||
name: Statement 1
|
||||
profile_id: profile_test1
|
||||
company_id: base.main_company
|
||||
-
|
||||
Now I check that the related data come from the profile
|
||||
-
|
||||
!assert {model: account.bank.statement, id: statement_test1, string: Initial data should come from the profile}:
|
||||
- balance_check is True
|
||||
- credit_partner_id.id == _ref('base.res_partner_1')
|
||||
- journal_id.id == _ref('account.check_journal')
|
||||
-
|
||||
Now I set the balance flag to False in the profile
|
||||
-
|
||||
!record {model: account.statement.profile, id: profile_test1}:
|
||||
balance_check: False
|
||||
-
|
||||
It should be false in the statement as well.
|
||||
-
|
||||
!assert {model: account.bank.statement, id: statement_test1, string: We should not check the balance}:
|
||||
- balance_check is False
|
||||
-
|
||||
Now I change the journal in the profile
|
||||
-
|
||||
!record {model: account.statement.profile, id: profile_test1}:
|
||||
journal_id: account.cash_journal
|
||||
-
|
||||
The journal should propagate to the statement
|
||||
-
|
||||
!assert {model: account.bank.statement, id: statement_test1, string: The journal should be updated}:
|
||||
- journal_id.id == _ref('account.cash_journal')
|
||||
-
|
||||
Now I change the partner in the profile
|
||||
-
|
||||
!record {model: account.statement.profile, id: profile_test1}:
|
||||
partner_id: base.res_partner_2
|
||||
-
|
||||
The partner should propagate to the statement
|
||||
-
|
||||
!assert {model: account.bank.statement, id: statement_test1, string: The partner should be updated}:
|
||||
- credit_partner_id.id == _ref('base.res_partner_2')
|
||||
-
|
||||
Now I change the profile associated to the statement.
|
||||
-
|
||||
!record {model: account.bank.statement, id: statement_test1}:
|
||||
profile_id: profile_test2
|
||||
-
|
||||
The statement should receive information from the new statement.
|
||||
-
|
||||
!assert {model: account.bank.statement, id: statement_test1, string: All information should be probagated from the new profile}:
|
||||
- balance_check is True
|
||||
- credit_partner_id.id == _ref('base.res_partner_3')
|
||||
- journal_id.id == _ref('account.bank_journal')
|
||||
Reference in New Issue
Block a user