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

Reply via email to