|
|
today = fields.Date.context_today(self)
activities = defaultdict(list)
lang = self.env.user.lang or get_lang(self.env).code
sql_query = """
SELECT activity.id,
activity.res_id,
activity.res_model,
activity.summary,
act_type.id as act_type_id,
CASE WHEN activity.date_deadline < %(today)s THEN 'late' ELSE 'future' END as status,
COALESCE(act_type.name->> %(lang)s, act_type.name->>'en_US') as act_type_name,
act_type.category as activity_category,
activity.date_deadline,
move.date,
move.ref,
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)
"""
self.env.cr.execute(sql_query, {
'ids': self.ids,
'company_ids': self.env.companies.ids,
'today': today,
'lang': lang,
})
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]})
|
|