Merge pull request #5764 from expsa/yout
[IMP] odex_benefit: IMP benefit
This commit is contained in:
commit
2ab2e075a8
|
|
@ -147,6 +147,7 @@ class GrantBenefitProfile(models.Model):
|
|||
cloth_ids = fields.One2many('benefit.cloth', 'benefit_id')
|
||||
expenses_request_ids = fields.One2many('benefit.expenses', 'benefit_id')
|
||||
expenses_ids = fields.One2many('expenses.line', 'benefit_id')
|
||||
mother_expenses_ids = fields.One2many('expenses.line','mother_benefit_id',string="Mother Commitments / Expenses")
|
||||
# Father's case and his data # Birth Date # Address # dead data
|
||||
# Father's case and his data
|
||||
# family_name = fields.Char(string="Family Name", tracking=True)
|
||||
|
|
@ -212,6 +213,8 @@ class GrantBenefitProfile(models.Model):
|
|||
is_mother_work = fields.Boolean('Is Mother Work?')
|
||||
mother_has_disabilities = fields.Boolean('Has Disabilities?')
|
||||
mother_income = fields.Float("Mother Income", digits=(16, 0))
|
||||
mother_net_income = fields.Float(string="Mother Net Income",compute='_compute_mother_net_income',
|
||||
store=True,help="Mother gross income minus her deducted expenses and monthly debt installments")
|
||||
mother_birth_date = fields.Date(string="Birth Date")
|
||||
mother_age = fields.Integer(string="Age", compute='_compute_get_mother_age')
|
||||
mother_city_id = fields.Many2one('res.country.city', string='City')
|
||||
|
|
@ -411,6 +414,7 @@ class GrantBenefitProfile(models.Model):
|
|||
meal_card = fields.Boolean(string="Meal Card",related="district_id.meal_card", store=True,related_sudo=True)
|
||||
attachment_ids = fields.One2many('ir.attachment', 'benefit_id')
|
||||
family_debits_ids = fields.One2many('family.debits', 'benefit_id')
|
||||
mother_debits_ids = fields.One2many('family.debits','mother_benefit_id',string="Mother Debts")
|
||||
researcher_id = fields.Many2one("committees.line", string="Researcher",tracking=True)
|
||||
assigned_researcher_id = fields.Many2one('committees.line',string='Assigned Researcher',tracking=True)
|
||||
auto_accept_for_member = fields.Boolean(string="Auto Accept For members", default=True)
|
||||
|
|
@ -627,6 +631,20 @@ class GrantBenefitProfile(models.Model):
|
|||
('unique_code', "unique (code) WHERE state NOT IN ('draft', 'new')", 'This code already exists')
|
||||
]
|
||||
|
||||
@api.depends('mother_income', 'is_mother_work','mother_expenses_ids','mother_debits_ids')
|
||||
def _compute_mother_net_income(self):
|
||||
for rec in self:
|
||||
if not rec.is_mother_work:
|
||||
rec.mother_net_income = 0.0
|
||||
continue
|
||||
|
||||
deductions = (
|
||||
sum(rec.mother_expenses_ids.filtered('deduct_from_family_income').mapped('amount')) +
|
||||
sum(rec.mother_debits_ids.filtered('deduct_from_family_income').mapped('monthly_installment'))
|
||||
)
|
||||
|
||||
rec.mother_net_income = max(rec.mother_income - deductions, 0.0)
|
||||
|
||||
def _compute_total_families(self):
|
||||
for record in self:
|
||||
record.total_father_families = self.search_count([('father_id_number','=',record.father_id_number),('id','!=',record.id)])
|
||||
|
|
@ -857,7 +875,7 @@ class GrantBenefitProfile(models.Model):
|
|||
'&', ('res_model', '=', 'education.status'),
|
||||
('res_id', 'in', self.mother_education_status_ids.ids),
|
||||
'&', ('res_model', '=', 'family.debits'),
|
||||
('res_id', 'in', self.family_debits_ids.ids),
|
||||
('res_id', 'in', (self.family_debits_ids + self.mother_debits_ids).ids),
|
||||
'&', ('res_model', '=', 'salary.line'),
|
||||
('res_id', 'in', self.salary_ids.ids),
|
||||
'&', ('res_model', '=', 'family.member'),
|
||||
|
|
@ -1260,12 +1278,12 @@ class GrantBenefitProfile(models.Model):
|
|||
elif rec.mother_marital_conf.is_benefit :
|
||||
if rec.is_mother_work and rec.mother_country_id.code == 'SA' or (
|
||||
rec.mother_country_id.code != 'SA' and rec.father_country_id.code == 'SA'):
|
||||
if mini_income_for_mother < rec.mother_income <= max_income_for_mother:
|
||||
if mini_income_for_mother < rec.mother_net_income <= max_income_for_mother:
|
||||
reasons.append(_("The mother's income is between minimum and maximum thresholds."))
|
||||
status = 'non_benefit'
|
||||
elif rec.mother_income <= mini_income_for_mother:
|
||||
elif rec.mother_net_income <= mini_income_for_mother:
|
||||
status = 'benefit'
|
||||
elif rec.mother_income > max_income_for_mother:
|
||||
elif rec.mother_net_income > max_income_for_mother:
|
||||
status = 'benefit'
|
||||
elif not rec.is_mother_work and rec.mother_country_id.code == 'SA' or (
|
||||
rec.mother_country_id.code != 'SA' and rec.father_country_id.code == 'SA'):
|
||||
|
|
@ -1358,12 +1376,12 @@ class GrantBenefitProfile(models.Model):
|
|||
mother_fields = [
|
||||
'mother_name', 'mother_second_name', 'mother_third_name', 'mother_family_name', 'mother_id_number',
|
||||
'mother_birth_date', 'mother_marital_conf', 'mother_location_conf', 'is_mother_work',
|
||||
'mother_income', 'mother_age','education_status','mother_diseases_attachment_ids',
|
||||
'mother_net_income', 'mother_age','education_status','mother_diseases_attachment_ids',
|
||||
'mother_education_status_ids','mother_disabilities_attachment_ids'
|
||||
]
|
||||
if any(field in vals for field in mother_fields):
|
||||
for rec in self:
|
||||
rec.calculate_income(rec.mother_income, rec.mother_status, rec.salary_ids)
|
||||
rec.calculate_income(rec.mother_net_income, rec.mother_status, rec.salary_ids)
|
||||
rec.add_or_replace_mother_as_member()
|
||||
|
||||
# Handle replacement mother update/create
|
||||
|
|
@ -1398,7 +1416,7 @@ class GrantBenefitProfile(models.Model):
|
|||
res.code = self.env['ir.sequence'].sudo().next_by_code('benefit.sequence') or _('New')
|
||||
# Add mother
|
||||
if res.mother_id_number:
|
||||
res.calculate_income(res.mother_income, res.mother_status, res.salary_ids)
|
||||
res.calculate_income(res.mother_net_income, res.mother_status, res.salary_ids)
|
||||
res.add_or_replace_mother_as_member()
|
||||
# Add replacement mother
|
||||
if res.add_replacement_mother and res.replacement_mother_id_number:
|
||||
|
|
@ -2051,7 +2069,7 @@ class GrantBenefitProfile(models.Model):
|
|||
'member_location_conf': rec.mother_location_conf.id,
|
||||
'age': rec.mother_age,
|
||||
'is_work': rec.is_mother_work,
|
||||
'member_income': rec.mother_income,
|
||||
'member_income': rec.mother_net_income,
|
||||
'education_status': rec.education_status,
|
||||
#'member_status': rec.mother_status,
|
||||
'member_education_status_ids': [(5, 0)] + [(4, edu.id) for edu in rec.mother_education_status_ids],
|
||||
|
|
@ -2449,7 +2467,7 @@ class GrantBenefitProfile(models.Model):
|
|||
if partner_exist or benefit_exist:
|
||||
raise ValidationError(_("The account number already exists!"))
|
||||
|
||||
@api.onchange('mother_marital_conf', 'mother_location_conf', 'mother_income')
|
||||
@api.onchange('mother_marital_conf', 'mother_location_conf', 'mother_net_income')
|
||||
def _onchange_mother_info(self):
|
||||
res = {}
|
||||
if self.mother_status == 'non_benefit':
|
||||
|
|
|
|||
|
|
@ -474,6 +474,7 @@ class ExpensesLine(models.Model):
|
|||
category_id = fields.Many2one(
|
||||
'benefit.category')
|
||||
benefit_id = fields.Many2one('grant.benefit')
|
||||
mother_benefit_id = fields.Many2one('grant.benefit',string="Mother Benefit",ondelete='cascade')
|
||||
currency_id = fields.Many2one('res.currency', related='benefit_id.currency_id')
|
||||
expenses_type_custom = fields.Many2one('expenses.type')
|
||||
expenses_type = fields.Selection(
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class FamilyDebits(models.Model):
|
|||
loan_end_date = fields.Date(string='Loan End Date')
|
||||
loan_reason = fields.Many2one("loan.reason",string='Loan Reason')
|
||||
benefit_id = fields.Many2one("grant.benefit")
|
||||
mother_benefit_id = fields.Many2one('grant.benefit',string="Mother Benefit",ondelete='cascade')
|
||||
currency_id = fields.Many2one('res.currency', related='benefit_id.currency_id')
|
||||
loan_attach = fields.Binary(attachment=True,string='Loan Attach')
|
||||
description = fields.Char(string='Description')
|
||||
|
|
|
|||
|
|
@ -816,6 +816,10 @@
|
|||
options="{'currency_field': 'currency_id', 'field_digits': False}"
|
||||
digits="[16,0]"
|
||||
attrs="{'invisible':[('is_mother_work','=',False)],'required':[('is_mother_work','=',True)],'readonly':[('state','not in',['draft','new','complete_info'])]}"/>
|
||||
<field name="mother_net_income" widget="monetary" force_save="1"
|
||||
options="{'currency_field': 'currency_id', 'field_digits': False}"
|
||||
digits="[16,0]"
|
||||
attrs="{'invisible':[('is_mother_work','=',False)]}"/>
|
||||
<field name="mother_salary_certificate"
|
||||
widget="many2many_attachment_preview"
|
||||
attrs="{'invisible':[('is_mother_work','=',False)]}"/>
|
||||
|
|
@ -864,6 +868,75 @@
|
|||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Mother Expenses" attrs="{'invisible':[('is_mother_work','=',False)]}">
|
||||
<field name="mother_expenses_ids" context="{'default_state': 'accepted'}"
|
||||
attrs="{'readonly':[('state','not in',['draft','new','complete_info'])]}">
|
||||
<tree editable="top">
|
||||
<field name="mother_benefit_id" invisible="1"/>
|
||||
<field name="expenses_type" invisible="1"/>
|
||||
<field name="expenses_type_custom"
|
||||
options="{'no_create': True, 'no_create_edit': True,'no_quick_create': True, 'no_open': True}"/>
|
||||
<field name="amount" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}" sum="amount"/>
|
||||
<field name="expense_attachments"
|
||||
widget="many2many_attachment_preview"/>
|
||||
<field name="note"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="deduct_from_family_income" string="Deduct from Mother Income" widget="boolean_toggle"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Mother Debts" attrs="{'invisible':[('is_mother_work','=',False)]}">
|
||||
<field name="mother_debits_ids" context="{'default_state': 'accepted'}"
|
||||
attrs="{'readonly':[('state','not in',['draft','new','complete_info'])]}">
|
||||
<form string="Family Loans">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="loan_giver"
|
||||
options="{'no_create': True, 'no_create_edit': True,'no_quick_create': True, 'no_open': True}"/>
|
||||
<field name="loan_amount" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="number_of_installments"/>
|
||||
<field name="loan_total_paid" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="loan_remaining" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="monthly_installment" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="loan_attach"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="last_paid_amount" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="last_paid_amount_date"/>
|
||||
<field name="loan_reason"
|
||||
options="{'no_create': True, 'no_create_edit': True,'no_quick_create': True, 'no_open': True}"/>
|
||||
<field name="description"/>
|
||||
<field name="benefit_id" invisible="1"/>
|
||||
<field name="loan_start_date"/>
|
||||
<field name="loan_end_date"/>
|
||||
<field name="deduct_from_family_income" string="Deduct from Mother Income"
|
||||
widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
<tree>
|
||||
<field name="loan_giver"/>
|
||||
<field name="monthly_installment" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}" sum="Total"/>
|
||||
<field name="loan_amount" widget="monetary"
|
||||
options="{'currency_field': 'currency_id'}" sum="Total"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="loan_attach" widget="binary"/>
|
||||
<field name="deduct_from_family_income" string="Deduct from Mother Income" widget="boolean_toggle"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</page>
|
||||
<page string="Replacement Mother"
|
||||
|
|
|
|||
Loading…
Reference in New Issue