[FIX] crm, sale_crm, mass_mailin: fixed computation for sparkline widgets.
Added an end date in the read_group domain. Indeed having results outside the date range made the result computation crash because of list limits. There is now a begin and end date for groupby domain. bzr revid: tde@openerp.com-20131003082736-tw50xk2vmhpjh1e5
This commit is contained in:
parent
fc13b6e372
commit
f72927123e
|
@ -19,6 +19,7 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
import calendar
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
from dateutil import relativedelta
|
from dateutil import relativedelta
|
||||||
|
|
||||||
|
@ -117,9 +118,9 @@ class crm_case_section(osv.osv):
|
||||||
"""
|
"""
|
||||||
month_begin = date.today().replace(day=1)
|
month_begin = date.today().replace(day=1)
|
||||||
section_result = [{
|
section_result = [{
|
||||||
'value': 0,
|
'value': 0,
|
||||||
'tooltip': (month_begin + relativedelta.relativedelta(months=-i)).strftime('%B'),
|
'tooltip': (month_begin + relativedelta.relativedelta(months=-i)).strftime('%B'),
|
||||||
} for i in range(self._period_number - 1, -1, -1)]
|
} for i in range(self._period_number - 1, -1, -1)]
|
||||||
group_obj = obj.read_group(cr, uid, domain, read_fields, groupby_field, context=context)
|
group_obj = obj.read_group(cr, uid, domain, read_fields, groupby_field, context=context)
|
||||||
for group in group_obj:
|
for group in group_obj:
|
||||||
group_begin_date = datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATE_FORMAT)
|
group_begin_date = datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATE_FORMAT)
|
||||||
|
@ -135,12 +136,14 @@ class crm_case_section(osv.osv):
|
||||||
obj = self.pool.get('crm.lead')
|
obj = self.pool.get('crm.lead')
|
||||||
res = dict.fromkeys(ids, False)
|
res = dict.fromkeys(ids, False)
|
||||||
month_begin = date.today().replace(day=1)
|
month_begin = date.today().replace(day=1)
|
||||||
groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
|
date_begin = month_begin - relativedelta.relativedelta(months=self._period_number - 1)
|
||||||
|
date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1])
|
||||||
|
date_domain = [('create_date', '>=', date_begin.strftime(tools.DEFAULT_SERVER_DATE_FORMAT)), ('create_date', '<=', date_end.strftime(tools.DEFAULT_SERVER_DATE_FORMAT))]
|
||||||
for id in ids:
|
for id in ids:
|
||||||
res[id] = dict()
|
res[id] = dict()
|
||||||
lead_domain = [('type', '=', 'lead'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)]
|
lead_domain = date_domain + [('type', '=', 'lead'), ('section_id', '=', id)]
|
||||||
res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context)
|
res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context)
|
||||||
opp_domain = [('type', '=', 'opportunity'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)]
|
opp_domain = date_domain + [('type', '=', 'opportunity'), ('section_id', '=', id)]
|
||||||
res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context)
|
res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
|
@ -194,10 +194,13 @@ class MassMailing(osv.Model):
|
||||||
}
|
}
|
||||||
for id in ids:
|
for id in ids:
|
||||||
res[id] = {}
|
res[id] = {}
|
||||||
date_begin = self.browse(cr, uid, id, context=context).date
|
date_begin = datetime.strptime(self.browse(cr, uid, id, context=context).date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
domain = [('mass_mailing_id', '=', id), ('opened', '>=', date_begin)]
|
date_end = date_begin + relativedelta.relativedelta(days=self._period_number - 1)
|
||||||
|
date_begin_str = date_begin.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
|
date_end_str = date_end.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
|
domain = [('mass_mailing_id', '=', id), ('opened', '>=', date_begin_str), ('opened', '<=', date_end_str)]
|
||||||
res[id]['opened_monthly'] = self.__get_bar_values(cr, uid, id, obj, domain, ['opened'], 'opened_count', 'opened', context=context)
|
res[id]['opened_monthly'] = self.__get_bar_values(cr, uid, id, obj, domain, ['opened'], 'opened_count', 'opened', context=context)
|
||||||
domain = [('mass_mailing_id', '=', id), ('replied', '>=', date_begin)]
|
domain = [('mass_mailing_id', '=', id), ('replied', '>=', date_begin_str), ('replied', '<=', date_end_str)]
|
||||||
res[id]['replied_monthly'] = self.__get_bar_values(cr, uid, id, obj, domain, ['replied'], 'replied_count', 'replied', context=context)
|
res[id]['replied_monthly'] = self.__get_bar_values(cr, uid, id, obj, domain, ['replied'], 'replied_count', 'replied', context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
@ -274,7 +277,7 @@ class MassMailing(osv.Model):
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'date': fields.datetime.now(),
|
'date': fields.datetime.now,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
import calendar
|
||||||
from datetime import date
|
from datetime import date
|
||||||
from dateutil import relativedelta
|
from dateutil import relativedelta
|
||||||
|
|
||||||
|
@ -48,12 +49,13 @@ class crm_case_section(osv.osv):
|
||||||
obj = self.pool.get('sale.order')
|
obj = self.pool.get('sale.order')
|
||||||
res = dict.fromkeys(ids, False)
|
res = dict.fromkeys(ids, False)
|
||||||
month_begin = date.today().replace(day=1)
|
month_begin = date.today().replace(day=1)
|
||||||
groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
|
date_begin = month_begin - relativedelta.relativedelta(months=self._period_number - 1).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
|
||||||
|
date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
|
||||||
for id in ids:
|
for id in ids:
|
||||||
res[id] = dict()
|
res[id] = dict()
|
||||||
created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', groupby_begin)]
|
created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)]
|
||||||
res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context)
|
res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context)
|
||||||
validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', groupby_begin)]
|
validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', date_begin), ('date_order', '<=', date_end)]
|
||||||
res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context)
|
res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue