Kafalat
This commit is contained in:
parent
ce7efddfce
commit
363d3a032b
|
|
@ -19,7 +19,6 @@ class BenefitCategory(models.Model):
|
|||
benefits_total = fields.Integer(string="Benefit Total", compute="get_benefits_total")
|
||||
mini_income_amount = fields.Float(string="Min Income Amount")
|
||||
max_income_amount = fields.Float(string="Max Income Amount")
|
||||
benefits_total = fields.Integer(string="Benefit Total", compute="get_benefits_total")
|
||||
expenses_ids = fields.One2many('expenses.line', 'category_id')
|
||||
state = fields.Selection([('draft', 'Draft'),
|
||||
('approve', 'Approved'),
|
||||
|
|
@ -679,6 +678,21 @@ class MaritalStatus(models.Model):
|
|||
is_benefit = fields.Boolean(string='Is Benefit?')
|
||||
is_dead = fields.Boolean(string='Is Dead?')
|
||||
|
||||
class AgeCategory(models.Model):
|
||||
_name = 'age.category'
|
||||
|
||||
min_age = fields.Integer(string="From")
|
||||
max_age = fields.Integer(string="To")
|
||||
name = fields.Char(string="Name", compute="_compute_name", store=True)
|
||||
|
||||
@api.depends('min_age', 'max_age')
|
||||
def _compute_name(self):
|
||||
for record in self:
|
||||
if record.min_age is not None and record.max_age is not None:
|
||||
record.name = f"[{record.min_age}:{record.max_age}]"
|
||||
else:
|
||||
record.name = ""
|
||||
|
||||
class ServiceAttachmentsSettings(models.Model):
|
||||
_name = 'service.attachments.settings'
|
||||
_description = "Service Attachments Settings"
|
||||
|
|
|
|||
|
|
@ -134,4 +134,5 @@ access_electrical_devices,access_electrical_devices,model_electrical_devices,bas
|
|||
access_home_furnishing_lines,access_home_furnishing_lines,model_home_furnishing_lines,base.group_user,1,1,1,1
|
||||
access_home_furnishing_items,access_home_furnishing_items,model_home_furnishing_items,base.group_user,1,1,1,1
|
||||
access_electricity_bill_lines,access_electricity_bill_lines,model_electricity_bill_lines,base.group_user,1,1,1,1
|
||||
access_water_bill_lines,access_water_bill_lines,model_water_bill_lines,base.group_user,1,1,1,1
|
||||
access_water_bill_lines,access_water_bill_lines,model_water_bill_lines,base.group_user,1,1,1,1
|
||||
access_age_category,access_age_category,model_age_category,base.group_user,1,1,1,1
|
||||
|
|
|
@ -269,6 +269,15 @@
|
|||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="age_category_action">
|
||||
<field name="name">Age Category</field>
|
||||
<field name="res_model">age.category</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">Create the Age Category
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="visits_types_action">
|
||||
<field name="name">Visits Types</field>
|
||||
<field name="res_model">visits.types</field>
|
||||
|
|
@ -849,6 +858,9 @@
|
|||
<menuitem id="marital_status_menu" name="Marital Status" parent="menu_benefits_config_organizing"
|
||||
action="marital_status_action"
|
||||
sequence="4"/>
|
||||
<menuitem id="age_category_menu" name="Age Category" parent="menu_benefits_config_organizing"
|
||||
action="age_category_action"
|
||||
sequence="5"/>
|
||||
<!-- <menuitem id="hobbies_settings_menu" name="Hobbies Settings" parent="menu_benefits_config_organizing"-->
|
||||
<!-- action="hobbies_settings_action"-->
|
||||
<!-- sequence="4"/>-->
|
||||
|
|
|
|||
|
|
@ -1246,6 +1246,36 @@
|
|||
<field name="is_benefit"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Age Category Form AND tree -->
|
||||
<record id="age_category_form" model="ir.ui.view">
|
||||
<field name="name">Age Category Form</field>
|
||||
<field name="model">age.category</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="min_age"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="max_age"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="age_category_tree" model="ir.ui.view">
|
||||
<field name="name">Age Category Tree</field>
|
||||
<field name="model">age.category</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="min_age"/>
|
||||
<field name="max_age"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -80,39 +80,17 @@ class TakafulSponsorship(models.Model):
|
|||
string='Sponsorship Beneficiary Type',
|
||||
tracking=True
|
||||
)
|
||||
branch_custom_id = fields.Many2one('branch.settings', string="Branch")
|
||||
members_domain_ids = fields.Many2many(comodel_name='family.member', compute='_compute_domain_ids')
|
||||
# This is if for one person, and not a group.
|
||||
benefit_id = fields.Many2one(
|
||||
'grant.benefit',
|
||||
'family.member',
|
||||
string='Beneficiary Name',
|
||||
ondelete='set null'
|
||||
ondelete='set null',domain = "[('id', 'in',members_domain_ids)]"
|
||||
)
|
||||
orphan_status = fields.Selection(
|
||||
related='benefit_id.orphan_status',
|
||||
string='Orphan Status',
|
||||
tracking=True
|
||||
)
|
||||
|
||||
education_status = fields.Selection(
|
||||
related='benefit_id.education_status',
|
||||
string='Educational Status',
|
||||
tracking=True
|
||||
)
|
||||
|
||||
education_level = fields.Selection(
|
||||
related='benefit_id.education_level',
|
||||
string='Educational Level',
|
||||
tracking=True
|
||||
)
|
||||
|
||||
sponsorship_duration = fields.Selection([
|
||||
('temporary', 'Temporary'),
|
||||
('permanent', 'Permanent')],
|
||||
string='Sponsorship Duration',
|
||||
required=True,
|
||||
default='permanent',
|
||||
tracking=True
|
||||
)
|
||||
|
||||
education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age','Under Study Age')])
|
||||
education_level = fields.Many2one("education.level", string='Education Levels')
|
||||
sponsorship_duration = fields.Selection([('temporary', 'Temporary'),('permanent', 'Permanent')],string='Sponsorship Duration',required=True,default='permanent',tracking=True)
|
||||
supporter_status = fields.Selection([
|
||||
('no', 'Not Exist'),
|
||||
('yes', 'Exist')],
|
||||
|
|
@ -121,7 +99,7 @@ class TakafulSponsorship(models.Model):
|
|||
compute='_compute_supporter_status',
|
||||
)
|
||||
|
||||
has_needs = fields.Boolean(related='benefit_id.has_needs', store=True)
|
||||
has_needs = fields.Boolean(store=True)
|
||||
|
||||
@api.constrains('end_date')
|
||||
def check_end_date(self):
|
||||
|
|
@ -136,53 +114,106 @@ class TakafulSponsorship(models.Model):
|
|||
raise ValidationError(
|
||||
_(u'End Date Must Be More Than Start Date in Months'))
|
||||
|
||||
@api.depends('benefit_id.responsible_id')
|
||||
@api.depends('benefit_id.benefit_id')
|
||||
@api.onchange('benefit_id')
|
||||
def _compute_supporter_status(self):
|
||||
for rec in self:
|
||||
if rec.benefit_id:
|
||||
if rec.benefit_id.responsible_id:
|
||||
if rec.benefit_id.benefit_id:
|
||||
rec.supporter_status = 'yes'
|
||||
else:
|
||||
rec.supporter_status = 'no'
|
||||
else:
|
||||
rec.supporter_status = ''
|
||||
|
||||
@api.onchange('benefit_count', 'benefit_type', 'sponsorship_type', 'min_needs_percent', 'max_needs_percent')
|
||||
def onchange_benefit_type(self):
|
||||
@api.depends('gender','education_status','education_level','sponsorship_type','benefit_type','age_category_id')
|
||||
def _compute_domain_ids(self):
|
||||
# Create a domain
|
||||
if self.benefit_type and self.benefit_id and not self.benefit_id.benefit_type == self.benefit_type:
|
||||
self.benefit_id = False
|
||||
elif self.benefit_type and self.benefit_ids and not self.benefit_ids[0].benefit_type == self.benefit_type:
|
||||
self.benefit_ids = [(6, 0, [])]
|
||||
self.members_domain_ids = [(6, 0, [])]
|
||||
if self.benefit_type == 'orphan' and self.sponsorship_type:
|
||||
base_domain = \
|
||||
[
|
||||
('state', 'in', ['second_approve', 'temporarily_suspended', 'suspended_first_approve']),
|
||||
('member_status', '=', 'benefit'),
|
||||
'|',
|
||||
('relationn.relation_type', '=', 'daughter'),
|
||||
('relationn.relation_type', '=', 'son')
|
||||
]
|
||||
if self.gender:
|
||||
if self.gender == 'female':
|
||||
base_domain = [
|
||||
('state', 'in', ('second_approve', 'temporarily_suspended', 'suspended_first_approve')),
|
||||
('member_status', '=', 'benefit'), ('relationn.relation_type', '=', 'daughter')]
|
||||
if self.gender == 'male':
|
||||
base_domain = [
|
||||
('state', 'in', ('second_approve', 'temporarily_suspended', 'suspended_first_approve')),
|
||||
('member_status', '=', 'benefit'),('relationn.relation_type', '=', 'son')]
|
||||
if self.education_status:
|
||||
base_domain.append(('education_status', '=', self.education_status))
|
||||
if self.education_level:
|
||||
base_domain.append(('education_levels', '=', self.education_level.id))
|
||||
if self.age_category_id:
|
||||
base_domain.append(('age', '<=', self.age_category_id.max_age))
|
||||
base_domain.append(('age', '>=', self.age_category_id.min_age))
|
||||
self.members_domain_ids = self.env['family.member'].sudo().search(base_domain)
|
||||
domain = {'benefit_id': [('id', 'in', self.members_domain_ids.ids)]}
|
||||
return {'domain': domain}
|
||||
if self.benefit_type == 'widow' and self.sponsorship_type:
|
||||
self.benefit_count = 0
|
||||
self.min_needs_percent = 0
|
||||
self.max_needs_percent = 0
|
||||
|
||||
if self.benefit_type and self.sponsorship_type == 'person':
|
||||
self.benefit_ids = [(6, 0, [])]
|
||||
self.benefit_count = 0
|
||||
self.min_needs_percent = 0
|
||||
self.max_needs_percent = 0
|
||||
benefit_ids = self.env['grant.benefit'].sudo().search(
|
||||
[('benefit_type', '=', self.benefit_type), ('state', '=', 'approve')])
|
||||
# domain = {'benefit_id': [('id', 'in', benefit_ids.filtered(lambda ben: ben.benefit_needs_percent > 0 ).mapped('id'))]}
|
||||
domain = {'benefit_id': [('id', 'in', benefit_ids.mapped('id'))]}
|
||||
return {'domain': domain}
|
||||
elif self.benefit_type and self.sponsorship_type == 'group':
|
||||
self.benefit_id = False
|
||||
benefit_ids = self.env['grant.benefit'].sudo().search(
|
||||
[('benefit_type', '=', self.benefit_type), ('state', '=', 'approve')], limit=self.benefit_count)
|
||||
# domain = {'benefit_ids': [('id', 'in', benefit_ids.filtered(lambda ben: ben.benefit_needs_percent > 0 and ben.benefit_needs_percent >= self.min_needs_percent and ben.benefit_needs_percent <= self.max_needs_percent).mapped('id'))]}
|
||||
domain = {'benefit_ids': [('id', 'in', benefit_ids.mapped('id'))]}
|
||||
base_domain = [('state', 'in', ['second_approve', 'temporarily_suspended', 'suspended_first_approve']),('member_status','=','benefit'),'|',('relationn.relation_type', '=', 'mother'),('relationn.relation_type', '=', 'replacement_mother')]
|
||||
if self.education_status:
|
||||
base_domain.append(('education_status', '=', self.education_status))
|
||||
if self.education_level:
|
||||
base_domain.append(('education_levels', '=', self.education_level.id))
|
||||
if self.age_category_id:
|
||||
base_domain.append(('age', '<=', self.age_category_id.max_age))
|
||||
base_domain.append(('age', '>=', self.age_category_id.min_age))
|
||||
self.members_domain_ids = self.env['family.member'].sudo().search(base_domain)
|
||||
domain = {'benefit_id': [('id', 'in', self.members_domain_ids.ids)]}
|
||||
return {'domain': domain}
|
||||
|
||||
gender = fields.Selection(
|
||||
string="Gender",
|
||||
related='benefit_id.gender',
|
||||
)
|
||||
# @api.depends('sponsorship_type')
|
||||
# def onchange_benefit_type(self):
|
||||
# # Create a domain
|
||||
# if self.benefit_type and self.benefit_id and not self.benefit_id.benefit_type == self.benefit_type:
|
||||
# self.benefit_id = False
|
||||
# elif self.benefit_type and self.benefit_ids and not self.benefit_ids[0].benefit_type == self.benefit_type:
|
||||
# self.benefit_ids = [(6, 0, [])]
|
||||
# self.benefit_count = 0
|
||||
# self.min_needs_percent = 0
|
||||
# self.max_needs_percent = 0
|
||||
#
|
||||
# if self.benefit_type and self.sponsorship_type == 'person':
|
||||
# self.benefit_ids = [(6, 0, [])]
|
||||
# self.benefit_count = 0
|
||||
# self.min_needs_percent = 0
|
||||
# self.max_needs_percent = 0
|
||||
# base_domain = [('state', 'in', ('second_approve', 'temporarily_suspended', 'suspended_first_approve'))]
|
||||
# if self.gender:
|
||||
# if self.gender == 'female':
|
||||
# base_domain.append(('relationn.relation_type', '=','daughter'))
|
||||
# if self.gender == 'male':
|
||||
# base_domain.append(('relationn.relation_type', '=', 'son'))
|
||||
# if self.education_status:
|
||||
# base_domain.append(('education_status', '=', self.education_status))
|
||||
# if self.education_level:
|
||||
# base_domain.append(('education_levels', '=', self.education_level.id))
|
||||
# benefit_ids = self.env['family.member'].sudo().search(base_domain)
|
||||
# domain = {'benefit_id': [('id', 'in', benefit_ids.mapped('id'))]}
|
||||
# return {'domain': domain}
|
||||
# elif self.benefit_type and self.sponsorship_type == 'group':
|
||||
# self.benefit_id = False
|
||||
# benefit_ids = self.env['grant.benefit'].sudo().search(
|
||||
# [('benefit_type', '=', self.benefit_type), ('state', '=', 'approve')], limit=self.benefit_count)
|
||||
# # domain = {'benefit_ids': [('id', 'in', benefit_ids.filtered(lambda ben: ben.benefit_needs_percent > 0 and ben.benefit_needs_percent >= self.min_needs_percent and ben.benefit_needs_percent <= self.max_needs_percent).mapped('id'))]}
|
||||
# domain = {'benefit_ids': [('id', 'in', benefit_ids.mapped('id'))]}
|
||||
# return {'domain': domain}
|
||||
|
||||
gender = fields.Selection(selection=[('male', 'Male'), ('female', 'Female')], string="Gender")
|
||||
age_category_id = fields.Many2one('age.category',string='Age Category')
|
||||
city_id = fields.Many2one(
|
||||
'res.country.city', related='benefit_id.city_id', string='District')
|
||||
'res.country.city',string='District')
|
||||
|
||||
benefit_count = fields.Integer(string='Sponsorship Beneficiaries Number')
|
||||
|
||||
|
|
@ -200,7 +231,7 @@ class TakafulSponsorship(models.Model):
|
|||
tracking=True
|
||||
)
|
||||
benefit_ids = fields.Many2many(
|
||||
'grant.benefit',
|
||||
'family.member',
|
||||
string='Beneficiaries Names',
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -69,17 +69,15 @@
|
|||
|
||||
<field name="is_widow_orphan" invisible="1"/>
|
||||
|
||||
<field name="gender" attrs="{'invisible': [('sponsorship_type', '!=', 'person')]}"/>
|
||||
<field name="orphan_status" attrs="{'invisible': ['|',('benefit_type', '!=', 'orphan'), ('sponsorship_type', '!=', 'person')]}"/>
|
||||
|
||||
<field name="education_status" attrs="{'invisible': [('sponsorship_type', '!=', 'person')]}"/>
|
||||
<field name="education_level" attrs="{'invisible': [('sponsorship_type', '!=', 'person')]}"/>
|
||||
|
||||
<field name="gender"/>
|
||||
<field name="age_category_id"/>
|
||||
<field name="education_status"/>
|
||||
<field name="education_level"/>
|
||||
<field name="payment_option"/>
|
||||
<field name="payment_journal_id" required="1" />
|
||||
<field name="payment_method"/>
|
||||
<field name="has_delay" invisible="1"/>
|
||||
|
||||
<field name="members_domain_ids" invisible="1"/>
|
||||
</group>
|
||||
|
||||
<group name="group_right">
|
||||
|
|
@ -121,6 +119,7 @@
|
|||
<field name="start_date" />
|
||||
<field name="end_date" />
|
||||
<field name="supporter_status" attrs="{'invisible': [('sponsorship_type', '!=', 'person')]}"/>
|
||||
<field name="branch_custom_id"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
|
|
@ -155,13 +154,13 @@
|
|||
|
||||
<group string="Orphans List" attrs="{'invisible': ['|', ('sponsorship_type', '!=', 'group'), ('benefit_type', '!=', 'orphan')]}">
|
||||
|
||||
<field name="benefit_ids" nolabel="1" context="{'tree_view_ref':'odex_takaful.grant_benefit_kafala_needs_tree'}"/>
|
||||
<field name="benefit_ids" nolabel="1" domain="[('id', 'in', members_domain_ids)]"/>
|
||||
|
||||
</group>
|
||||
|
||||
<group string="Widows List" attrs="{'invisible': ['|', ('sponsorship_type', '!=', 'group'), ('benefit_type', '!=', 'widow')]}">
|
||||
|
||||
<field name="benefit_ids" nolabel="1" context="{'tree_view_ref':'odex_takaful.grant_benefit_kafala_needs_tree'}"/>
|
||||
<field name="benefit_ids" nolabel="1" domain="[('id', 'in', members_domain_ids)]"/>
|
||||
|
||||
</group>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue