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)
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]})

Back to entity