diff --git a/odex25_ensan/odex_benefit/models/benefit.py b/odex25_ensan/odex_benefit/models/benefit.py index 8c314e183..dfa0eebe4 100644 --- a/odex25_ensan/odex_benefit/models/benefit.py +++ b/odex25_ensan/odex_benefit/models/benefit.py @@ -220,47 +220,49 @@ class GrantBenefitProfile(models.Model): husband_id = fields.Char('Husband ID') date_death_husband = fields.Date() date_divorcee = fields.Date() - # Education_data - education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age','Under Study Age')]) - case_study = fields.Selection(string='Case Study', - selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), - ('graduate', 'Graduate')]) - illiterate_reason = fields.Char(string='Illiterate Reason') - intermittent_reason = fields.Many2one('education.illiterate.reason',string='Intermittent Reason') - education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), - ('special', 'Special')]) - education_start_date = fields.Date(string='Education Start Date') - education_end_date = fields.Date(string='Education End Date') - educational_certificate = fields.Many2many('ir.attachment','rel_educational_certificate_attachment','benefit_id','attachment_id',string='Educational Certificate') - last_education_entity = fields.Selection(string='Last Education Entity', - selection=[('governmental', 'Governmental'), - ('special', 'Special')]) - entities = fields.Many2one("education.entities", string='Entity') - last_entities = fields.Many2one("education.entities", string='Last Entity') - education_levels = fields.Many2one("education.level", string='Education Levels') - last_education_levels = fields.Many2one("education.level", string='Last Education Levels') - nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False) - literacy_school_note = fields.Text(string="Literacy School Note", required=False) - classroom = fields.Many2one('education.classroom', string='Classroom') - last_classroom = fields.Many2one('education.classroom', string='Last Classroom') - degree = fields.Many2one('education.result', string='Degree') - last_degree = fields.Many2one('education.result', string='Last Degree') - percentage = fields.Float(string="Percentage%") - last_percentage = fields.Float(string="Last Percentage%") - last_education_start_date = fields.Date(string='Last Education Start Date') - last_education_end_date = fields.Date(string='Last Education End Date') - last_educational_certificate = fields.Many2many('ir.attachment','rel_last_educational_certificate_attachment','benefit_id','attachment_id',string='Last Educational Certificate') - end_date = fields.Date('End Date') - specialization_ids = fields.Many2one('specialization.specialization', string='specialization') - last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization') - weak_study = fields.Many2many('study.material',relation='grant_benefit_weak_study_rel',string='Weak Study') - educational_institution_information = fields.Char('Educational institution information') - graduation_status = fields.Selection(string='Education Status', selection=[('graduated', 'graduated'), - ('ungraduated', 'ungraduated'), - ('intermittent', 'intermittent')]) - graduation_date = fields.Date('Graduation Date') - reasons_for_interruption = fields.Char('Reasons for interruption') - interruption_date = fields.Date('Interruption Date') + # # Education_data + # education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age','Under Study Age')]) + # case_study = fields.Selection(string='Case Study', + # selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), + # ('graduate', 'Graduate')]) + # illiterate_reason = fields.Char(string='Illiterate Reason') + # intermittent_reason = fields.Many2one('education.illiterate.reason',string='Intermittent Reason') + # education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), + # ('special', 'Special')]) + # education_start_date = fields.Date(string='Education Start Date') + # education_end_date = fields.Date(string='Education End Date') + # educational_certificate = fields.Many2many('ir.attachment','rel_educational_certificate_attachment','benefit_id','attachment_id',string='Educational Certificate') + # last_education_entity = fields.Selection(string='Last Education Entity', + # selection=[('governmental', 'Governmental'), + # ('special', 'Special')]) + # entities = fields.Many2one("education.entities", string='Entity') + # last_entities = fields.Many2one("education.entities", string='Last Entity') + # education_levels = fields.Many2one("education.level", string='Education Levels') + # last_education_levels = fields.Many2one("education.level", string='Last Education Levels') + # nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False) + # literacy_school_note = fields.Text(string="Literacy School Note", required=False) + # classroom = fields.Many2one('education.classroom', string='Classroom') + # last_classroom = fields.Many2one('education.classroom', string='Last Classroom') + # degree = fields.Many2one('education.result', string='Degree') + # last_degree = fields.Many2one('education.result', string='Last Degree') + # percentage = fields.Float(string="Percentage%") + # last_percentage = fields.Float(string="Last Percentage%") + # last_education_start_date = fields.Date(string='Last Education Start Date') + # last_education_end_date = fields.Date(string='Last Education End Date') + # last_educational_certificate = fields.Many2many('ir.attachment','rel_last_educational_certificate_attachment','benefit_id','attachment_id',string='Last Educational Certificate') + # end_date = fields.Date('End Date') + # specialization_ids = fields.Many2one('specialization.specialization', string='specialization') + # last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization') + # weak_study = fields.Many2many('study.material',relation='grant_benefit_weak_study_rel',string='Weak Study') + # educational_institution_information = fields.Char('Educational institution information') + # graduation_status = fields.Selection(string='Education Status', selection=[('graduated', 'graduated'), + # ('ungraduated', 'ungraduated'), + # ('intermittent', 'intermittent')]) + # graduation_date = fields.Date('Graduation Date') + # reasons_for_interruption = fields.Char('Reasons for interruption') + # interruption_date = fields.Date('Interruption Date') + mother_education_status_ids = fields.One2many('education.status','benefit_id',string='Mother Education Status') + replacement_mother_education_status_ids = fields.One2many('education.status','replacement_benefit_id',string='Replacement Mother Education Status') # attach study_document_attached = fields.Many2many('ir.attachment','rel_study_document_attachment','benefit_id','attachment_id',string="Study Document Attached") acadimec_regsteration_attached = fields.Binary(string="Acadimec Regsteration Attached",attachment=True ) @@ -1439,30 +1441,23 @@ class GrantBenefitProfile(models.Model): 'member_income': rec.mother_income, 'is_alhaju': rec.is_alhaju, 'is_amra': rec.is_amra, - 'education_status': rec.education_status, - 'case_study': rec.case_study, - 'education_entity': rec.education_entity, - 'last_education_entity': rec.last_education_entity, - 'entities': rec.entities.id, - 'last_entities': rec.last_entities.id, - 'education_levels': rec.education_levels.id, - 'last_education_levels': rec.last_education_levels.id, - 'specialization_ids': rec.specialization_ids.id, - 'last_specialization_ids': rec.last_specialization_ids.id, - 'classroom': rec.classroom.id, - 'last_classroom': rec.last_classroom.id, - 'degree': rec.degree.id, - 'last_degree': rec.last_degree.id, - 'percentage': rec.percentage, - 'last_percentage': rec.last_percentage, - 'weak_study': rec.weak_study.ids, + 'member_education_status_ids' : [(0,0,{ + 'sequence': r.sequence, + 'education_status_type': r.education_status_type, + 'education_status': r.education_status, + 'case_study': r.case_study, + 'education_entity': r.education_entity, + 'entities': r.entities.id, + 'education_levels': r.education_levels.id, + 'specialization_ids': r.specialization_ids.id, + 'classroom': r.classroom.id, + 'degree': r.degree.id, + 'percentage': r.percentage, + 'education_start_date':r.education_start_date, + 'education_end_date':r.education_end_date, + 'educational_certificate':r.educational_certificate, + })for r in rec.mother_education_status_ids], 'member_status': rec.mother_status, - 'education_start_date':rec.education_start_date, - 'education_end_date':rec.education_end_date, - 'educational_certificate':rec.educational_certificate, - 'last_education_start_date': rec.last_education_start_date, - 'last_education_end_date': rec.last_education_end_date, - 'last_educational_certificate': rec.last_educational_certificate, } self.write({ 'member_ids': [(0, 0, val)] @@ -1489,29 +1484,23 @@ class GrantBenefitProfile(models.Model): 'member_income': rec.replacement_mother_income, 'is_alhaju': rec.replacement_is_alhaju, 'is_amra': rec.replacement_is_amra, - 'education_status': rec.replacement_education_status, - 'case_study': rec.replacement_case_study, - 'education_entity': rec.replacement_education_entity, - 'last_education_entity': rec.replacement_last_education_entity, - 'entities': rec.replacement_entities.id, - 'last_entities': rec.replacement_last_entities.id, - 'education_levels': rec.replacement_education_levels.id, - 'last_education_levels': rec.replacement_last_education_levels.id, - 'specialization_ids': rec.replacement_specialization_ids.id, - 'last_specialization_ids': rec.replacement_last_specialization_ids.id, - 'classroom': rec.replacement_classroom.id, - 'last_classroom': rec.replacement_last_classroom.id, - 'degree': rec.replacement_degree.id, - 'last_degree': rec.replacement_last_degree.id, - 'percentage': rec.replacement_percentage, - 'weak_study': rec.replacement_weak_study.ids, + 'member_education_status_ids': [(0, 0, { + 'sequence': r.replacement_sequence, + 'education_status_type': r.education_status_type, + 'education_status': r.education_status, + 'case_study': r.case_study, + 'education_entity': r.education_entity, + 'entities': r.entities.id, + 'education_levels': r.education_levels.id, + 'specialization_ids': r.specialization_ids.id, + 'classroom': r.classroom.id, + 'degree': r.degree.id, + 'percentage': r.percentage, + 'education_start_date': r.education_start_date, + 'education_end_date': r.education_end_date, + 'educational_certificate': r.educational_certificate, + }) for r in rec.replacement_mother_education_status_ids], 'member_status': rec.replacement_mother_status, - 'education_start_date': rec.replacement_education_start_date, - 'education_end_date': rec.replacement_education_end_date, - 'educational_certificate': rec.replacement_educational_certificate, - 'last_education_start_date': rec.replacement_last_education_start_date, - 'last_education_end_date': rec.replacement_last_education_end_date, - 'last_educational_certificate': rec.replacement_last_educational_certificate, } self.write({ 'member_ids': [(0, 0, val)] @@ -1519,6 +1508,22 @@ class GrantBenefitProfile(models.Model): def replace_mother_as_member(self, id): for rec in self: + new_education_status = self.env['member.education.status'].sudo().create([{ + 'sequence': r.sequence, + 'education_status_type': r.education_status_type, + 'education_status': r.education_status, + 'case_study': r.case_study, + 'education_entity': r.education_entity, + 'entities': r.entities.id, + 'education_levels': r.education_levels.id, + 'specialization_ids': r.specialization_ids.id, + 'classroom': r.classroom.id, + 'degree': r.degree.id, + 'percentage': r.percentage, + 'education_start_date':r.education_start_date, + 'education_end_date':r.education_end_date, + 'educational_certificate':r.educational_certificate, + }for r in rec.mother_education_status_ids]) mother_name = rec.get_mother_name() val = { 'name': mother_name, @@ -1539,36 +1544,30 @@ class GrantBenefitProfile(models.Model): 'member_income': rec.mother_income, 'is_alhaju': rec.is_alhaju, 'is_amra': rec.is_amra, - 'education_status': rec.education_status, - 'case_study': rec.case_study, - 'education_entity': rec.education_entity, - 'last_education_entity': rec.last_education_entity, - 'entities': rec.entities.id, - 'last_entities': rec.last_entities.id, - 'education_levels': rec.education_levels.id, - 'last_education_levels': rec.last_education_levels.id, - 'specialization_ids': rec.specialization_ids.id, - 'last_specialization_ids': rec.last_specialization_ids.id, - 'classroom': rec.classroom.id, - 'last_classroom': rec.last_classroom.id, - 'degree': rec.degree.id, - 'last_degree': rec.last_degree.id, - 'percentage': rec.percentage, - 'last_percentage': rec.last_percentage, - 'weak_study': rec.weak_study.ids, + 'member_education_status_ids': [(6, 0,new_education_status.ids)], 'member_status': rec.mother_status, - 'education_start_date': rec.education_start_date, - 'education_end_date': rec.education_end_date, - 'educational_certificate': rec.educational_certificate, - 'last_education_start_date': rec.last_education_start_date, - 'last_education_end_date': rec.last_education_end_date, - 'last_educational_certificate': rec.last_educational_certificate, } member = self.member_ids.browse(id) if member: member.write(val) def replace_replacement_mother_as_member(self, id): for rec in self: + new_education_status = self.env['member.education.status'].sudo().create([{ + 'sequence': r.replacement_sequence, + 'education_status_type': r.education_status_type, + 'education_status': r.education_status, + 'case_study': r.case_study, + 'education_entity': r.education_entity, + 'entities': r.entities.id, + 'education_levels': r.education_levels.id, + 'specialization_ids': r.specialization_ids.id, + 'classroom': r.classroom.id, + 'degree': r.degree.id, + 'percentage': r.percentage, + 'education_start_date': r.education_start_date, + 'education_end_date': r.education_end_date, + 'educational_certificate': r.educational_certificate, + } for r in rec.replacement_mother_education_status_ids]) mother_name = rec.get_replacement_mother_name() val = { 'name': mother_name, @@ -1589,30 +1588,8 @@ class GrantBenefitProfile(models.Model): 'member_income': rec.replacement_mother_income, 'is_alhaju': rec.replacement_is_alhaju, 'is_amra': rec.replacement_is_amra, - 'education_status': rec.replacement_education_status, - 'case_study': rec.replacement_case_study, - 'education_entity': rec.replacement_education_entity, - 'last_education_entity': rec.replacement_last_education_entity, - 'entities': rec.replacement_entities.id, - 'last_entities': rec.replacement_last_entities.id, - 'education_levels': rec.replacement_education_levels.id, - 'last_education_levels': rec.replacement_last_education_levels.id, - 'specialization_ids': rec.replacement_specialization_ids.id, - 'last_specialization_ids': rec.replacement_last_specialization_ids.id, - 'classroom': rec.replacement_classroom.id, - 'last_classroom': rec.replacement_last_classroom.id, - 'degree': rec.replacement_degree.id, - 'last_degree': rec.replacement_last_degree.id, - 'percentage': rec.replacement_percentage, - 'last_percentage': rec.replacement_last_percentage, - 'weak_study': rec.replacement_weak_study.ids, + 'member_education_status_ids': [(6, 0, new_education_status.ids)], 'member_status': rec.replacement_mother_status, - 'education_start_date': rec.replacement_education_start_date, - 'education_end_date': rec.replacement_education_end_date, - 'educational_certificate': rec.replacement_educational_certificate, - 'last_education_start_date': rec.replacement_last_education_start_date, - 'last_education_end_date': rec.replacement_last_education_end_date, - 'last_educational_certificate': rec.replacement_last_educational_certificate, } member = self.member_ids.browse(id) if member: @@ -2022,6 +1999,61 @@ class GrantBenefitProfile(models.Model): member.check_member_status() self.action_auto_suspend() +class EducationStatus(models.Model): + _name = 'education.status' + _description = "Education - Status" + + benefit_id = fields.Many2one('grant.benefit',string='Benefit') + replacement_benefit_id = fields.Many2one('grant.benefit',string='Benefit') + sequence = fields.Char(string='Sequence',readonly = True,compute='_compute_sequence',store=True) + replacement_sequence = fields.Char(string='Sequence',readonly = True,compute='_compute_sequence',store=True) + education_status_type = fields.Selection(string='Education Status Type',selection=[('current', 'Current'), ('last', 'Last')]) + education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age', 'Under Study Age')]) + education_levels = fields.Many2one("education.level", string='Education Levels') + illiterate_reason = fields.Char(string='Illiterate Reason') + case_study = fields.Selection(string='Case Study', + selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), + ('graduate', 'Graduate')]) + intermittent_reason = fields.Many2one('education.illiterate.reason', string='Intermittent Reason') + education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), + ('special', 'Special')]) + entities = fields.Many2one("education.entities", string='Entity') + educational_certificate = fields.Many2many('ir.attachment', 'rel_educational_certificate_status', 'education_id', + 'attachment_id', string='Educational Certificate') + specialization_ids = fields.Many2one('specialization.specialization', string='specialization') + classroom = fields.Many2one('education.classroom', string='Classroom') + degree = fields.Many2one('education.result', string='Degree') + percentage = fields.Float(string="Percentage%") + education_start_date = fields.Date(string='Education Start Date') + education_end_date = fields.Date(string='Education End Date') + + @api.depends('benefit_id','replacement_benefit_id') + def _compute_sequence(self): + for rec in self: + rec.sequence = len(rec.benefit_id.mother_education_status_ids) + rec.replacement_sequence = len(rec.replacement_benefit_id.replacement_mother_education_status_ids) + + @api.onchange('education_status_type') + def _onchange_education_status_type(self): + res = {} + for rec in self: + if rec.education_status_type == 'current': + exist_record = rec.benefit_id.mother_education_status_ids.filtered( + lambda r: r.education_status_type == 'current' and r.sequence != rec.sequence) + if exist_record: + rec.education_status_type = 'last' + res['warning'] = {'title': _('ValidationError'), + 'message': _( + 'You cannot add two current education status. if you want to update the last status click on update status button')} + return res + replacement_exist_record = rec.replacement_benefit_id.replacement_mother_education_status_ids.filtered( + lambda r: r.education_status_type == 'current' and r.replacement_sequence != rec.replacement_sequence) + if replacement_exist_record: + rec.education_status_type = 'last' + res['warning'] = {'title': _('ValidationError'), + 'message': _( + 'You cannot add two current education status. if you want to update the last status click on update status button')} + return res class BenefitFollowers(models.Model): _name = 'benefit.followers' diff --git a/odex25_ensan/odex_benefit/models/family_members.py b/odex25_ensan/odex_benefit/models/family_members.py index 3b40e1b4f..879ecddbb 100644 --- a/odex25_ensan/odex_benefit/models/family_members.py +++ b/odex25_ensan/odex_benefit/models/family_members.py @@ -69,125 +69,51 @@ class FamilyMemberProfile(models.Model): hobbies_ids = fields.One2many("member.hobbies",'member_id') diseases_ids = fields.One2many("member.diseases",'member_id') disabilities_ids = fields.One2many("member.disabilities",'member_id') - is_scientific_specialty = fields.Boolean('Is Scientific Specialty?',related="specialization_ids.is_scientific_specialty") - is_medical_specialty = fields.Boolean('Is Medical Specialty?',related="specialization_ids.is_medical_specialty") + is_scientific_specialty = fields.Boolean('Is Scientific Specialty?',compute="_compute_is_scientific_specialty") + is_medical_specialty = fields.Boolean('Is Medical Specialty?',compute="_compute_is_medical_specialty") has_disabilities = fields.Boolean('Has Disabilities?') minor_siblings = fields.Boolean('minor siblings?') is_alhaju = fields.Boolean(string='Member Hajj') is_amra = fields.Boolean(string='Member Umra') - # Education_data - education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age', 'Under Study Age')]) - case_study = fields.Selection(string='Case Study', - selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), - ('graduate', 'Graduate')]) - illiterate_reason = fields.Char(string='Illiterate Reason') - intermittent_reason = fields.Many2one('education.illiterate.reason',string='Intermittent Reason') - educational_certificate = fields.Binary(attachment=True,string='Educational Certificate') - education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), - ('special', 'Special')]) - last_education_entity = fields.Selection(string='Last Education Entity', - selection=[('governmental', 'Governmental'), - ('special', 'Special')]) - entities = fields.Many2one("education.entities", string='Entity') - last_entities = fields.Many2one("education.entities", string='Last Entity') - education_levels = fields.Many2one("education.level", string='Education Levels') - last_education_levels = fields.Many2one("education.level", string='Last Education Levels') - nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False) - literacy_school_note = fields.Text(string="Literacy School Note", required=False) - classroom = fields.Many2one('education.classroom', string='Classroom') - last_classroom = fields.Many2one('education.classroom', string='Last Classroom') - last_educational_certificate = fields.Binary(attachment=True,string='Last Educational Certificate') - degree = fields.Many2one('education.result', string='Degree') - last_degree = fields.Many2one('education.result', string='Last Degree') - percentage = fields.Float(string="Percentage%") - last_percentage = fields.Float(string="Last Percentage%") - education_start_date = fields.Date(string='Education Start Date') - education_end_date = fields.Date(string='Education End Date') - end_date = fields.Date('End Date') + # # Education_data + # education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age', 'Under Study Age')]) + # case_study = fields.Selection(string='Case Study', + # selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), + # ('graduate', 'Graduate')]) + # illiterate_reason = fields.Char(string='Illiterate Reason') + # intermittent_reason = fields.Many2one('education.illiterate.reason',string='Intermittent Reason') + # educational_certificate = fields.Binary(attachment=True,string='Educational Certificate') + # education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), + # ('special', 'Special')]) + # last_education_entity = fields.Selection(string='Last Education Entity', + # selection=[('governmental', 'Governmental'), + # ('special', 'Special')]) + # entities = fields.Many2one("education.entities", string='Entity') + # last_entities = fields.Many2one("education.entities", string='Last Entity') + # education_levels = fields.Many2one("education.level", string='Education Levels') + # last_education_levels = fields.Many2one("education.level", string='Last Education Levels') + # nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False) + # literacy_school_note = fields.Text(string="Literacy School Note", required=False) + # classroom = fields.Many2one('education.classroom', string='Classroom') + # last_classroom = fields.Many2one('education.classroom', string='Last Classroom') + # last_educational_certificate = fields.Binary(attachment=True,string='Last Educational Certificate') + # degree = fields.Many2one('education.result', string='Degree') + # last_degree = fields.Many2one('education.result', string='Last Degree') + # percentage = fields.Float(string="Percentage%") + # last_percentage = fields.Float(string="Last Percentage%") + # education_start_date = fields.Date(string='Education Start Date') + # education_end_date = fields.Date(string='Education End Date') + # end_date = fields.Date('End Date') specialization_ids = fields.Many2one('specialization.specialization', string='specialization') - last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization') - last_education_start_date = fields.Date(string='Last Education Start Date') - last_education_end_date = fields.Date(string='Last Education End Date') - weak_study = fields.Many2many('study.material', string='Weak Study') + # last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization') + # last_education_start_date = fields.Date(string='Last Education Start Date') + # last_education_end_date = fields.Date(string='Last Education End Date') + # weak_study = fields.Many2many('study.material', string='Weak Study') is_want_education = fields.Boolean(string='is Want Education', required=False) is_quran_memorize = fields.Boolean('memorize the quran ?') partner_id = fields.Many2one('res.partner') # Replacement Mother add_replacement_mother = fields.Boolean('Add Replacement Mother?') - # replacement_mother_name = fields.Char(string="Replacement Mother Name", tracking=True) - # replacement_mother_second_name = fields.Char(string="Replacement Mother Second Name", tracking=True) - # replacement_mother_third_name = fields.Char(string="Replacement Mother Third Name", tracking=True) - # replacement_mother_family_name = fields.Char(string="Replacement Mother Family Name", tracking=True) - # replacement_mother_country_id = fields.Many2one('res.country', 'Replacement Mother Nationality', tracking=True) - # replacement_mother_id_number = fields.Char(string="Replacement Mother Id Number", tracking=True) - # replacement_mother_marital_conf = fields.Many2one('marital.status', string='Replacement Mother Marital') - # replacement_mother_location = fields.Selection( - # [('with_husband_and_children', _('With Husband And Children')), ('with_children', _('With Children')), - # ('not_live_with_children', _('Not live with children'))], string='Replacement Mother Location') - # replacement_is_mother_work = fields.Boolean('Is Replacement Mother Work?') - # replacement_mother_income = fields.Float("Replacement Mother Income") - # replacement_mother_birth_date = fields.Date(string="Replacement Mother Birth Date") - # replacement_mother_age = fields.Integer(string="Replacement Mother Age", - # compute='_compute_get_replacement_mother_age') - # replacement_mother_city_id = fields.Many2one('res.country.city', string='City') - # replacement_mother_dead_reason = fields.Char(string='Dead Reason', required=False) - # replacement_mother_dead_date = fields.Date(string="Certificate Date") - # replacement_mother_dead_city_id = fields.Many2one('res.country.city', string='Dead City') - # replacement_mother_status = fields.Selection(selection=[ - # ('benefit', 'Benefit'), - # ('non_benefit', 'Non Benefit'), - # ], string='Replacement Mother Status', compute="check_replacement_mother_status", store=True, default=False) - # replacement_is_alhaju = fields.Boolean(string='IS Hajj') - # replacement_is_amra = fields.Boolean(string='IS Umra') - # # Education_data for replacement mother - # replacement_education_status = fields.Selection(string='Education Status', - # selection=[('educated', 'educated'), ('illiterate', 'illiterate')]) - # replacement_case_study = fields.Selection(string='Mother Case Study', - # selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), - # ('graduate', 'Graduate')]) - # replacement_illiterate_reason = fields.Char(string='Illiterate Reason') - # replacement_intermittent_reason = fields.Many2one('education.illiterate.reason', - # string='Intermittent Reason') - # replacement_education_entity = fields.Selection(string='Education Entity', - # selection=[('governmental', 'Governmental'), - # ('special', 'Special')]) - # replacement_entities = fields.Many2one("education.entities", string='Entity') - # replacement_specialization_ids = fields.Many2one('specialization.specialization', string='specialization') - # replacement_classroom = fields.Many2one('education.classroom', string='Classroom') - # replacement_degree = fields.Many2one('education.result', string='Degree') - # replacement_percentage = fields.Float(string="Percentage%") - # replacement_education_start_date = fields.Date(string='Education Start Date') - # replacement_education_end_date = fields.Date(string='Education End Date') - # - # replacement_last_education_entity = fields.Selection(string='Last Education Entity', - # selection=[('governmental', 'Governmental'), - # ('special', 'Special')]) - # replacement_last_entities = fields.Many2one("education.entities", string='Last Entity') - # replacement_education_levels = fields.Many2one("education.level", string='Education Levels') - # replacement_last_education_levels = fields.Many2one("education.level", string='Last Education Levels') - # replacement_last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization') - # - # replacement_last_classroom = fields.Many2one('education.classroom', string='Last Classroom') - # replacement_last_degree = fields.Many2one('education.result', string='Last Degree') - # replacement_last_percentage = fields.Float(string="Last Percentage%") - # replacement_last_education_start_date = fields.Date(string='Last Education Start Date') - # replacement_last_education_end_date = fields.Date(string='Last Education End Date') - # replacement_last_educational_certificate = fields.Binary(attachment=True, string='Last Educational Certificate') - # replacement_weak_study = fields.Many2many('study.material', string='Weak Study') - - # state = fields.Selection([ - # ('draft', 'Draft'), - # ('complete_info', 'Complete Information'), - # ('waiting_approve', 'Waiting Approved'), - # ('woman_manager', 'Woman Manager'), - # ('researcher_team', 'Researcher Team'), - # ('edit_info', 'Edit Information'), - # ('first_refusal', 'First Refusal'), - # ('first_approve', 'Approved'), - # ('refused', 'Refused'), - # ('not_leaving', 'Not Leaving'), - # ('black_list', 'Black List'), - # ], string='state', default="draft", tracking=True,related="benefit_id.state") state = fields.Selection([ ('draft', 'Draft'), ('complete_info', 'Complete Information'), @@ -257,6 +183,15 @@ class FamilyMemberProfile(models.Model): exception_end_date = fields.Datetime(string='Exception End Date') is_excluded_suspension = fields.Boolean('Excluded from suspension?') is_mother = fields.Boolean('Is Mother?') + member_education_status_ids = fields.One2many('member.education.status','member_id') + + def _compute_is_scientific_specialty(self): + for rec in self: + rec.is_scientific_specialty = rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').specialization_ids.is_scientific_specialty + + def _compute_is_medical_specialty(self): + for rec in self: + rec.is_medical_specialty = rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').specialization_ids.is_medical_specialty @api.constrains('birth_date') @@ -340,7 +275,7 @@ class FamilyMemberProfile(models.Model): # 'code': self.benefit_id.code, # }) @api.depends('relationn','birth_date', 'is_scientific_specialty', 'is_medical_specialty', 'has_disabilities', 'is_married', - 'minor_siblings','member_income','is_married','member_location_conf','education_status','case_study','state','is_dead') + 'minor_siblings','member_income','is_married','member_location_conf','member_education_status_ids.education_status','member_education_status_ids.case_study','state','is_dead') def check_member_status(self): for rec in self: if rec.state == 'second_approve' and rec.is_excluded_suspension: @@ -377,10 +312,10 @@ class FamilyMemberProfile(models.Model): if rec.is_work: if rec.member_income > max_income_for_benefit: rec.member_status = 'non_benefit' - if not rec.is_married and rec.education_status in ['illiterate']: + if not rec.is_married and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').education_status in ['illiterate']: rec.member_status = 'non_benefit' - if not rec.is_married and rec.education_status in ['educated'] and rec.case_study in [ - 'graduate', 'intermittent']: + if (not rec.is_married and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current') in ['educated'] and + rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').case_study in ['graduate', 'intermittent']): rec.member_status = 'non_benefit' if not rec.member_location_conf.is_benefit: rec.member_status = 'non_benefit' @@ -389,7 +324,8 @@ class FamilyMemberProfile(models.Model): elif rec.relationn.relation_type == 'daughter': if rec.age < female_benefit_age and rec.is_married: rec.member_status = 'non_benefit' - if rec.age < female_benefit_age and rec.is_work and rec.education_status not in ['educated'] and rec.case_study != 'continuous': + if (rec.age < female_benefit_age and rec.is_work and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').education_status not in ['educated'] + and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').case_study != 'continuous'): rec.member_status = 'non_benefit' if rec.age > female_benefit_age: if rec.age > minor_siblings_age and not rec.minor_siblings: @@ -405,12 +341,14 @@ class FamilyMemberProfile(models.Model): rec.member_status = 'non_benefit' # elif not rec.minor_siblings: # rec.member_status = 'non_benefit' - if rec.is_work and rec.member_income > max_income_for_benefit and rec.education_status in ['educated'] and rec.case_study == 'continuous': + if (rec.is_work and rec.member_income > max_income_for_benefit and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').education_status in ['educated'] + and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').case_study == 'continuous'): rec.member_status = 'non_benefit' - if rec.is_work and rec.education_status in ['illiterate'] : + if rec.is_work and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').education_status in ['illiterate'] : rec.member_status = 'non_benefit' - if rec.is_work and rec.education_status in ['educated'] and rec.case_study in [ - 'graduate', 'intermittent']: + if (rec.is_work and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').education_status in ['educated'] + and rec.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current').case_study in [ + 'graduate', 'intermittent']): rec.member_status = 'non_benefit' if not rec.member_location_conf.is_benefit: rec.member_status = 'non_benefit' @@ -708,3 +646,52 @@ class FamilyMemberProfile(models.Model): +class MemberEducationStatus(models.Model): + _name = 'member.education.status' + _description = "Member Education - Status" + + member_id = fields.Many2one('family.member',string='Member') + sequence = fields.Char(string='Sequence',readonly = True,compute='_compute_sequence') + education_status_type = fields.Selection(string='Education Status Type',selection=[('current', 'Current'), ('last', 'Last')]) + education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age', 'Under Study Age')]) + education_levels = fields.Many2one("education.level", string='Education Levels') + illiterate_reason = fields.Char(string='Illiterate Reason') + case_study = fields.Selection(string='Case Study', + selection=[('continuous', 'continuous'), ('intermittent', 'intermittent'), + ('graduate', 'Graduate')]) + intermittent_reason = fields.Many2one('education.illiterate.reason', string='Intermittent Reason') + education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'), + ('special', 'Special')]) + entities = fields.Many2one("education.entities", string='Entity') + educational_certificate = fields.Many2many('ir.attachment', 'rel_member_educational_certificate_status', 'member_education_id', + 'attachment_id', string='Educational Certificate') + specialization_ids = fields.Many2one('specialization.specialization', string='specialization') + classroom = fields.Many2one('education.classroom', string='Classroom') + degree = fields.Many2one('education.result', string='Degree') + percentage = fields.Float(string="Percentage%") + education_start_date = fields.Date(string='Education Start Date') + education_end_date = fields.Date(string='Education End Date') + + @api.depends('member_id') + def _compute_sequence(self): + for rec in self: + rec.sequence = len(rec.member_id.member_education_status_ids) + + # def update_education_status(self): + # for rec in self: + # last_record = self.env['family.member'].browse(rec.id-1) + # last_record.education_status_type = 'last' + # rec.education_status_type = 'current' + + @api.onchange('education_status_type') + def _onchange_education_status_type(self): + res = {} + for rec in self: + if rec.education_status_type == 'current': + exist_record = rec.member_id.member_education_status_ids.filtered(lambda r: r.education_status_type == 'current' and r.sequence != rec.sequence) + print(exist_record) + if exist_record: + rec.education_status_type = 'last' + res['warning'] = {'title': _('ValidationError'), + 'message': _('You cannot add two current education status. if you want to update the last status click on update status button')} + return res diff --git a/odex25_ensan/odex_benefit/security/ir.model.access.csv b/odex25_ensan/odex_benefit/security/ir.model.access.csv index 158acd99d..5227e544d 100644 --- a/odex25_ensan/odex_benefit/security/ir.model.access.csv +++ b/odex25_ensan/odex_benefit/security/ir.model.access.csv @@ -144,3 +144,5 @@ access_service_refuse_reason,access_service_refuse_reason,model_service_refuse_r access_service_refuse_reason_wizard,access_service_refuse_reason_wizard,model_service_refuse_reason_wizard,base.group_user,1,1,1,1 access_reason_for_return_wizard,access_reason_for_return_wizard,model_reason_for_return_wizard,base.group_user,1,1,1,1 access_transportation_insurance,access_transportation_insurance,model_transportation_insurance,base.group_user,1,1,1,1 +access_education_status,access_education_status,model_education_status,base.group_user,1,1,1,1 +access_member_education_status,access_member_education_status,model_member_education_status,base.group_user,1,1,1,1 diff --git a/odex25_ensan/odex_benefit/views/benefit_view.xml b/odex25_ensan/odex_benefit/views/benefit_view.xml index f321e23e1..579db8db8 100644 --- a/odex25_ensan/odex_benefit/views/benefit_view.xml +++ b/odex25_ensan/odex_benefit/views/benefit_view.xml @@ -357,63 +357,56 @@ -

