Benefit customization

This commit is contained in:
eman 2024-10-07 02:41:03 +03:00
parent 5dd159d37c
commit ec7e0143ac
10 changed files with 366 additions and 50 deletions

View File

@ -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,

View File

@ -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')
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")

View File

@ -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:

View File

@ -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")
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 = ''

View File

@ -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")
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 = ''

View File

@ -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")
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 = ''

View File

@ -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
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
116 access_education_illiterate_reason access_education_illiterate_reason model_education_illiterate_reason base.group_user 1 1 1 1
117 access_income_type access_income_type model_income_type base.group_user 1 1 1 1
118 access_loan_giver access_loan_giver model_loan_giver base.group_user 1 1 1 1
119 access_loan_reason access_loan_reason model_loan_reason base.group_user 1 1 1 1
120 access_hobbies_settings access_hobbies_settings model_hobbies_settings base.group_user 1 1 1 1
121 access_disabilities_settings access_disabilities_settings model_disabilities_settings base.group_user 1 1 1 1
122 access_diseases_settings access_diseases_settings model_diseases_settings base.group_user 1 1 1 1

View File

@ -325,6 +325,36 @@
<p class="oe_view_nocontent_create">Create the Attachment Setting
</p>
</field>
</record>
<!-- Hobbies Settings Action -->
<record model="ir.actions.act_window" id="hobbies_settings_action">
<field name="name">Hobbies Settings</field>
<field name="res_model">hobbies.settings</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create the Hobbies Setting
</p>
</field>
</record>
<!-- Disabilities Settings Action -->
<record model="ir.actions.act_window" id="disabilities_settings_action">
<field name="name">Disabilities Settings</field>
<field name="res_model">disabilities.settings</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create the Disabilities Setting
</p>
</field>
</record>
<!-- Diseases Settings Action -->
<record model="ir.actions.act_window" id="diseases_settings_action">
<field name="name">Diseases Settings</field>
<field name="res_model">diseases.settings</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create the Diseases Setting
</p>
</field>
</record>
<record model="ir.actions.act_window" id="food_surplus_type_action">
<field name="name">Food Surplus Type</field>
@ -778,6 +808,15 @@
<menuitem id="relation_settings_menu" name="Relation Settings" parent="menu_benefits_config_organizing"
action="relation_action"
sequence="3"/>
<menuitem id="hobbies_settings_menu" name="Hobbies Settings" parent="menu_benefits_config_organizing"
action="hobbies_settings_action"
sequence="4"/>
<menuitem id="disabilities_settings_menu" name="Disabilities Settings" parent="menu_benefits_config_organizing"
action="disabilities_settings_action"
sequence="5"/>
<menuitem id="diseases_settings_menu" name="Diseases Settings" parent="menu_benefits_config_organizing"
action="diseases_settings_action"
sequence="6"/>
<!-- <menuitem id="benefit_families_menu" name="Families" parent="menu_benefits_config_organizing"-->
<!-- action="family_action"-->
<!-- sequence="3"/>-->

View File

@ -994,6 +994,9 @@
<group>
<field name="name"/>
<field name="attach_type"/>
<!-- <field name="hobby_id"/>-->
<!-- <field name="diseases_id"/>-->
<!-- <field name="disabilities_id"/>-->
<field name="is_required"/>
<field name="is_default"/>
</group>
@ -1113,10 +1116,10 @@
</tree>
</field>
</record>
<!-- Loan Reason FOrm AND tree -->
<record id="loan_reason_form" model="ir.ui.view">
<field name="name">Loan Reason Form</field>
<field name="model">loan.reason</field>
<!-- Hobbies Settings Form AND tree -->
<record id="hobbies_settings_form" model="ir.ui.view">
<field name="name">Hobbies Settings Form</field>
<field name="model">hobbies.settings</field>
<field name="arch" type="xml">
<form>
<sheet>
@ -1129,9 +1132,59 @@
</form>
</field>
</record>
<record id="loan_reason_tree" model="ir.ui.view">
<field name="name">Loan Reason Tree</field>
<field name="model">loan.reason</field>
<record id="hobbies_settings_tree" model="ir.ui.view">
<field name="name">Hobbies Settings Tree</field>
<field name="model">hobbies.settings</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<!-- Disabilities Setting Form AND tree -->
<record id="disabilities_settings_form" model="ir.ui.view">
<field name="name">Disabilities Settings Form</field>
<field name="model">disabilities.settings</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="disabilities_settings_tree" model="ir.ui.view">
<field name="name">Disabilities Settings Tree</field>
<field name="model">disabilities.settings</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<!-- Diseases Settings Form AND tree -->
<record id="diseases_settings_form" model="ir.ui.view">
<field name="name">Diseases Settings Form</field>
<field name="model">diseases.settings</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="diseases_settings_tree" model="ir.ui.view">
<field name="name">Diseases Settings Tree</field>
<field name="model">diseases.settings</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>

View File

@ -418,41 +418,44 @@
<notebook>
<page string="Hobbies">
<field name="hobbies_ids" widget="one2many_list">
<form string="Hobbies">
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
</form>
<tree editable="bottom" delete="0">
<field name="name"/>
<!-- <field name="hobbies_id"/>-->
<field name="hobby_attach"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
</page>
<page string="Diseases">
<field name="diseases_ids" widget="one2many_list">
<form string="Diseases">
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
</form>
<tree editable="bottom" delete="0">
<field name="name"/>
<!-- <field name="diseases_id"/>-->
<field name="disease_attach"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
</page>
<page string="Disabilities">
<field name="disabilities_ids" widget="one2many_list">
<form string="Disabilities">
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
</form>
<tree editable="bottom" delete="0">
<field name="name"/>
<!-- <field name="disabilities_id"/>-->
<field name="disability_attach"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
</page>
<page string="Education">
@ -521,16 +524,30 @@
</page>
<page string="Attachments">
<field name="attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="name" string="Attachment Name"/>
<tree editable="bottom" delete="0">
<field name="name" string="Attachment Name" attrs="{'readonly':[('is_default','=',True)]}"/>
<field name="datas" string="File content"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="allow_days"/>
<field name="benefit_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
</page>
<page string="Attachment Configuration">
<group>
<group>
<!-- <field name="required_attach" attrs="{'required':[('parent.state','not in',['draft'])]}"/>-->
<field name="required_hobby_attach" attrs="{'required':[('parent.state','not in',['draft'])]}"/>
</group>
<group>
<field name="required_diseases_attach" attrs="{'required':[('parent.state','not in',['draft'])]}"/>
<field name="required_disabilities_attach" attrs="{'required':[('parent.state','not in',['draft'])]}"/>
</group>
</group>
</page>
</notebook>
</sheet>
</form>