Skip to content

Commit

Permalink
Add Month and Year in Relative to report base date
Browse files Browse the repository at this point in the history
fixes #2
  • Loading branch information
Martronic-SA authored and sbidoul committed Oct 1, 2017
1 parent 68df414 commit 5479a82
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
23 changes: 23 additions & 0 deletions mis_builder/models/mis_report_instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

import datetime
from dateutil.relativedelta import relativedelta
import logging

from openerp import api, fields, models, _
Expand Down Expand Up @@ -111,6 +112,26 @@ def _compute_dates(self):
record.date_from = fields.Date.to_string(date_from)
record.date_to = fields.Date.to_string(date_to)
record.valid = True
elif record.mode == MODE_REL and record.type == 'm':
date_from = d.replace(day=1)
date_from = date_from + \
relativedelta(months=record.offset)
date_to = date_from + \
relativedelta(months=record.duration-1) + \
relativedelta(day=31)
record.date_from = fields.Date.to_string(date_from)
record.date_to = fields.Date.to_string(date_to)
record.valid = True
elif record.mode == MODE_REL and record.type == 'y':
date_from = d.replace(month=1, day=1)
date_from = date_from + \
relativedelta(years=record.offset)
date_to = date_from + \
relativedelta(years=record.duration-1)
date_to = date_to.replace(month=12, day=31)
record.date_from = fields.Date.to_string(date_from)
record.date_to = fields.Date.to_string(date_to)
record.valid = True
elif record.mode == MODE_REL and record.type == 'date_range':
date_range_obj = record.env['date.range']
current_periods = date_range_obj.search(
Expand Down Expand Up @@ -148,6 +169,8 @@ def _compute_dates(self):
type = fields.Selection(
[('d', _('Day')),
('w', _('Week')),
('m', _('Month')),
('y', _('Year')),
('date_range', _('Date Range'))],
string='Period type'
)
Expand Down
28 changes: 28 additions & 0 deletions mis_builder/tests/test_period_dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,34 @@ def test_rel_week(self):
self.assertEqual(self.period.date_to, '2017-01-15')
self.assertTrue(self.period.valid)

def test_rel_month(self):
self.instance.write(dict(
comparison_mode=True,
date='2017-01-05'
))
self.period.write(dict(
mode=MODE_REL,
type='m',
offset='1',
))
self.assertEqual(self.period.date_from, '2017-02-01')
self.assertEqual(self.period.date_to, '2017-02-28')
self.assertTrue(self.period.valid)

def test_rel_year(self):
self.instance.write(dict(
comparison_mode=True,
date='2017-05-06'
))
self.period.write(dict(
mode=MODE_REL,
type='y',
offset='1',
))
self.assertEqual(self.period.date_from, '2018-01-01')
self.assertEqual(self.period.date_to, '2018-12-31')
self.assertTrue(self.period.valid)

def test_rel_date_range(self):
# create a few date ranges
date_range_type = self.env['date.range.type'].create(dict(
Expand Down

0 comments on commit 5479a82

Please sign in to comment.