[FIX] sale_crm,crm: handle timezone in dashboard

Complete parent commit by correcting overwritten method.

Also use existing method to retrive date depending on tz in context.
This commit is contained in:
Christophe Simonis
2018-03-06 11:23:46 +01:00
parent 31ad2aa31e
commit 4aea19d9e8
2 changed files with 11 additions and 18 deletions
+3 -12
View File
@@ -1,15 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import pytz
from datetime import datetime, timedelta, date
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
import logging
from operator import itemgetter
from werkzeug import url_encode
from openerp import SUPERUSER_ID
from openerp import tools, api
from openerp import tools, api, fields as newfields
from openerp.addons.base.res.res_partner import format_address
from openerp.addons.crm import crm_stage
from openerp.osv import fields, osv
@@ -1106,14 +1104,7 @@ Update your business card, phone book, social media,... Send an email right now
return res
def retrieve_sales_dashboard(self, cr, uid, context=None):
date_today = date.today()
# We imitate here what the JS search does in the user's browser:
# retrieve the user's local date
if context and context.get('tz'):
user_tz = pytz.timezone(context['tz'])
now_utc = pytz.utc.localize(datetime.now())
now_user_tz = now_utc.astimezone(user_tz)
date_today = date(now_user_tz.year, now_user_tz.month, now_user_tz.day)
date_today = newfields.Date.from_string(fields.date.context_today(self, cr, uid, context=context))
res = {
'meeting': {
+8 -6
View File
@@ -1,8 +1,8 @@
from openerp import models, fields, api, _, tools
from datetime import datetime, date
from openerp import models, fields, api, tools
from openerp.osv import fields as oldfields
from datetime import datetime
from dateutil.relativedelta import relativedelta
import openerp.addons.decimal_precision as dp
class crm_lead(models.Model):
_inherit = ['crm.lead']
@@ -28,6 +28,8 @@ class crm_lead(models.Model):
def retrieve_sales_dashboard(self, cr, uid, context=None):
res = super(crm_lead, self).retrieve_sales_dashboard(cr, uid, context=None)
today = fields.Date.from_string(oldfields.date.context_today(self, cr, uid, context=context))
res['invoiced'] = {
'this_month': 0,
'last_month': 0,
@@ -35,7 +37,7 @@ class crm_lead(models.Model):
account_invoice_domain = [
('state', 'in', ['open', 'paid']),
('user_id', '=', uid),
('date', '>=', date.today().replace(day=1) - relativedelta(months=+1)),
('date', '>=', today.replace(day=1) - relativedelta(months=+1)),
('type', 'in', ['out_invoice', 'out_refund'])
]
@@ -43,9 +45,9 @@ class crm_lead(models.Model):
for inv in invoice_ids:
if inv['date']:
inv_date = datetime.strptime(inv['date'], tools.DEFAULT_SERVER_DATE_FORMAT).date()
if inv_date <= date.today() and inv_date >= date.today().replace(day=1):
if inv_date <= today and inv_date >= today.replace(day=1):
res['invoiced']['this_month'] += inv['amount_untaxed_signed']
elif inv_date < date.today().replace(day=1) and inv_date >= date.today().replace(day=1) - relativedelta(months=+1):
elif inv_date < today.replace(day=1) and inv_date >= today.replace(day=1) - relativedelta(months=+1):
res['invoiced']['last_month'] += inv['amount_untaxed_signed']
res['invoiced']['target'] = self.pool('res.users').browse(cr, uid, uid, context=context).target_sales_invoiced