Current Education Status

- - - - - - - - - - - - - - - - - - - - -

Last Education - Status -

- - - - - - - - - - - - - - - - - + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +

Replacement Mother

@@ -464,63 +457,56 @@ -

Current Education Status

- - - - - - - - - - - - - - - - - - - - -

Last Education - Status -

- - - - - - - - - - - - - - - - - + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
@@ -550,7 +536,7 @@ - + @@ -620,66 +606,56 @@ -

Current Education Status

- - - - - - - - - - - - - - - - - - - - - - -

- Last Education Status -

- - - - - - - - - - - - - - - - - + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
@@ -904,126 +880,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/odex25_ensan/odex_benefit/views/family_members.xml b/odex25_ensan/odex_benefit/views/family_members.xml index 79d21bfad..da04887fa 100644 --- a/odex25_ensan/odex_benefit/views/family_members.xml +++ b/odex25_ensan/odex_benefit/views/family_members.xml @@ -123,49 +123,57 @@ -

Current Education Status

- - - - - - - - - - - - + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + - - - - - - - - - -

Last Education Status

- - - - - - - - - - - - - - - - - - +
+
+ + + + + + + + + + + + + + + + + + +
+
diff --git a/odex25_ensan/odex_benefit/views/generate_reports.xml b/odex25_ensan/odex_benefit/views/generate_reports.xml index 30f0641c0..7009f8ffb 100644 --- a/odex25_ensan/odex_benefit/views/generate_reports.xml +++ b/odex25_ensan/odex_benefit/views/generate_reports.xml @@ -169,7 +169,7 @@ - +