diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py
index 28af3ff0..6cc20ac6 100644
--- a/mis_builder/models/mis_builder.py
+++ b/mis_builder/models/mis_builder.py
@@ -335,6 +335,10 @@ class mis_report_instance_period(orm.Model):
ids = [ids]
res = {}
for c in self.browse(cr, uid, ids, context=context):
+ date_from = False
+ date_to = False
+ period_ids = None
+ valid = False
d = parser.parse(c.report_instance_id.pivot_date)
if c.type == 'd':
date_from = d + timedelta(days=c.offset)
@@ -342,7 +346,7 @@ class mis_report_instance_period(orm.Model):
date_from = date_from.strftime(
tools.DEFAULT_SERVER_DATE_FORMAT)
date_to = date_to.strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
- period_ids = None
+ valid = True
elif c.type == 'w':
date_from = d - timedelta(d.weekday())
date_from = date_from + timedelta(days=c.offset * 7)
@@ -350,15 +354,9 @@ class mis_report_instance_period(orm.Model):
date_from = date_from.strftime(
tools.DEFAULT_SERVER_DATE_FORMAT)
date_to = date_to.strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
- period_ids = None
+ valid = True
elif c.type == 'fp':
period_obj = self.pool['account.period']
- all_period_ids = period_obj.search(
- cr, uid,
- [('special', '=', False),
- ('company_id', '=', c.company_id.id)],
- order='date_start',
- context=context)
current_period_ids = period_obj.search(
cr, uid,
[('special', '=', False),
@@ -366,29 +364,28 @@ class mis_report_instance_period(orm.Model):
('date_stop', '>=', d),
('company_id', '=', c.company_id.id)],
context=context)
- if not current_period_ids:
- raise orm.except_orm(_("Error!"),
- _("No current fiscal period for %s")
- % d)
- p = all_period_ids.index(current_period_ids[0]) + c.offset
- if p < 0 or p >= len(all_period_ids):
- raise orm.except_orm(_("Error!"),
- _("No such fiscal period for %s "
- "with offset %d") % (d, c.offset))
- period_ids = all_period_ids[p:p + c.duration]
- periods = period_obj.browse(cr, uid, period_ids,
- context=context)
- date_from = periods[0].date_start
- date_to = periods[-1].date_stop
- else:
- raise orm.except_orm(_("Error!"),
- _("Unimplemented period type %s") %
- (c.type,))
+ if current_period_ids:
+ all_period_ids = period_obj.search(
+ cr, uid,
+ [('special', '=', False),
+ ('company_id', '=', c.company_id.id)],
+ order='date_start',
+ context=context)
+ p = all_period_ids.index(current_period_ids[0]) + c.offset
+ if p >= 0 and p + c.duration <= len(all_period_ids):
+ period_ids = all_period_ids[p:p + c.duration]
+ periods = period_obj.browse(cr, uid, period_ids,
+ context=context)
+ date_from = periods[0].date_start
+ date_to = periods[-1].date_stop
+ valid = True
+
res[c.id] = {
'date_from': date_from,
'date_to': date_to,
'period_from': period_ids and period_ids[0] or False,
'period_to': period_ids and period_ids[-1] or False,
+ 'valid': valid,
}
return res
@@ -422,6 +419,9 @@ class mis_report_instance_period(orm.Model):
'period_to': fields.function(_get_dates,
type='many2one', obj='account.period',
multi="dates", string="To period"),
+ 'valid': fields.function(_get_dates,
+ type='boolean',
+ multi='dates', string='Valid'),
'sequence': fields.integer(string='Sequence'),
'report_instance_id': fields.many2one('mis.report.instance',
string='Report Instance',
@@ -712,6 +712,8 @@ class mis_report_instance(orm.Model):
cr, uid, [('code', '=', lang)], context=context)
for period in r.period_ids:
+ if not period.valid:
+ continue
# add the column header
header['']['cols'].append(dict(
name=period.name,
diff --git a/mis_builder/views/mis_builder.xml b/mis_builder/views/mis_builder.xml
index 78178295..6bbfa709 100644
--- a/mis_builder/views/mis_builder.xml
+++ b/mis_builder/views/mis_builder.xml
@@ -172,7 +172,7 @@
-
+
@@ -183,6 +183,7 @@
+