@ -30,7 +30,7 @@ class GnCareer(models.Model):
mission_ids = fields . Many2many ( ' gn_career.mission ' , ' career_ids ' , compute = ' _compute_mission_ids ' , string = " Missions effectuées " , store = True )
mission_detail_ids = fields . One2many ( ' gn_career.mission.detail ' , ' career_id ' , string = " Détail de la mission " )
total_percentage = fields . Float ( compute = ' _compute_total_percentage ' , string = " Total Percentage " , store = True )
#total_percentage = fields.Float(compute='_compute_total_percentage', string="Total Percentage", store=True )
#@api.depends('mission_detail_ids.percentage')
def _compute_total_percentage ( self ) :
@ -38,7 +38,7 @@ class GnCareer(models.Model):
for record in self :
record . total_percentage = sum ( mission . percentage for mission in record . mission_detail_ids )
@api.constrains ( ' total_percentage ' )
#@api.constrains('total_percentage' )
def _check_total_percentage ( self ) :
for record in self :
_logger . warning ( " in career._check_total_percentage, ' bypass_total_percentage_check ' in context: %s " , self . _context . get ( ' bypass_total_percentage_check ' ) )
@ -106,14 +106,14 @@ class GnCareer(models.Model):
} ,
}
def write ( self , vals ) :
if ' mission_detail_ids ' in vals :
for record in self :
# Calculate total percentage, including changes from vals
total_percentage = record . _compute_total_percentage ( )
if total_percentage != 100 :
raise ValidationError ( " Le pourcentage total des missions au sein de la fiche de poste doit atteindre 100 % . Veuillez ajuster la répartition de la mission. " )
return super ( GnCareer , self ) . write ( vals )
# def write(self, vals) :
# if 'mission_detail_ids' in vals:
# for record in self:
# # Calculate total percentage, including changes from vals
# total_percentage = record._compute_total_percentage()
# if total_percentage != 100:
# raise ValidationError("Le pourcentage total des missions au sein de la fiche de poste doit atteindre 100%. Veuillez ajuster la répartition de la mission.")
# return super(GnCareer, self).write(vals)
class GnCareerMissionDetail ( models . Model ) :
_name = ' gn_career.mission.detail '
@ -122,9 +122,10 @@ class GnCareerMissionDetail(models.Model):
name = fields . Char ( related = ' mission_id.name ' )
career_id = fields . Many2one ( ' gn_career.career ' , string = " Fiche de poste " )
mission_id = fields . Many2one ( ' gn_career.mission ' , string = " Mission " )
exclude_mission_ids = fields . Many2many ( ' gn_career.mission ' , compute = ' _compute_exclude_mission_ids ' )
percentage = fields . Integer ( " Temps occupé par la mission en % d e la fiche de poste " , default = " 100 " )
tasks_percentage = fields . Float ( compute = ' _compute_tasks_percentage ' , string = " Répartition des tâches " , store = True )
task_ids = fields . Many 2many( ' gn_career.task.detail ' , ' mission_detail_id ' , string = " Tâches incluses dans la mission " )
task_ids = fields . One 2many( ' gn_career.task.detail ' , ' mission_detail_id ' , string = " Tâches incluses dans la mission " )
#related_mission_task_ids = fields.Many2many('gn_career.task', compute='_compute_related_mission_task_ids')
#lasting_task_ids = fields.Many2many('gn_career.task', compute='_compute_lasting_mission_task_ids')
@ -168,23 +169,31 @@ class GnCareerMissionDetail(models.Model):
# else:
# record.task_ids_display = record.task_ids
@api.depends ( ' task_ids ' , ' task_ids.percentage ' )
#@api.depends('task_ids', 'task_ids.percentage' )
def _compute_tasks_percentage ( self ) :
for record in self :
record . tasks_percentage = sum ( task . percentage for task in record . task_ids )
@api.constrains ( ' tasks_percentage ' )
#@api.constrains('tasks_percentage' )
def _check_total_percentage ( self ) :
for record in self :
if record . tasks_percentage != 100 :
raise ValidationError ( " Le pourcentage total des tâches au sein de la mission doit atteindre 100 % . Veuillez ajuster la répartition de la mission. " )
@api.depends ( ' career_id.mission_detail_ids.mission_id ' )
def _compute_exclude_mission_ids ( self ) :
for rec in self :
existing_mission_ids = rec . career_id . mission_detail_ids . mapped ( ' mission_id.id ' )
rec . exclude_mission_ids = [ ( 6 , 0 , existing_mission_ids ) ]
class GnCareerTaskDetail ( models . Model ) :
_name = ' gn_career.task.detail '
_description = " Détails d ' une tâche "
mission_detail_id = fields . Many2one ( ' gn_career.mission.detail ' , string = " Mission de la fiche de poste " , required = True )
name = fields . Char ( related = ' task_id.name ' )
mission_detail_id = fields . Many2one ( ' gn_career.mission.detail ' , string = " Mission de la fiche de poste " )
career_id = fields . Many2one ( ' gn_career.career ' , related = ' mission_detail_id.career_id ' , string = " Fiche de poste " , readonly = True )
employee_id = fields . Many2one ( string = " Employee " , related = ' career_id.employee_id ' , readonly = True )
#mission_id = fields.Many2one('gn_career.mission', related='mission_detail_id.mission_id', string="")