From c813947614b735df3b360417234593531a07b598 Mon Sep 17 00:00:00 2001 From: younes Date: Tue, 20 Jan 2026 10:12:01 +0100 Subject: [PATCH 1/2] [IMP] odex_benefit: IMP Benefit --- .../odex_benefit/models/family_members.py | 35 ++++++++++++++++++- .../odex_benefit/views/family_members.xml | 16 +++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/odex25_benefit/odex_benefit/models/family_members.py b/odex25_benefit/odex_benefit/models/family_members.py index 344f64eec..756dfcd0b 100644 --- a/odex25_benefit/odex_benefit/models/family_members.py +++ b/odex25_benefit/odex_benefit/models/family_members.py @@ -293,6 +293,8 @@ class FamilyMemberProfile(models.Model): resume_date = fields.Date(string="Return Date") resume_notes = fields.Text(string="Return Notes") exit_benefit_date = fields.Date(string="Exit Benefit Date") + can_request_temporary_exception = fields.Boolean(string="Can Request Temporary Exception", + compute='_compute_can_request_temporary_exception', ) # def create(self, vals): # for line_vals in vals: @@ -343,6 +345,31 @@ class FamilyMemberProfile(models.Model): rec.last_education_levels = False rec.case_study = False + @api.depends( + 'relationn.relation_type', + 'case_study', + 'age', + 'benefit_id', + ) + def _compute_can_request_temporary_exception(self): + settings = self.env["family.validation.setting"].search([], limit=1) + + exceptional_age_scientific = ( + settings.exceptional_age_scientific_specialty + if settings else 22 + ) + + for rec in self: + if not rec.relationn: + rec.can_request_temporary_exception = False + continue + + is_son = rec.relationn.relation_type == 'son' + is_continuous = rec.case_study == 'continuous' + old_enough = (rec.age or 0) >= exceptional_age_scientific + + rec.can_request_temporary_exception = is_son and is_continuous and old_enough + @api.model def name_search(self, name='', args=None, operator='ilike', limit=100): if self._context.get('members_domain_force_all'): @@ -574,6 +601,7 @@ class FamilyMemberProfile(models.Model): 'state', 'is_dead', 'is_work', + 'case_study', 'benefit_id.member_ids.member_status', ) def check_member_status(self): @@ -1022,9 +1050,14 @@ class FamilyMemberProfile(models.Model): def action_exception_second_accept(self): for rec in self: rec.is_excluded_suspension = True - rec.state_a = 'exception_second_approve' + rec.state_a = 'family_services_manager' # rec.is_member_workflow = False + def action_exception_third_accept(self): + for rec in self: + rec.is_excluded_suspension = True + rec.state_a = 'exception_second_approve' + def action_exception_final_accept(self): for rec in self: rec.is_excluded_suspension = True diff --git a/odex25_benefit/odex_benefit/views/family_members.xml b/odex25_benefit/odex_benefit/views/family_members.xml index 31265349e..d5b21a778 100644 --- a/odex25_benefit/odex_benefit/views/family_members.xml +++ b/odex25_benefit/odex_benefit/views/family_members.xml @@ -56,6 +56,12 @@