Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Invoicing

Entity: account.journal

Compute Method: _get_json_activity_data

Inputs Method Outputs
  • id
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]})

Back to entity