diff --git a/odex25_ensan/odex_benefit/models/benefit.py b/odex25_ensan/odex_benefit/models/benefit.py index 0fb19c213..c35e01719 100644 --- a/odex25_ensan/odex_benefit/models/benefit.py +++ b/odex25_ensan/odex_benefit/models/benefit.py @@ -1455,7 +1455,7 @@ class GrantBenefitProfile(models.Model): partner = self.create_family_partner() self.partner_id.write({ 'name': self.name, - 'email': self.email, + 'email': self.sms_phone, 'phone': self.phone, 'account_type': 'family', 'code': self.code, diff --git a/odex25_ensan/odex_benefit/models/benefit_config.py b/odex25_ensan/odex_benefit/models/benefit_config.py index 132557118..bec16b4c8 100644 --- a/odex25_ensan/odex_benefit/models/benefit_config.py +++ b/odex25_ensan/odex_benefit/models/benefit_config.py @@ -588,6 +588,9 @@ class AttachmentsSettings(models.Model): _description = "Attachments Settings" name = fields.Char(string='name') + hobby_id = fields.Many2one('hobbies.settings',string='Hobbies') + diseases_id = fields.Many2one('diseases.settings',string='Diseases') + disabilities_id = fields.Many2one('disabilities.settings',string='Disabilities') attach_type = fields.Selection( [('family_attach', _('Family Attach')), ('member_attach', _('Member Attach')), ('hobbies_attach', _('Hobbies Attach')), ('diseases_attach', _('Diseases Attach')), ('disabilities_attach', _('Disabilities Attach'))]) @@ -616,4 +619,19 @@ class LoanReason(models.Model): _name = 'loan.reason' _description = "Loan Reason" - name = fields.Char(string='name') \ No newline at end of file + name = fields.Char(string='name') + +class HobbiesSettings(models.Model): + _name = 'hobbies.settings' + + name = fields.Char(string="Name") + +class DiseasesSettings(models.Model): + _name = 'diseases.settings' + + name = fields.Char(string="Name") + +class DisabilitiesSettings(models.Model): + _name = 'disabilities.settings' + + name = fields.Char(string="Name") \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/family_members.py b/odex25_ensan/odex_benefit/models/family_members.py index 6211e8002..6bd11889e 100644 --- a/odex25_ensan/odex_benefit/models/family_members.py +++ b/odex25_ensan/odex_benefit/models/family_members.py @@ -171,12 +171,123 @@ class FamilyMemberProfile(models.Model): suspend_method = fields.Selection(selection=[('manual', 'Manual'), ('auto', 'Auto')], string="Suspend Method",default='auto') is_member_workflow = fields.Boolean('Is Member Workflow?') sponsor_id = fields.Many2one('res.partner', string='Sponsor',domain="[('account_type','=','sponsor')]") + required_attach = fields.Selection(selection=[('true', 'True'), ('false', 'False')], compute='get_required_attach',store=True,string='Required Attach') + required_hobby_attach = fields.Selection(selection=[('true', 'True'), ('false', 'False')], compute='get_required_hobby_attach',store=True,string='Required Hobby Attach') + required_diseases_attach = fields.Selection(selection=[('true', 'True'), ('false', 'False')], compute='get_required_diseases_attach',store=True,string='Required Diseases Attach') + required_disabilities_attach = fields.Selection(selection=[('true', 'True'), ('false', 'False')], compute='get_required_disabilities_attach',store=True,string='Required Disabilities Attach') - def unlink(self): - for order in self: - if order.state not in ['draft']: - raise UserError(_('You cannot delete this record')) - return super(FamilyMemberProfile, self).unlink() + @api.depends('attachment_ids') + def get_required_attach(self): + for rec in self.attachment_ids: + if rec.is_required and not rec.datas: + self.required_attach = None + break + elif rec.is_required and rec.datas: + self.required_attach = 'true' + elif rec.is_default and not rec.is_required and (rec.datas or not rec.datas): + self.required_attach = 'true' + else: + self.required_attach = 'true' + + @api.depends('hobbies_ids') + def get_required_hobby_attach(self): + for rec in self.hobbies_ids: + if rec.is_required and not rec.hobby_attach: + self.required_attach = None + break + elif rec.is_required and rec.hobby_attach: + self.required_hobby_attach = 'true' + elif rec.is_default and not rec.is_required and (rec.hobby_attach or not rec.hobby_attach): + self.required_hobby_attach = 'true' + else: + self.required_hobby_attach = 'true' + + @api.depends('diseases_ids') + def get_required_diseases_attach(self): + for rec in self.diseases_ids: + if rec.is_required and not rec.disease_attach: + self.required_diseases_attach = None + break + elif rec.is_required and rec.disease_attach: + self.required_diseases_attach = 'true' + elif rec.is_default and not rec.is_required and (rec.disease_attach or not rec.disease_attach): + self.required_diseases_attach = 'true' + else: + self.required_diseases_attach = 'true' + + @api.depends('disabilities_ids') + def get_required_disabilities_attach(self): + for rec in self.disabilities_ids: + if rec.is_required and not rec.disability_attach: + self.required_disabilities_attach = None + break + elif rec.is_required and rec.disability_attach: + self.required_disabilities_attach = 'true' + elif rec.is_default and not rec.is_required and (rec.disability_attach or not rec.disability_attach): + self.required_disabilities_attach = 'true' + else: + self.required_disabilities_attach = 'true' + + @api.model + def default_get(self, fields): + res = super(FamilyMemberProfile, self).default_get(fields) + + # Initialize dictionaries to store attachments by type + attachments_dict = { + 'hobbies_attach': [], + 'diseases_attach': [], + 'disabilities_attach': [], + } + + # Search for default attachments + default_attachment = self.env["attachments.settings"].search([('is_default', '=', True)]) + + # Loop through the default attachments and categorize them by type + for attach in default_attachment: + if attach.attach_type in attachments_dict: + attachments_dict[attach.attach_type].append({ + 'name': attach.name, + 'is_required': attach.is_required, + 'is_default': attach.is_default, + }) + + # Update each field in `res` if it exists in `fields` + if 'hobbies_ids' in fields: + res.update({ + 'hobbies_ids': [(0, 0, attachment) for attachment in attachments_dict['hobbies_attach']] + }) + if 'diseases_ids' in fields: + res.update({ + 'diseases_ids': [(0, 0, attachment) for attachment in attachments_dict['diseases_attach']] + }) + if 'disabilities_ids' in fields: + res.update({ + 'disabilities_ids': [(0, 0, attachment) for attachment in attachments_dict['disabilities_attach']] + }) + + return res + + # Return the list of attachments (this will be used as default for the one2many field) + # return [(0, 0, attachment) for attachment in attachments] + + # def _default_child_ids(self): + # # Initialize an empty list to store the default attachments + attachments = [] + # + # # Search for default attachments + # default_attachment = self.env["attachments.settings"].search([('is_default', '=', True)]) + # + # # Loop through the default attachments and add them to the list + # for attach in default_attachment: + # if attach.attach_type == 'member_attach': + # attachments.append({ + # 'name': attach.name, + # 'is_required': attach.is_required, + # 'is_default': attach.is_default + # }) + # + # # Return the list of attachments (this will be used as default for the one2many field) + # return [(0, 0, attachment) for attachment in attachments] def create_member_partner(self): self.partner_id.write({ @@ -280,6 +391,13 @@ class FamilyMemberProfile(models.Model): else: rec.age = 0 + # @api.onchange("name") + # def onchange_member_name(self): + # default_attachment = self.env["attachments.settings"].search([('is_default', '=', True)]) + # for attach in default_attachment: + # if attach.attach_type == 'member_attach': + # self.attachment_ids = [(0,0,{'name':attach.name,'is_required':attach.is_required,'is_default':attach.is_default})] + @api.onchange("member_id_number") def onchange_member_id_number(self): for rec in self: diff --git a/odex25_ensan/odex_benefit/models/member_disabilities.py b/odex25_ensan/odex_benefit/models/member_disabilities.py index 4c1328f8c..9b8a0152e 100644 --- a/odex25_ensan/odex_benefit/models/member_disabilities.py +++ b/odex25_ensan/odex_benefit/models/member_disabilities.py @@ -1,7 +1,29 @@ -from odoo import fields, models +from odoo import fields, models , api class MemberDisabilities(models.Model): _name = 'member.disabilities' name = fields.Char(string="Name") - member_id = fields.Many2one('family.member',string="Member") \ No newline at end of file + member_id = fields.Many2one('family.member',string="Member") + disabilities_id = fields.Many2one('disabilities.settings', string="disability") + disability_attach = fields.Binary(attachment=True, string="disability Attach") + expiration_date = fields.Date(string='Expiration date') + attach_status = fields.Selection(selection=[ + ('valid', 'Valid'), + ('expired', 'Expired'), + ], string='Attach Status', compute="get_status", store=True) + # fields to management required and delete records in benefit attachment + is_required = fields.Boolean(string='Is Required?') + is_default = fields.Boolean(string='Is Default?') + + @api.depends('expiration_date') + def get_status(self): + for rec in self: + today = fields.Date.today() + if rec.expiration_date: + if rec.expiration_date and rec.expiration_date > today: + rec.attach_status = 'valid' + else: + rec.attach_status = 'expired' + else: + rec.attach_status = '' \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/member_diseases.py b/odex25_ensan/odex_benefit/models/member_diseases.py index 9c6adf545..a1edb5c44 100644 --- a/odex25_ensan/odex_benefit/models/member_diseases.py +++ b/odex25_ensan/odex_benefit/models/member_diseases.py @@ -1,7 +1,29 @@ -from odoo import fields, models +from odoo import fields, models, api class MemberDiseases(models.Model): _name = 'member.diseases' name = fields.Char(string="Name") - member_id = fields.Many2one('family.member',string="Member") \ No newline at end of file + member_id = fields.Many2one('family.member',string="Member") + diseases_id = fields.Many2one('diseases.settings', string="Disease") + disease_attach = fields.Binary(attachment=True, string="Diseases Attach") + expiration_date = fields.Date(string='Expiration date') + attach_status = fields.Selection(selection=[ + ('valid', 'Valid'), + ('expired', 'Expired'), + ], string='Attach Status', compute="get_status", store=True) + # fields to management required and delete records in benefit attachment + is_required = fields.Boolean(string='Is Required?') + is_default = fields.Boolean(string='Is Default?') + + @api.depends('expiration_date') + def get_status(self): + for rec in self: + today = fields.Date.today() + if rec.expiration_date: + if rec.expiration_date and rec.expiration_date > today: + rec.attach_status = 'valid' + else: + rec.attach_status = 'expired' + else: + rec.attach_status = '' \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/members_hobbies.py b/odex25_ensan/odex_benefit/models/members_hobbies.py index d11e378b3..de373c697 100644 --- a/odex25_ensan/odex_benefit/models/members_hobbies.py +++ b/odex25_ensan/odex_benefit/models/members_hobbies.py @@ -1,7 +1,31 @@ -from odoo import fields, models +from odoo import fields, models ,api class MemberHobbies(models.Model): _name = 'member.hobbies' name = fields.Char(string="Name") - member_id = fields.Many2one('family.member',string="Member") \ No newline at end of file + member_id = fields.Many2one('family.member',string="Member") + hobbies_id = fields.Many2one('hobbies.settings',string="Hobby") + hobby_attach = fields.Binary(attachment=True,string="Hobby Attach") + expiration_date = fields.Date(string='Expiration date') + attach_status = fields.Selection(selection=[ + ('valid', 'Valid'), + ('expired', 'Expired'), + ], string='Attach Status', compute="get_status", store=True) + # fields to management required and delete records in benefit attachment + is_required = fields.Boolean(string='Is Required?') + is_default = fields.Boolean(string='Is Default?') + + @api.depends('expiration_date') + def get_status(self): + for rec in self: + today = fields.Date.today() + if rec.expiration_date: + if rec.expiration_date and rec.expiration_date > today: + rec.attach_status = 'valid' + else: + rec.attach_status = 'expired' + else: + rec.attach_status = '' + + diff --git a/odex25_ensan/odex_benefit/security/ir.model.access.csv b/odex25_ensan/odex_benefit/security/ir.model.access.csv index a105ccff5..c0b851634 100644 --- a/odex25_ensan/odex_benefit/security/ir.model.access.csv +++ b/odex25_ensan/odex_benefit/security/ir.model.access.csv @@ -116,4 +116,7 @@ access_attachments_settings,access_attachments_settings,model_attachments_settin access_education_illiterate_reason,access_education_illiterate_reason,model_education_illiterate_reason,base.group_user,1,1,1,1 access_income_type,access_income_type,model_income_type,base.group_user,1,1,1,1 access_loan_giver,access_loan_giver,model_loan_giver,base.group_user,1,1,1,1 -access_loan_reason,access_loan_reason,model_loan_reason,base.group_user,1,1,1,1 \ No newline at end of file +access_loan_reason,access_loan_reason,model_loan_reason,base.group_user,1,1,1,1 +access_hobbies_settings,access_hobbies_settings,model_hobbies_settings,base.group_user,1,1,1,1 +access_disabilities_settings,access_disabilities_settings,model_disabilities_settings,base.group_user,1,1,1,1 +access_diseases_settings,access_diseases_settings,model_diseases_settings,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/views/actions_and_menus.xml b/odex25_ensan/odex_benefit/views/actions_and_menus.xml index f3cf9b2fd..73d204bef 100644 --- a/odex25_ensan/odex_benefit/views/actions_and_menus.xml +++ b/odex25_ensan/odex_benefit/views/actions_and_menus.xml @@ -325,6 +325,36 @@
Create the Attachment Setting
+ + +Create the Hobbies Setting +
+Create the Disabilities Setting +
+Create the Diseases Setting +
+