|
|
today = fields.Date.context_today(self)
activities = defaultdict(list)
act_type_name = self.env['mail.activity.type']._field_to_sql('act_type', 'name')
sql_query = SQL(
"""
SELECT activity.id,
activity.res_id,
activity.res_model,
activity.summary,
CASE WHEN activity.date_deadline < %(today)s THEN 'late' ELSE 'future' END as status,
act_type.id as act_type_id,
%(act_type_name)s as act_type_name,
act_type.category as activity_category,
activity.date_deadline,
move.journal_id
FROM account_move move
JOIN mail_activity activity ON activity.res_id = move.id AND activity.res_model = 'account.move'
LEFT JOIN mail_activity_type act_type ON activity.activity_type_id = act_type.id
WHERE move.journal_id = ANY(%(ids)s)
AND move.company_id = ANY(%(company_ids)s)
AND activity.active = TRUE
UNION ALL
SELECT activity.id,
activity.res_id,
activity.res_model,
activity.summary,
CASE WHEN activity.date_deadline < %(today)s THEN 'late' ELSE 'future' END as status,
act_type.id as act_type_id,
%(act_type_name)s as act_type_name,
act_type.category as activity_category,
activity.date_deadline,
journal.id as journal_id
FROM account_journal journal
JOIN mail_activity activity ON activity.res_id = journal.id AND activity.res_model = 'account.journal'
LEFT JOIN mail_activity_type act_type ON activity.activity_type_id = act_type.id
WHERE journal.id = ANY(%(ids)s)
AND journal.company_id = ANY(%(company_ids)s)
AND activity.active = TRUE
""",
today=today,
act_type_name=act_type_name,
ids=self.ids,
company_ids=self.env.companies.ids,
)
self.env.cr.execute(sql_query)
for activity_data in self.env.cr.dictfetchall():
activities[activity_data['journal_id']].append(self._transform_activity_dict(activity_data))
for journal in self:
journal.json_activity_data = json.dumps({'activities': activities[journal.id]})
|
|