first commit
This commit is contained in:
134
modules/analytic_budget/tests/scenario_analytic_budget.rst
Normal file
134
modules/analytic_budget/tests/scenario_analytic_budget.rst
Normal file
@@ -0,0 +1,134 @@
|
||||
========================
|
||||
Analytic Budget Scenario
|
||||
========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> 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, assertEqual
|
||||
|
||||
Activate the analytic_budget module::
|
||||
|
||||
>>> config = activate_modules('analytic_budget', create_company, create_chart)
|
||||
|
||||
>>> AnalyticAccount = Model.get('analytic_account.account')
|
||||
>>> Budget = Model.get('analytic_account.budget')
|
||||
>>> BudgetLine = Model.get('analytic_account.budget.line')
|
||||
>>> Journal = Model.get('account.journal')
|
||||
>>> Move = Model.get('account.move')
|
||||
>>> Party = Model.get('party.party')
|
||||
|
||||
Create a fiscal year::
|
||||
|
||||
>>> fiscalyear = create_fiscalyear()
|
||||
>>> fiscalyear.click('create_period')
|
||||
>>> period = fiscalyear.periods[0]
|
||||
>>> next_period = fiscalyear.periods[1]
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = get_accounts()
|
||||
|
||||
Create the analytic accounts::
|
||||
|
||||
>>> root = AnalyticAccount(type='root', name="Root")
|
||||
>>> root.save()
|
||||
>>> analytic_account = AnalyticAccount(
|
||||
... root=root, parent=root, name="Analytic")
|
||||
>>> analytic_account.save()
|
||||
>>> other_analytic_account = AnalyticAccount(
|
||||
... root=root, parent=root, name="Other Analytic")
|
||||
>>> other_analytic_account.save()
|
||||
|
||||
Create the parties::
|
||||
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
|
||||
Create a budget::
|
||||
|
||||
>>> budget = Budget()
|
||||
>>> budget.name = 'Budget'
|
||||
>>> budget.root = root
|
||||
>>> budget.start_date = period.start_date
|
||||
>>> budget.end_date = period.end_date
|
||||
>>> budget.click('update_lines')
|
||||
>>> len(budget.lines)
|
||||
2
|
||||
|
||||
>>> analytic_budget, = BudgetLine.find(
|
||||
... [('account', '=', analytic_account.id)])
|
||||
>>> analytic_budget.sequence = 1
|
||||
>>> analytic_budget.amount = Decimal(70)
|
||||
>>> analytic_budget.save()
|
||||
>>> other_analytic_budget, = BudgetLine.find(
|
||||
... [('account', '=', other_analytic_account.id)])
|
||||
>>> other_analytic_budget.sequence = 2
|
||||
>>> other_analytic_budget.amount = Decimal(50)
|
||||
>>> other_analytic_budget.save()
|
||||
|
||||
>>> budget.click('update_lines')
|
||||
>>> len(budget.lines)
|
||||
2
|
||||
|
||||
Create moves to test the budget::
|
||||
|
||||
>>> 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(100)
|
||||
>>> analytic_line = line.analytic_lines.new()
|
||||
>>> analytic_line.credit = Decimal(60)
|
||||
>>> analytic_line.account = analytic_account
|
||||
>>> analytic_line = line.analytic_lines.new()
|
||||
>>> analytic_line.credit = Decimal(40)
|
||||
>>> analytic_line.account = other_analytic_account
|
||||
>>> line = move.lines.new()
|
||||
>>> line.account = accounts['receivable']
|
||||
>>> line.debit = Decimal(100)
|
||||
>>> line.party = customer
|
||||
>>> move.click('post')
|
||||
|
||||
Check actual amount the budget::
|
||||
|
||||
>>> analytic_budget.total_amount
|
||||
Decimal('70.00')
|
||||
>>> analytic_budget.actual_amount
|
||||
Decimal('60.00')
|
||||
>>> analytic_budget.percentage
|
||||
Decimal('0.8571')
|
||||
>>> other_analytic_budget.total_amount
|
||||
Decimal('50.00')
|
||||
>>> other_analytic_budget.actual_amount
|
||||
Decimal('40.00')
|
||||
>>> other_analytic_budget.percentage
|
||||
Decimal('0.8000')
|
||||
|
||||
Copy the budget without amounts::
|
||||
|
||||
>>> copy_budget = budget.click('copy_button')
|
||||
>>> copy_budget.form.start_date = next_period.start_date
|
||||
>>> copy_budget.form.end_date = next_period.end_date
|
||||
>>> copy_budget.form.factor = Decimal('1.2')
|
||||
>>> copy_budget.execute('copy')
|
||||
>>> new_budget, = copy_budget.actions[0]
|
||||
>>> assertEqual(new_budget.start_date, next_period.start_date)
|
||||
>>> assertEqual(new_budget.end_date, next_period.end_date)
|
||||
>>> analytic_budget, other_analytic_budget = new_budget.lines
|
||||
>>> analytic_budget.total_amount
|
||||
Decimal('84.00')
|
||||
>>> analytic_budget.actual_amount
|
||||
Decimal('0.00')
|
||||
>>> analytic_budget.percentage
|
||||
Decimal('0.0000')
|
||||
Reference in New Issue
Block a user