2017-10-12 13:42:47 +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 TestAccountMoveFiscalYear(TransactionCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super(TestAccountMoveFiscalYear, self).setUp()
|
|
|
|
self.AccountObj = self.env['account.account']
|
|
|
|
self.AccountJournalObj = self.env['account.journal']
|
|
|
|
self.AccountMoveObj = self.env['account.move']
|
2018-12-14 10:42:31 +01:00
|
|
|
self.DateRangeObj = self.env['account.fiscal.year']
|
2017-10-12 13:42:47 +02:00
|
|
|
|
|
|
|
self.bank_journal = self.AccountJournalObj.search([
|
|
|
|
('type', '=', 'bank')
|
|
|
|
], limit=1)
|
|
|
|
|
|
|
|
self.account_type_recv = self.env.ref(
|
|
|
|
'account.data_account_type_receivable')
|
|
|
|
self.account_type_rev = self.env.ref(
|
|
|
|
'account.data_account_type_revenue')
|
|
|
|
|
|
|
|
self.account_recv = self.AccountObj.create({
|
|
|
|
'code': 'RECV_DR',
|
|
|
|
'name': "Receivable (test)",
|
|
|
|
'reconcile': True,
|
|
|
|
'user_type_id': self.account_type_recv.id,
|
|
|
|
})
|
|
|
|
self.account_sale = self.AccountObj.create({
|
|
|
|
'code': 'SALE_DR',
|
|
|
|
'name': "Receivable (sale)",
|
|
|
|
'reconcile': True,
|
|
|
|
'user_type_id': self.account_type_rev.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
self.date_range_2017 = self.DateRangeObj.create({
|
|
|
|
'name': "2017",
|
2018-12-14 10:42:31 +01:00
|
|
|
'date_from': '2017-01-01',
|
|
|
|
'date_to': '2017-12-31',
|
2017-10-12 13:42:47 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
self.date_range_2018 = self.DateRangeObj.create({
|
|
|
|
'name': "2018",
|
2018-12-14 10:42:31 +01:00
|
|
|
'date_from': '2018-01-01',
|
|
|
|
'date_to': '2018-12-31',
|
2017-10-12 13:42:47 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
def create_account_move(self, date_str):
|
|
|
|
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,
|
|
|
|
}),
|
|
|
|
]
|
|
|
|
})
|
|
|
|
|
|
|
|
def test_01_account_move_date_range_fy_id_compute(self):
|
2018-12-14 10:42:31 +01:00
|
|
|
january_1st = Date.to_date('2017-01-01')
|
2017-10-12 13:42:47 +02:00
|
|
|
move = self.create_account_move(january_1st)
|
|
|
|
|
|
|
|
self.assertEquals(
|
|
|
|
move.date_range_fy_id, self.date_range_2017,
|
|
|
|
msg="Move period should be 2017")
|
|
|
|
self.assertTrue(all([
|
|
|
|
line.date_range_fy_id == self.date_range_2017
|
|
|
|
for line in move.line_ids
|
|
|
|
]), msg="All lines period should be 2017")
|
|
|
|
|
2018-12-14 10:42:31 +01:00
|
|
|
january_2019 = Date.to_date('2019-01-01')
|
2017-10-12 13:42:47 +02:00
|
|
|
move = self.create_account_move(january_2019)
|
|
|
|
self.assertFalse(
|
|
|
|
bool(move.date_range_fy_id),
|
|
|
|
msg="Move shouldn't have any date range")
|
|
|
|
|
|
|
|
def test_02_account_move_date_range_fy_id_search(self):
|
2018-12-14 10:42:31 +01:00
|
|
|
january_2017 = Date.to_date('2017-01-01')
|
|
|
|
january_2018 = Date.to_date('2018-01-01')
|
|
|
|
january_2019 = Date.to_date('2019-01-01')
|
2017-10-12 13:42:47 +02:00
|
|
|
|
|
|
|
move_2017 = self.create_account_move(january_2017)
|
|
|
|
move_2018 = self.create_account_move(january_2018)
|
|
|
|
move_2019 = self.create_account_move(january_2019)
|
|
|
|
|
|
|
|
moves = self.AccountMoveObj.search([
|
|
|
|
('date_range_fy_id', 'ilike', '2017'),
|
|
|
|
])
|
|
|
|
|
|
|
|
self.assertTrue(all([
|
|
|
|
move_2017 in moves,
|
|
|
|
move_2018 not in moves,
|
|
|
|
move_2019 not in moves,
|
|
|
|
]), msg="There should be only moves in 2017")
|
|
|
|
|
|
|
|
moves = self.AccountMoveObj.search([
|
|
|
|
('date_range_fy_id', '=', self.date_range_2017.id),
|
|
|
|
])
|
|
|
|
|
|
|
|
self.assertTrue(all([
|
|
|
|
move_2017 in moves,
|
|
|
|
move_2018 not in moves,
|
|
|
|
move_2019 not in moves,
|
|
|
|
]))
|
|
|
|
|
|
|
|
moves = self.AccountMoveObj.search([
|
|
|
|
('date_range_fy_id', 'in', (
|
|
|
|
self.date_range_2017.id,
|
|
|
|
self.date_range_2018.id
|
|
|
|
)),
|
|
|
|
])
|
|
|
|
|
|
|
|
self.assertTrue(all([
|
|
|
|
move_2017 in moves,
|
|
|
|
move_2018 in moves,
|
|
|
|
move_2019 not in moves,
|
|
|
|
]))
|