@@ -4,19 +4,22 @@ class OkrBase(models.Model):
44 _description = 'OKR BASE'
55 _name = "okr.base"
66
7- name = fields .Char ()
7+ name = fields .Char (required = True )
8+ description = fields .Char ()
9+ user_id = fields .Many2one ('res.users' )
810 completed_percentage = fields .Float (compute = '_compute_completed_percentage' )
11+ type = fields .Selection (selection = [('commitment' , 'commitment' ),('inspirational' , 'inspirational' )], required = True )
912 kr_line_ids = fields .One2many ('okr.base.line' , 'okr_base_id' )
1013
1114 def _compute_completed_percentage (self ):
1215 for kr in self :
1316 if kr .kr_line_ids :
14- cum = 0
15- cant = 0
17+ w_cum = 0
18+ sum_weigh = 0
1619 for krl in kr .kr_line_ids :
17- cum += krl .completed_percentage
18- cant += 1
19- kr .completed_percentage = cum / cant
20+ w_cum += krl .completed_percentage * krl . weight
21+ sum_weigh += krl . weight
22+ kr .completed_percentage = w_cum / sum_weigh
2023 else :
2124 kr .completed_percentage = 0
2225
@@ -27,8 +30,11 @@ class OkrBaseLine(models.Model):
2730 _name = "okr.base.line"
2831
2932 name = fields .Char ()
33+ description = fields .Char ()
34+ user_id = fields .Many2one ('res.users' )
3035 okr_base_id = fields .Many2one (comodel_name = 'okr.base' , required = True )
3136 actual_value = fields .Float ()
37+ weight = fields .Float ()
3238 target = fields .Float ()
3339 completed_percentage = fields .Float (compute = '_compute_completed_percentage_line' )
3440
@@ -39,4 +45,3 @@ def _compute_completed_percentage_line(self):
3945 kr .completed_percentage = (kr .actual_value / kr .target )
4046 else :
4147 kr .completed_percentage = 1
42-
0 commit comments