# -*- coding: utf-8 -*- from odoo import api, fields, models class SurveySurvey(models.Model): _inherit = 'survey.survey' scoring_formula = fields.Selection([ ('total', 'Total Score'), ('average', 'Average Score'), ], string='Scoring Formula', default='total', required=True) @api.depends( 'question_and_page_ids', 'question_and_page_ids.suggested_answer_ids', 'question_and_page_ids.suggested_answer_ids.answer_score', 'question_and_page_ids.question_type', 'question_and_page_ids.scale_max', 'question_and_page_ids.scale_multiplier', ) def _compute_scoring_max_obtainable(self): super()._compute_scoring_max_obtainable() for survey in self: scale_max_obtainable = sum( (question.scale_max * question.scale_multiplier) for question in survey.question_ids if question.question_type == 'scale' and question.is_scored_question ) survey.scoring_max_obtainable += scale_max_obtainable