1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/account_budget/tests/test_account_budget.py
2024-12-10 09:04:09 +07:00

141 lines
5.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from .common import TestAccountBudgetCommon
from odoo import Command
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestAccountBudget(TestAccountBudgetCommon):
def test_account_budget(self):
# Creating a crossovered.budget record
budget = self.env['crossovered.budget'].create({
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'name': 'Budget 2019',
'state': 'draft'
})
# I created two different budget lines
# Modifying a crossovered.budget record
self.env['crossovered.budget.lines'].create({
'crossovered_budget_id': budget.id,
'analytic_account_id': self.analytic_account_partner_b.id,
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'general_budget_id': self.account_budget_post_purchase0.id,
'planned_amount': 10000.0,
})
self.env['crossovered.budget.lines'].create({
'crossovered_budget_id': budget.id,
'analytic_account_id': self.analytic_account_partner_a_2.id,
'date_from': '2019-09-01',
'date_to': '2019-09-30',
'general_budget_id': self.account_budget_post_sales0.id,
'planned_amount': 400000.0,
})
self.assertRecordValues(budget, [{'state': 'draft'}])
# I pressed the confirm button to confirm the Budget
# Performing an action confirm on module crossovered.budget
budget.action_budget_confirm()
# I check that budget is in "Confirmed" state
self.assertRecordValues(budget, [{'state': 'confirm'}])
# I pressed the validate button to validate the Budget
# Performing an action validate on module crossovered.budget
budget.action_budget_validate()
# I check that budget is in "Validated" state
self.assertRecordValues(budget, [{'state': 'validate'}])
# I pressed the done button to set the Budget to "Done" state
# Performing an action done on module crossovered.budget
budget.action_budget_done()
# I check that budget is in "done" state
self.assertRecordValues(budget, [{'state': 'done'}])
def test_practical_amount(self):
general_accounts = self.env['account.account'].search([('company_id', '=', self.env.company.id)], limit=2)
_project_plan, other_plans = self.env['account.analytic.plan']._get_all_plans()
analytic = self.env['account.analytic.account'].create({'name': 'R&D', 'plan_id': other_plans[0].id})
budget_position = self.env['account.budget.post'].create({
'name': 'R&D',
'account_ids': [Command.set(general_accounts[0].ids)],
})
budget = self.env['crossovered.budget'].create({
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'name': 'Budget 2019',
'state': 'draft',
'crossovered_budget_line': [
Command.create({
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'analytic_account_id': analytic.id,
'general_budget_id': budget_position.id,
'planned_amount': 10000.0,
}),
Command.create({
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'general_budget_id': budget_position.id,
'planned_amount': 10000.0,
}),
Command.create({
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'analytic_account_id': analytic.id,
'planned_amount': 10000.0,
}),
],
})
with_all, with_position, with_analytic = budget.crossovered_budget_line
self.assertEqual(with_all.practical_amount, 0)
self.assertEqual(with_position.practical_amount, 0)
self.assertEqual(with_position.practical_amount, 0)
move = self.env['account.move'].create({
'date': '2019-01-01',
'line_ids': [
Command.create({
'name': '1',
'credit': 100,
'account_id': general_accounts[0].id,
'analytic_distribution': {analytic.id: 100},
}),
Command.create({
'name': '2',
'credit': 200,
'account_id': general_accounts[0].id
}),
Command.create({
'name': '3',
'debit': 300,
'account_id': general_accounts[1].id
}),
]
})
move.action_post()
self.env['account.analytic.line'].create([{
'auto_account_id': analytic.id,
'date': '2019-01-01',
'name': '1',
'amount': 50,
}])
self.env['crossovered.budget.lines'].invalidate_model(['practical_amount'])
self.assertEqual(with_all.practical_amount, 100,
"Only the line linked to both an analytic and a general account should be accounted")
self.assertEqual(with_position.practical_amount, 300,
"Both lines using the general account should be accounted")
self.assertEqual(with_analytic.practical_amount, 150,
"Both lines using the analytic account should be accounted")