Odoo18-Base/addons/project_hr_expense/tests/test_analytics.py
2025-01-06 10:57:38 +07:00

48 lines
1.9 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import tagged
from odoo.addons.hr_expense.tests.common import TestExpenseCommon
@tagged('-at_install', 'post_install')
class TestAnalytics(TestExpenseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.project_plan, _other_plans = cls.env['account.analytic.plan']._get_all_plans()
cls.analytic_account1, cls.analytic_account2 = cls.env['account.analytic.account'].create([
{
'name': 'Account 1',
'plan_id': cls.project_plan.id,
},
{
'name': 'Account 2',
'plan_id': cls.project_plan.id,
},
])
cls.project = cls.env['project.project'].create({
'name': 'Project',
'account_id': cls.analytic_account1.id,
})
def test_project_analytics_to_expense(self):
expense = self.env['hr.expense'].with_context(project_id=self.project.id).create({
'name': 'Expense',
'employee_id': self.expense_employee.id,
'product_id': self.product_a.id,
})
self.assertEqual(
expense.analytic_distribution,
{str(self.analytic_account1.id): 100},
"The analytic distribution of the created expense should be set to the account of the project specified in the context.",
)
self.project.account_id = self.analytic_account2
expense.analytic_distribution = False
expense.with_context(project_id=self.project.id)._compute_analytic_distribution()
self.assertEqual(
expense.analytic_distribution,
{str(self.analytic_account2.id): 100},
"The analytic distribution of the expense should be set to the account of the project specified in the context.",
)