2017-07-06 09:41:05 +02:00
|
|
|
# Copyright 2017 ACSONE SA/NV
|
|
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
|
|
|
|
from odoo.fields import Date
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
|
|
|
|
|
|
class TestAccountMoveFiscalMonth(TransactionCase):
|
2023-08-04 08:43:00 +02:00
|
|
|
@classmethod
|
|
|
|
def setUpClass(cls):
|
|
|
|
super().setUpClass()
|
|
|
|
cls.AccountObj = cls.env["account.account"]
|
|
|
|
cls.AccountJournalObj = cls.env["account.journal"]
|
|
|
|
cls.AccountMoveObj = cls.env["account.move"]
|
|
|
|
cls.DateRangeObj = cls.env["date.range"]
|
2020-11-17 02:38:56 +01:00
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.bank_journal = cls.AccountJournalObj.search(
|
2020-11-17 02:38:56 +01:00
|
|
|
[("type", "=", "bank")], limit=1
|
|
|
|
)
|
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.account_recv = cls.AccountObj.create(
|
2020-11-17 02:38:56 +01:00
|
|
|
{
|
2023-08-04 08:43:00 +02:00
|
|
|
"code": "RECVDR",
|
2020-11-17 02:38:56 +01:00
|
|
|
"name": "Receivable (test)",
|
|
|
|
"reconcile": True,
|
2023-08-04 08:43:00 +02:00
|
|
|
"account_type": "asset_receivable",
|
2020-11-17 02:38:56 +01:00
|
|
|
}
|
|
|
|
)
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.account_sale = cls.AccountObj.create(
|
2020-11-17 02:38:56 +01:00
|
|
|
{
|
2023-08-04 08:43:00 +02:00
|
|
|
"code": "SALEDR",
|
2020-11-17 02:38:56 +01:00
|
|
|
"name": "Receivable (sale)",
|
|
|
|
"reconcile": True,
|
2023-08-04 08:43:00 +02:00
|
|
|
"account_type": "income",
|
2020-11-17 02:38:56 +01:00
|
|
|
}
|
|
|
|
)
|
2017-07-06 09:41:05 +02:00
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.date_range_type_month = cls.env.ref(
|
2020-11-17 02:38:56 +01:00
|
|
|
"account_fiscal_month.date_range_fiscal_month"
|
|
|
|
)
|
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.date_range_january_2017 = cls.DateRangeObj.create(
|
2020-11-17 02:38:56 +01:00
|
|
|
{
|
|
|
|
"name": "January 2017",
|
|
|
|
"date_start": "2017-01-01",
|
|
|
|
"date_end": "2017-01-31",
|
2023-08-04 08:43:00 +02:00
|
|
|
"type_id": cls.date_range_type_month.id,
|
2020-11-17 02:38:56 +01:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.date_range_february_2017 = cls.DateRangeObj.create(
|
2020-11-17 02:38:56 +01:00
|
|
|
{
|
|
|
|
"name": "February 2017",
|
|
|
|
"date_start": "2017-02-01",
|
|
|
|
"date_end": "2017-02-28",
|
2023-08-04 08:43:00 +02:00
|
|
|
"type_id": cls.date_range_type_month.id,
|
2020-11-17 02:38:56 +01:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2023-08-04 08:43:00 +02:00
|
|
|
cls.date_range_january_2018 = cls.DateRangeObj.create(
|
2020-11-17 02:38:56 +01:00
|
|
|
{
|
|
|
|
"name": "January 2018",
|
|
|
|
"date_start": "2018-01-01",
|
|
|
|
"date_end": "2018-01-31",
|
2023-08-04 08:43:00 +02:00
|
|
|
"type_id": cls.date_range_type_month.id,
|
2020-11-17 02:38:56 +01:00
|
|
|
}
|
|
|
|
)
|
2017-07-06 09:41:05 +02:00
|
|
|
|
|
|
|
def create_account_move(self, date_str):
|
2020-11-17 02:38:56 +01:00
|
|
|
return self.AccountMoveObj.create(
|
|
|
|
{
|
|
|
|
"journal_id": self.bank_journal.id,
|
|
|
|
"date": date_str,
|
|
|
|
"line_ids": [
|
|
|
|
(
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
{
|
|
|
|
"name": "Debit",
|
|
|
|
"debit": 1000,
|
|
|
|
"account_id": self.account_recv.id,
|
|
|
|
},
|
|
|
|
),
|
|
|
|
(
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
{
|
|
|
|
"name": "Credit",
|
|
|
|
"credit": 1000,
|
|
|
|
"account_id": self.account_sale.id,
|
|
|
|
},
|
|
|
|
),
|
|
|
|
],
|
|
|
|
}
|
|
|
|
)
|
2017-07-06 09:41:05 +02:00
|
|
|
|
|
|
|
def test_01_account_move_date_range_fm_id_compute(self):
|
2020-11-17 02:38:56 +01:00
|
|
|
january_1st = Date.from_string("2017-01-01")
|
2017-07-06 09:41:05 +02:00
|
|
|
move = self.create_account_move(january_1st)
|
|
|
|
|
2021-09-28 08:31:26 +02:00
|
|
|
self.assertEqual(
|
2020-11-17 02:38:56 +01:00
|
|
|
move.date_range_fm_id,
|
|
|
|
self.date_range_january_2017,
|
|
|
|
msg="Move period should be January 2017",
|
|
|
|
)
|
|
|
|
self.assertTrue(
|
|
|
|
all(
|
|
|
|
[
|
|
|
|
line.date_range_fm_id == self.date_range_january_2017
|
|
|
|
for line in move.line_ids
|
|
|
|
]
|
|
|
|
),
|
|
|
|
msg="All lines period should be January 2017",
|
|
|
|
)
|
|
|
|
|
|
|
|
march_1st = Date.from_string("2017-03-01")
|
2017-07-06 09:41:05 +02:00
|
|
|
move = self.create_account_move(march_1st)
|
|
|
|
self.assertFalse(
|
2020-11-17 02:38:56 +01:00
|
|
|
bool(move.date_range_fm_id), msg="Move shouldn't have any date range"
|
|
|
|
)
|
2017-07-06 09:41:05 +02:00
|
|
|
|
|
|
|
def test_02_account_move_date_range_fm_id_search(self):
|
2020-11-17 02:38:56 +01:00
|
|
|
january_2017_1st = Date.from_string("2017-01-01")
|
|
|
|
february_2017_1st = Date.from_string("2017-02-01")
|
|
|
|
march_2017_1st = Date.from_string("2017-03-01")
|
|
|
|
january_2018_1st = Date.from_string("2018-01-01")
|
2017-07-06 09:41:05 +02:00
|
|
|
|
|
|
|
move_jan_2017 = self.create_account_move(january_2017_1st)
|
|
|
|
move_feb_2017 = self.create_account_move(february_2017_1st)
|
|
|
|
move_march_2017 = self.create_account_move(march_2017_1st)
|
|
|
|
move_jan_2018 = self.create_account_move(january_2018_1st)
|
|
|
|
|
2020-11-17 02:50:18 +01:00
|
|
|
moves = self.AccountMoveObj.search([("date_range_fm_id", "ilike", "January")])
|
2020-11-17 02:38:56 +01:00
|
|
|
|
|
|
|
self.assertTrue(
|
|
|
|
all(
|
|
|
|
[
|
|
|
|
move_jan_2017 in moves,
|
|
|
|
move_feb_2017 not in moves,
|
|
|
|
move_march_2017 not in moves,
|
|
|
|
move_jan_2018 in moves,
|
|
|
|
]
|
|
|
|
),
|
|
|
|
msg="There should be only moves in January",
|
|
|
|
)
|
|
|
|
|
2020-11-17 02:50:18 +01:00
|
|
|
moves = self.AccountMoveObj.search([("date_range_fm_id", "ilike", "2017")])
|
2020-11-17 02:38:56 +01:00
|
|
|
|
|
|
|
self.assertTrue(
|
|
|
|
all(
|
|
|
|
[
|
|
|
|
move_jan_2017 in moves,
|
|
|
|
move_feb_2017 in moves,
|
|
|
|
move_march_2017 not in moves,
|
|
|
|
move_jan_2018 not in moves,
|
|
|
|
]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
moves = self.AccountMoveObj.search(
|
2020-11-17 02:50:18 +01:00
|
|
|
[("date_range_fm_id", "=", self.date_range_january_2017.id)]
|
2020-11-17 02:38:56 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
self.assertTrue(
|
|
|
|
all(
|
|
|
|
[
|
|
|
|
move_jan_2017 in moves,
|
|
|
|
move_feb_2017 not in moves,
|
|
|
|
move_march_2017 not in moves,
|
|
|
|
move_jan_2018 not in moves,
|
|
|
|
]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
moves = self.AccountMoveObj.search(
|
|
|
|
[
|
|
|
|
(
|
|
|
|
"date_range_fm_id",
|
|
|
|
"in",
|
|
|
|
(self.date_range_january_2017.id, self.date_range_february_2017.id),
|
|
|
|
),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
self.assertTrue(
|
|
|
|
all(
|
|
|
|
[
|
|
|
|
move_jan_2017 in moves,
|
|
|
|
move_feb_2017 in moves,
|
|
|
|
move_march_2017 not in moves,
|
|
|
|
move_jan_2018 not in moves,
|
|
|
|
]
|
|
|
|
)
|
|
|
|
)
|