50 lines
2.0 KiB
Python
Executable File
50 lines
2.0 KiB
Python
Executable File
# Copyright (C) 2021 - Today: GRAP (http://www.grap.coop)
|
|
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from datetime import date, datetime
|
|
|
|
from odoo.addons.base.tests.common import BaseCommon
|
|
|
|
|
|
class TestFiscalYear(BaseCommon):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.AccountFiscalYear = cls.env["account.fiscal.year"]
|
|
cls.company = cls.env["res.company"].create(
|
|
{
|
|
"name": "Demo Company (account_fiscal_year_auto_create)",
|
|
}
|
|
)
|
|
|
|
cls.last_year = datetime.now().year - 1
|
|
cls.last_fiscal_year = cls.AccountFiscalYear.create(
|
|
{
|
|
"name": f"FY {cls.last_year}",
|
|
"date_from": date(cls.last_year, 1, 1),
|
|
"date_to": date(cls.last_year, 12, 31),
|
|
"company_id": cls.company.id,
|
|
}
|
|
)
|
|
|
|
def test_cron_auto_create(self):
|
|
"""It should create new fiscal year via cron and not duplicate"""
|
|
# Step 1: Run cron -> should create one new fiscal year
|
|
old_fiscal_year_ids = self.AccountFiscalYear.search([]).ids
|
|
self.AccountFiscalYear.cron_auto_create()
|
|
|
|
new_fy = self.AccountFiscalYear.search([("id", "not in", old_fiscal_year_ids)])
|
|
self.assertEqual(len(new_fy), 1, "A new fiscal year should be created.")
|
|
|
|
expected_year = self.last_year + 1
|
|
self.assertEqual(new_fy.name, f"FY {expected_year}")
|
|
self.assertEqual(new_fy.date_from, date(expected_year, 1, 1))
|
|
self.assertEqual(new_fy.date_to, date(expected_year, 12, 31))
|
|
|
|
# Step 2: Run cron again -> should NOT create duplicate fiscal year
|
|
new_ids = self.AccountFiscalYear.search([]).ids
|
|
self.AccountFiscalYear.cron_auto_create()
|
|
newer_fy = self.AccountFiscalYear.search([("id", "not in", new_ids)])
|
|
self.assertFalse(newer_fy, "No new fiscal year should be created again.")
|