diff --git a/odex25_ensan/odex_benefit/models/benefit.py b/odex25_ensan/odex_benefit/models/benefit.py
index f9064d82e..410ba4a92 100644
--- a/odex25_ensan/odex_benefit/models/benefit.py
+++ b/odex25_ensan/odex_benefit/models/benefit.py
@@ -604,6 +604,7 @@ class GrantBenefitProfile(models.Model):
string="Company Currency",
related='company_id.currency_id')
family_edit = fields.Boolean(string='Family Edit', default=False)
+ family_return_reason = fields.Text(string="Family Return Reason")
_sql_constraints = [
('unique_code', "unique (code) WHERE state NOT IN ('draft', 'new')", 'This code already exists')
@@ -1753,6 +1754,7 @@ class GrantBenefitProfile(models.Model):
def get_total_income(self):
validation_setting = self.env["family.validation.setting"].search([], limit=1)
mini_income_for_mother = validation_setting.mini_income_for_mother
+ max_income_for_mother = validation_setting.max_income_for_mother
for rec in self:
rec.total_income = 0.0
@@ -1760,15 +1762,27 @@ class GrantBenefitProfile(models.Model):
# Helper function to calculate income based on mother/replacement_mother status and salary_ids
def calculate_income(income, status, salary_ids):
total = 0.0
- accepted_salaries = sum(salary_ids.filtered(lambda e: e.state == 'accepted').mapped('salary_amount'))
-
+ existing_mother_salary = salary_ids.filtered(lambda x: x.is_mother_salary == True)
+ should_have_salary_line = (status == 'benefit' and income > max_income_for_mother)
+ if should_have_salary_line:
+ if not existing_mother_salary:
+ salary_ids.create({
+ 'benefit_id': rec.id,
+ 'is_mother_salary': True,
+ 'salary_amount': income,
+ 'state': 'accepted',
+ })
+ elif existing_mother_salary:
+ existing_mother_salary.write({'salary_amount': income})
+ else:
+ if existing_mother_salary:
+ existing_mother_salary.unlink()
if status == 'non_benefit':
- total = accepted_salaries
+ total = sum(salary_ids.filtered(lambda e: e.state == 'accepted' and not e.is_mother_salary).mapped(
+ 'salary_amount'))
elif status == 'benefit':
- if not salary_ids:
- total = income if income > mini_income_for_mother else 0.0
- else:
- total = accepted_salaries + (income if income > mini_income_for_mother else 0.0)
+ total = sum(
+ salary_ids.filtered(lambda e: e.state == 'accepted').mapped('salary_amount'))
return total
if not rec.add_replacement_mother:
# Calculate total income for mother
@@ -2019,17 +2033,20 @@ class GrantBenefitProfile(models.Model):
@api.depends('salary_ids', 'expenses_ids', 'family_debits_ids.monthly_installment','mother_income','member_ids','family_debits_ids.state','expenses_ids.state','salary_ids.state')
def get_member_income(self):
validation_setting = self.env["family.validation.setting"].search([], limit=1)
- max_income_for_mother = validation_setting.max_income_for_mother
- total = 0
+ # max_income_for_mother = validation_setting.max_income_for_mother
+ # total = 0
for ben in self:
- if ben.mother_income >= max_income_for_mother and ben.family_debits_ids:
- family_income = ben.total_income - ben.total_expenses
- elif ben.mother_income >= max_income_for_mother:
- family_income = ben.total_income - ben.total_expenses
- elif ben.family_debits_ids:
- family_income = ben.total_income - ben.total_expenses
- else:
- family_income = ben.total_income - ben.total_expenses
+ ben.get_total_income()
+ ben.get_total_expenses()
+ # if ben.mother_income >= max_income_for_mother and ben.family_debits_ids:
+ # family_income = ben.total_income - ben.total_expenses
+ # elif ben.mother_income >= max_income_for_mother:
+ # family_income = ben.total_income - ben.total_expenses
+ # elif ben.family_debits_ids:
+ # family_income = ben.total_income - ben.total_expenses
+ # else:
+ # family_income = ben.total_income - ben.total_expenses
+ family_income = ben.total_income - ben.total_expenses
if ben.benefit_member_count:
if ben.benefit_member_count > 3:
ben.member_income = family_income / ben.benefit_member_count
@@ -2041,10 +2058,10 @@ class GrantBenefitProfile(models.Model):
@api.depends("member_income")
def get_benefit_category(self):
for rec in self:
- if rec.member_income:
- result = self.env['benefit.category'].sudo().search(
- [('mini_income_amount', '<=', rec.member_income),
- ('max_income_amount', '>=', rec.member_income)])
+ result = self.env['benefit.category'].sudo().search(
+ [('mini_income_amount', '<=', rec.member_income),
+ ('max_income_amount', '>=', rec.member_income)])
+ if result:
rec.benefit_category_id = result.id
else:
rec.benefit_category_id = None
diff --git a/odex25_ensan/odex_benefit/models/benefit_config.py b/odex25_ensan/odex_benefit/models/benefit_config.py
index 7558cf7e1..5efa098cd 100644
--- a/odex25_ensan/odex_benefit/models/benefit_config.py
+++ b/odex25_ensan/odex_benefit/models/benefit_config.py
@@ -300,6 +300,7 @@ class Salary(models.Model):
attach_start_date = fields.Date(string='Attach Start Date')
attach_end_date = fields.Date(string='Attach End Date')
is_required = fields.Boolean(string='Is Required?')
+ is_mother_salary = fields.Boolean(string="Is Mother Salary", default=False)
is_default = fields.Boolean(string='Is Default?')
state = fields.Selection(string='Status',selection=[('waiting', 'Waiting'),('accepted', 'Accepted'),('refused', 'Refused')],default="waiting")
# total_salary = fields.Float(string="Total Salary", compute='_compute_total_salary',store=True)
diff --git a/odex25_ensan/odex_benefit/views/benefit_view.xml b/odex25_ensan/odex_benefit/views/benefit_view.xml
index 896381df0..5510d93b2 100644
--- a/odex25_ensan/odex_benefit/views/benefit_view.xml
+++ b/odex25_ensan/odex_benefit/views/benefit_view.xml
@@ -311,6 +311,10 @@
+
+
@@ -1079,6 +1083,7 @@
+
@@ -1363,6 +1368,9 @@
+
+
+