survey_scoring_extended/models/survey_survey.py
2026-05-15 17:34:29 +07:00

29 lines
1.0 KiB
Python

# -*- 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