Files
account-financial-tools/account_cost_center/tests/test_cost_center.py
2022-06-03 14:28:01 +05:30

99 lines
3.5 KiB
Python

# Copyright 2017-2020 Onestein (<http://www.onestein.eu>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests import Form, tagged
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
@tagged("post_install", "-at_install")
class TestAccountCostCenter(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.expenses_account = cls.env["account.account"].create(
{
"user_type_id": cls.env.ref("account.data_account_type_expenses").id,
"code": "EXPTEST",
"name": "Test expense account",
}
)
cls.costcenter = cls.env["account.cost.center"].create(
{
"name": "Cost Center Test",
"code": "CC1",
"company_id": cls.env.company.id,
}
)
# Invoice created with tests Form
cls.invoice1 = cls.init_invoice("in_invoice")
# Invoice created with standard create
cls.invoice2 = (
cls.env["account.move"]
.with_context(cost_center_id=cls.costcenter.id)
.create(
{
"partner_id": cls.env.ref("base.res_partner_2").id,
"move_type": "in_invoice",
"cost_center_id": cls.costcenter.id,
}
)
)
cls.invoice2.invoice_line_ids += cls.env["account.move.line"].new(
{
"product_id": cls.env.ref("product.product_product_4").id,
"quantity": 1.0,
"price_unit": 130.0,
"name": "product that cost 130",
"cost_center_id": cls.costcenter.id,
}
)
def test_01_check_lines(self):
self.assertFalse(
self.invoice1.invoice_line_ids.cost_center_id,
"Default cost center per line not set",
)
self.assertEqual(
self.invoice2.invoice_line_ids[0].cost_center_id, self.costcenter
)
def test_02_check_lines(self):
invoice_lines = self.invoice1.invoice_line_ids
self.assertFalse(any(line.cost_center_id for line in invoice_lines))
invoice_form = Form(self.invoice1)
invoice_form.cost_center_id = self.costcenter
with invoice_form.invoice_line_ids.new() as line:
line.name = "Test line2"
line.quantity = 2.0
line.price_unit = 200.0
line.account_id = self.expenses_account
self.invoice1 = invoice_form.save()
invoice_lines = self.invoice1.invoice_line_ids
self.assertFalse(any(line.cost_center_id for line in invoice_lines))
self.assertTrue(any(not line.cost_center_id for line in invoice_lines))
def test_03_confirm_invoice(self):
invoice_lines = self.invoice2.invoice_line_ids
for move_line in invoice_lines:
self.assertEqual(move_line.cost_center_id, self.costcenter)
for move_line in self.invoice2.line_ids - invoice_lines:
self.assertFalse(move_line.cost_center_id)
def test_04_search_read(self):
expected_cost_center = self.costcenter
records = self.env["account.invoice.report"].sudo().search_read([])
result = records[0].get("cost_center_id")
self.assertTrue(result)
self.assertEqual(result[0], expected_cost_center.id)
self.assertEqual(result[1], expected_cost_center.name)