[IMP] digest: change the logic from "Last day" to "Last 24 hours"

Purpose
=======

Change the logic of the KPI "Day-1" to "Last 24 hours", so new freshly
created data in the free trial are included in the statistics (same for
last week and last month logic). This requires to change from date-based
computation to datetime-based.

Change the URL of the "connect" button from "/web/login" to the root
URL (so the user is not stuck if he didn't activate yet his database).

Task ID-2359406

closes odoo/odoo#60166

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
std-odoo
2020-10-27 11:11:54 +00:00
committed by Thibault Delavallée
parent 0a948f67ec
commit 01ceca36b2
2 changed files with 14 additions and 15 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ class Digest(models.Model):
FROM account_move_line line
JOIN account_move move ON move.id = line.move_id
JOIN account_journal journal ON journal.id = move.journal_id
WHERE line.company_id = %s AND line.date >= %s AND line.date < %s
WHERE line.company_id = %s AND line.date > %s::DATE AND line.date <= %s::DATE
AND journal.type = 'sale'
''', [company.id, start, end])
query_res = self._cr.fetchone()
+13 -14
View File
@@ -53,7 +53,7 @@ class Digest(models.Model):
digest.available_fields = ', '.join(kpis_values_fields)
def _get_kpi_compute_parameters(self):
return fields.Date.to_string(self._context.get('start_date')), fields.Date.to_string(self._context.get('end_date')), self.env.company
return fields.Datetime.to_string(self._context.get('start_datetime')), fields.Datetime.to_string(self._context.get('end_datetime')), self.env.company
def _compute_kpi_res_users_connected_value(self):
for record in self:
@@ -123,7 +123,7 @@ class Digest(models.Model):
add_context={
'title': self.name,
'top_button_label': _('Connect'),
'top_button_url': url_join(web_base_url, '/web/login'),
'top_button_url': web_base_url,
'company': user.company_id,
'user': user,
'tips_count': tips_count,
@@ -200,8 +200,8 @@ class Digest(models.Model):
kpis_actions = self._compute_kpis_actions(company, user)
for col_index, (tf_name, tf) in enumerate(self._compute_timeframes(company)):
digest = self.with_context(start_date=tf[0][0], end_date=tf[0][1]).with_user(user).with_company(company)
previous_digest = self.with_context(start_date=tf[1][0], end_date=tf[1][1]).with_user(user).with_company(company)
digest = self.with_context(start_datetime=tf[0][0], end_datetime=tf[0][1]).with_user(user).with_company(company)
previous_digest = self.with_context(start_datetime=tf[1][0], end_datetime=tf[1][1]).with_user(user).with_company(company)
for index, field_name in enumerate(digest_fields):
kpi_values = kpis[index]
kpi_values['kpi_action'] = kpis_actions.get(field_name)
@@ -286,21 +286,20 @@ class Digest(models.Model):
return date.today() + delta
def _compute_timeframes(self, company):
now = datetime.utcnow()
start_datetime = datetime.utcnow()
tz_name = company.resource_calendar_id.tz
if tz_name:
now = pytz.timezone(tz_name).localize(now)
start_date = now.date()
start_datetime = pytz.timezone(tz_name).localize(start_datetime)
return [
(_('Yesterday'), (
(start_date + relativedelta(days=-1), start_date),
(start_date + relativedelta(days=-2), start_date + relativedelta(days=-1)))
(_('Last 24 hours'), (
(start_datetime + relativedelta(days=-1), start_datetime),
(start_datetime + relativedelta(days=-2), start_datetime + relativedelta(days=-1)))
), (_('Last 7 Days'), (
(start_date + relativedelta(weeks=-1), start_date),
(start_date + relativedelta(weeks=-2), start_date + relativedelta(weeks=-1)))
(start_datetime + relativedelta(weeks=-1), start_datetime),
(start_datetime + relativedelta(weeks=-2), start_datetime + relativedelta(weeks=-1)))
), (_('Last 30 Days'), (
(start_date + relativedelta(months=-1), start_date),
(start_date + relativedelta(months=-2), start_date + relativedelta(months=-1)))
(start_datetime + relativedelta(months=-1), start_datetime),
(start_datetime + relativedelta(months=-2), start_datetime + relativedelta(months=-1)))
)
]