================================= Account Close Fiscalyear Scenario ================================= Imports:: >>> import datetime as dt >>> from decimal import Decimal >>> from dateutil.relativedelta import relativedelta >>> from proteus import Model, Wizard >>> from trytond.modules.account.tests.tools import ( ... create_chart, create_fiscalyear, get_accounts) >>> from trytond.modules.company.tests.tools import create_company >>> from trytond.tests.tools import activate_modules >>> today = dt.date.today() >>> last_year = today - relativedelta(years=1) Activate modules:: >>> config = activate_modules('account', create_company, create_chart) >>> Account = Model.get('account.account') >>> AccountType = Model.get('account.account.type') >>> Journal = Model.get('account.journal') >>> Journal = Model.get('account.journal') >>> Move = Model.get('account.move') >>> Party = Model.get('party.party') >>> Period = Model.get('account.period') >>> Sequence = Model.get('ir.sequence') Create fiscal year:: >>> fiscalyear = create_fiscalyear(today=last_year) >>> fiscalyear.click('create_period') >>> period = fiscalyear.periods[0] Get accounts:: >>> accounts = get_accounts() Prepare the closing settings for fiscalyear close:: >>> journal_closing = Journal() >>> journal_closing.name = 'Closing' >>> journal_closing.code = 'CLO' >>> journal_closing.type = 'situation' >>> journal_closing.save() >>> period_closing = Period() >>> period_closing.name = 'Closing' >>> period_closing.start_date = fiscalyear.end_date >>> period_closing.end_date = fiscalyear.end_date >>> period_closing.fiscalyear = fiscalyear >>> period_closing.type = 'adjustment' >>> period_closing.save() >>> account_pl, = Account.find([('code', '=', '3.2.1')]) Create children accounts:: >>> receivable_customer = Account() >>> receivable_customer.name = "Customer Receivable" >>> receivable_customer.parent = accounts['receivable'] >>> receivable_customer.save() Create parties:: >>> customer = Party(name="Customer") >>> customer.save() Create and post a move using children accounts:: >>> journal_revenue, = Journal.find([ ... ('code', '=', 'REV'), ... ]) >>> move = Move() >>> move.period = period >>> move.journal = journal_revenue >>> move.date = period.start_date >>> line = move.lines.new() >>> line.account = accounts['revenue'] >>> line.credit = Decimal(42) >>> line = move.lines.new() >>> line.account = receivable_customer >>> line.debit = Decimal(21) >>> line.party = customer >>> line = move.lines.new() >>> line.account = accounts['receivable'] >>> line.debit = Decimal(21) >>> line.party = customer >>> move.save() >>> move.click('post') Balance non deferral:: >>> balance_non_deferral = Wizard('account.fiscalyear.balance_non_deferral') >>> balance_non_deferral.form.fiscalyear = fiscalyear >>> balance_non_deferral.form.journal = journal_closing >>> balance_non_deferral.form.period = period_closing >>> balance_non_deferral.form.credit_account = account_pl >>> balance_non_deferral.form.debit_account = account_pl >>> balance_non_deferral.execute('balance') >>> move, = Move.find([('state', '=', 'draft')]) >>> move.click('post') Renew fiscalyear using the wizard:: >>> renew_fiscalyear = Wizard('account.fiscalyear.renew') >>> renew_fiscalyear.form.reset_sequences = False >>> renew_fiscalyear.execute('create_') Check receivable balance before closing fiscalyear:: >>> accounts['receivable'].reload() >>> accounts['receivable'].balance Decimal('42.00') >>> receivable_customer.reload() >>> receivable_customer.balance Decimal('21.00') Close fiscalyear:: >>> fiscalyear.click('close') >>> fiscalyear.state 'closed' Check receivable amounts after closing fiscalyear:: >>> accounts['receivable'].reload() >>> accounts['receivable'].balance Decimal('42.00') >>> receivable_customer.reload() >>> receivable_customer.balance Decimal('21.00')