64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
from odoo import api, fields, models
|
|
|
|
|
|
class MetricsAiSuggestionWizard(models.TransientModel):
|
|
_name = 'metrics.ai.suggestion.wizard'
|
|
_description = 'AI suggestions of ESG Metrics'
|
|
|
|
suggestion_line_ids = fields.One2many('metrics.ai.suggestion.line', 'wizard_id')
|
|
has_one_or_more_selected = fields.Boolean(compute='_compute_has_one_or_more_selected')
|
|
|
|
@api.depends('suggestion_line_ids.is_selected')
|
|
def _compute_has_one_or_more_selected(self):
|
|
for wizard in self:
|
|
wizard.has_one_or_more_selected = any(wizard.suggestion_line_ids.mapped('is_selected'))
|
|
|
|
def action_add_suggestions(self):
|
|
self.ensure_one()
|
|
metric_vals = [
|
|
{
|
|
'name': line.name,
|
|
'esrs_id': line.esrs_id.id,
|
|
'type': line.type,
|
|
'category': line.category,
|
|
'notes': line.detail,
|
|
}
|
|
for line in self.suggestion_line_ids
|
|
if line.is_selected or self.env.context.get('add_all_suggestions')
|
|
]
|
|
if metric_vals:
|
|
self.env['esg.metric'].create(metric_vals)
|
|
return {
|
|
'type': 'ir.actions.client',
|
|
'tag': 'display_notification',
|
|
'params': {
|
|
'type': 'success',
|
|
'message': self.env._('Metrics have been successfully created.'),
|
|
'next': {'type': 'ir.actions.act_window_close'},
|
|
}
|
|
}
|
|
return {'type': 'ir.actions.act_window_close'}
|
|
|
|
|
|
class MetricsAiSuggestionLine(models.TransientModel):
|
|
_name = 'metrics.ai.suggestion.line'
|
|
_description = 'AI suggestion of ESG Metric'
|
|
|
|
wizard_id = fields.Many2one('metrics.ai.suggestion.wizard', required=True)
|
|
is_selected = fields.Boolean()
|
|
esrs_id = fields.Many2one('esg.esrs', required=True)
|
|
code = fields.Char(related='esrs_id.code')
|
|
name = fields.Char()
|
|
type = fields.Selection(
|
|
selection=[
|
|
('positive_impact', 'Positive Impact'),
|
|
('negative_impact', 'Negative Impact'),
|
|
('risk', 'Risk'),
|
|
('opportunity', 'Opportunity'),
|
|
],
|
|
required=True,
|
|
readonly=True,
|
|
)
|
|
category = fields.Selection(related='esrs_id.category')
|
|
detail = fields.Text()
|