changeset f025387c6b6b in modules/account_statement_rule:default
details:
https://hg.tryton.org/modules/account_statement_rule?cmd=changeset&node=f025387c6b6b
description:
Test statement rule with bank account
issue11009
review376121002
diffstat:
setup.py | 5 +-
tests/scenario_account_statement_rule_keyword_bank_account.rst | 156
++++++++++
tests/test_account_statement_rule.py | 5 +
3 files changed, 165 insertions(+), 1 deletions(-)
diffs (188 lines):
diff -r 9f99341984e7 -r f025387c6b6b setup.py
--- a/setup.py Thu Dec 16 00:05:10 2021 +0100
+++ b/setup.py Thu Dec 16 00:06:04 2021 +0100
@@ -64,7 +64,10 @@
requires.append(get_require_version('trytond_%s' % dep))
requires.append(get_require_version('trytond'))
-tests_require = [get_require_version('proteus')]
+tests_require = [
+ get_require_version('proteus'),
+ get_require_version('trytond_bank'),
+ ]
dependency_links = []
if minor_version % 2:
dependency_links.append(
diff -r 9f99341984e7 -r f025387c6b6b
tests/scenario_account_statement_rule_keyword_bank_account.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/scenario_account_statement_rule_keyword_bank_account.rst Thu Dec
16 00:06:04 2021 +0100
@@ -0,0 +1,156 @@
+====================================================
+Account Statement Rule Keyword Bank Account Scenario
+====================================================
+
+Imports::
+
+ >>> import datetime
+ >>> from decimal import Decimal
+ >>> from proteus import Model
+ >>> from trytond.tests.tools import activate_modules
+ >>> from trytond.modules.company.tests.tools import (
+ ... create_company, get_company)
+ >>> from trytond.modules.account.tests.tools import (
+ ... create_fiscalyear, create_chart, get_accounts)
+ >>> from trytond.modules.account_invoice.tests.tools import (
+ ... set_fiscalyear_invoice_sequences)
+ >>> today = datetime.date.today()
+
+Activate modules::
+
+ >>> config = activate_modules(['account_statement_rule', 'bank'])
+
+ >>> AccountJournal = Model.get('account.journal')
+ >>> Bank = Model.get('bank')
+ >>> BankAccount = Model.get('bank.account')
+ >>> Party = Model.get('party.party')
+ >>> Rule = Model.get('account.statement.rule')
+ >>> Sequence = Model.get('ir.sequence')
+ >>> SequenceType = Model.get('ir.sequence.type')
+ >>> Statement = Model.get('account.statement')
+ >>> StatementJournal = Model.get('account.statement.journal')
+
+Create company::
+
+ >>> _ = create_company()
+ >>> company = get_company()
+
+Create fiscal year::
+
+ >>> fiscalyear = set_fiscalyear_invoice_sequences(
+ ... create_fiscalyear(company))
+ >>> fiscalyear.click('create_period')
+
+Create chart of accounts::
+
+ >>> _ = create_chart(company)
+ >>> accounts = get_accounts(company)
+
+Create a party::
+
+ >>> customer = Party(name="Customer")
+ >>> customer.save()
+
+Create a bank::
+
+ >>> party_bank = Party(name="Bank")
+ >>> party_bank.save()
+ >>> bank = Bank(party=party_bank)
+ >>> bank.save()
+
+Create Account Journal::
+
+ >>> sequence_type, = SequenceType.find([('name', '=', "Account Journal")])
+ >>> sequence = Sequence(
+ ... name="Satement",
+ ... sequence_type=sequence_type,
+ ... company=company)
+ >>> sequence.save()
+ >>> account_journal = AccountJournal(
+ ... name="Statement",
+ ... type='statement',
+ ... sequence=sequence)
+ >>> account_journal.save()
+
+Create statement rules::
+
+ >>> rule = Rule(name="Party Rule")
+ >>> rule.company = company
+ >>> rule.description = r"Account: *(?P<bank_account>.*)"
+ >>> line = rule.lines.new()
+ >>> line.amount = "pending"
+ >>> line.account = accounts['receivable']
+ >>> rule.save()
+
+Create a statement with non matching rule::
+
+ >>> journal_number = StatementJournal(
+ ... name="Number",
+ ... journal=account_journal,
+ ... account=accounts['cash'],
+ ... validation='number_of_lines')
+ >>> journal_number.save()
+
+ >>> statement = Statement(name="Test")
+ >>> statement.journal = journal_number
+ >>> statement.number_of_lines = 1
+ >>> origin = statement.origins.new()
+ >>> origin.date = today
+ >>> origin.amount = Decimal('50.00')
+ >>> origin.description = "Account: 123456"
+ >>> statement.save()
+ >>> len(statement.lines)
+ 0
+
+Apply rules on statement::
+
+ >>> statement.click('apply_rules')
+ >>> len(statement.lines)
+ 0
+
+Create the bank account::
+
+ >>> bank_account = BankAccount(bank=bank)
+ >>> bank_account.owners.append(Party(customer.id))
+ >>> number = bank_account.numbers.new()
+ >>> number.type = 'other'
+ >>> number.number = "123456"
+ >>> bank_account.save()
+
+Apply rules on statement match::
+
+ >>> statement.click('apply_rules')
+ >>> line, = statement.lines
+ >>> line.party == customer
+ True
+
+ >>> statement.click('validate_statement')
+ >>> statement.click('post')
+
+Remove the bank account::
+
+ >>> bank_account.delete()
+
+Create a new statement with same keyword::
+
+ >>> statement = Statement(name="Test")
+ >>> statement.journal = journal_number
+ >>> statement.number_of_lines = 1
+ >>> origin = statement.origins.new()
+ >>> origin.date = today
+ >>> origin.amount = Decimal('50.00')
+ >>> origin.description = "Account: 123456"
+ >>> statement.save()
+ >>> len(statement.lines)
+ 0
+
+Now a party is found::
+
+ >>> statement.click('apply_rules')
+ >>> line, = statement.lines
+ >>> line.amount
+ Decimal('50.00')
+ >>> line.party == customer
+ True
+ >>> line.account == accounts['receivable']
+ True
diff -r 9f99341984e7 -r f025387c6b6b tests/test_account_statement_rule.py
--- a/tests/test_account_statement_rule.py Thu Dec 16 00:05:10 2021 +0100
+++ b/tests/test_account_statement_rule.py Thu Dec 16 00:06:04 2021 +0100
@@ -29,4 +29,9 @@
tearDown=doctest_teardown, encoding='utf-8',
checker=doctest_checker,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+ suite.addTests(doctest.DocFileSuite(
+ 'scenario_account_statement_rule_keyword_bank_account.rst',
+ tearDown=doctest_teardown, encoding='utf-8',
+ checker=doctest_checker,
+ optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
return suite