diff --git a/odex25_ensan/odex_benefit/models/service_request.py b/odex25_ensan/odex_benefit/models/service_request.py
index 3a380102c..89476ef4f 100644
--- a/odex25_ensan/odex_benefit/models/service_request.py
+++ b/odex25_ensan/odex_benefit/models/service_request.py
@@ -115,6 +115,12 @@ class ServiceRequest(models.Model):
# Marriage
member_age = fields.Integer(string="Member Age", related="member_id.age")
member_payroll = fields.Float(string="Member Payroll", related="member_id.member_income")
+ has_marriage_course = fields.Selection(selection=[
+ ('yes', 'Yes'),
+ ('no', 'No'),
+ ], string='Has Marriage Course')
+ #Eid Gift
+ eid_gift_benefit_count = fields.Integer(string='Eid Gift Benefit Count',compute="_get_eid_gift_benefit_count")
state = fields.Selection( selection = [
('draft', 'Draft'),
('researcher', 'Researcher'),
@@ -336,6 +342,12 @@ class ServiceRequest(models.Model):
rec.rent_for_alternative_housing = self.env['services.settings'].search([('service_type','=','rent')],limit=1).id
else:
rec.rent_for_alternative_housing = False
+ @api.depends('family_id')
+ def _get_eid_gift_benefit_count(self):
+ for rec in self:
+ rec.eid_gift_benefit_count = 0
+ if rec.family_id:
+ rec.eid_gift_benefit_count = len(rec.family_id.member_ids.filtered(lambda x: x.age <= rec.service_cat.member_max_age))
@api.onchange('requests_counts','service_type')
def _get_max_transportation_amounts(self):
for rec in self:
@@ -409,15 +421,27 @@ class ServiceRequest(models.Model):
furnishing_cost_sum += rec.furnishing_cost
self.requested_service_amount = furnishing_cost_sum
- @api.onchange('member_id')
+ @api.onchange('member_id','family_id','eid_gift_benefit_count','service_cat')
def _onchange_member(self):
for rec in self:
- if rec.member_id:
+ if rec.benefit_type == 'member' and rec.service_type == 'marriage':
rec.requested_service_amount = rec.service_cat.fatherless_member_amount
if not rec.member_id.benefit_id.add_replacement_mother and rec.member_id.benefit_id.mother_marital_conf.is_dead:
rec.requested_service_amount = rec.service_cat.orphan_member_amount
if rec.member_id.benefit_id.add_replacement_mother and rec.member_id.benefit_id.replacement_mother_marital_conf.is_dead:
rec.requested_service_amount = rec.service_cat.orphan_member_amount
+ if rec.benefit_type == 'family' and rec.service_type == 'eid_gift':
+ rec.requested_service_amount = rec.eid_gift_benefit_count * rec.service_cat.eid_gift_member_amount
+ if rec.benefit_type == 'member' and rec.service_type == 'eid_gift':
+ rec.requested_service_amount = rec.service_cat.eid_gift_member_amount
+ if rec.benefit_type == 'family' and rec.service_type == 'winter_clothing':
+ rec.requested_service_amount = rec.benefit_member_count * rec.service_cat.winter_clothing_member_amount
+ if rec.benefit_type == 'member' and rec.service_type == 'winter_clothing':
+ rec.requested_service_amount = rec.service_cat.winter_clothing_member_amount
+ if rec.benefit_type == 'family' and rec.service_type == 'ramadan_basket':
+ rec.requested_service_amount = rec.service_cat.ramadan_basket_member_amount
+
+
@api.onchange('service_cat','family_id')
def _onchange_service_cat(self):
electricity_bill_amount = self.service_cat.electricity_bill_lines.filtered(lambda x : x.benefit_category_id.id == self.family_category.id and x.max_count_member > self.benefit_member_count > x.min_count_member )
@@ -425,7 +449,7 @@ class ServiceRequest(models.Model):
self.max_electricity_bill_amount = electricity_bill_amount.max_amount_for_electricity_bill
self.max_water_bill_amount = water_bill_amount.max_amount_for_water_bill
- @api.onchange('requested_service_amount', 'benefit_type', 'date','service_cat','family_id','exception_or_steal','home_furnishing_exception')
+ @api.onchange('requested_service_amount', 'benefit_type', 'date','service_cat','family_id','exception_or_steal','home_furnishing_exception','has_marriage_course')
def onchange_requested_service_amount(self):
res = {}
today = fields.Date.today()
@@ -436,7 +460,7 @@ class ServiceRequest(models.Model):
date_before_month = today - timedelta(days=30)
for rec in self:
# Validation for 'member' benefit type
- if rec.benefit_type == 'member' and rec.requested_service_amount:
+ if rec.benefit_type == 'member' and rec.service_cat.service_type == 'rent':
max_requested_amount = rec.service_cat.max_amount_for_student
if rec.requested_service_amount > max_requested_amount:
self.benefit_type = False
@@ -715,6 +739,26 @@ class ServiceRequest(models.Model):
'message': _(
"You cannot request more than %s within year") % rec.service_cat.max_recruiting_domestic_worker_or_nurse_amount}
return res
+ if rec.benefit_type == 'member' and rec.service_cat.service_type == 'marriage':
+ if rec.member_age > rec.service_cat.member_max_age:
+ self.benefit_type = False
+ res['warning'] = {'title': _('ValidationError'),
+ 'message': _(
+ "Member Age should be less than %s ") % rec.service_cat.member_max_age}
+ return res
+ if rec.member_payroll > rec.service_cat.member_max_payroll:
+ self.benefit_type = False
+ res['warning'] = {'title': _('ValidationError'),
+ 'message': _(
+ "Member Payroll should be less than %s ") % rec.service_cat.member_max_payroll}
+ return res
+ if rec.has_marriage_course == 'no':
+ raise UserError(_("You Should take a course"))
+ # Validation for 'family' benefit type with 'eid_gift' service type
+ if rec.benefit_type == 'family' and rec.service_cat.service_type == 'eid_gift':
+ if rec.eid_gift_benefit_count == 0:
+ raise UserError(_("You cannot request this service"))
+
@api.onchange('requested_quantity','benefit_type')
def onchange_requested_quantity(self):
diff --git a/odex25_ensan/odex_benefit/models/services_settings.py b/odex25_ensan/odex_benefit/models/services_settings.py
index 61d3fe976..2823d13e5 100644
--- a/odex25_ensan/odex_benefit/models/services_settings.py
+++ b/odex25_ensan/odex_benefit/models/services_settings.py
@@ -16,7 +16,8 @@ class ServicesSettings(models.Model):
,('electricity_bill','Electricity bill'),('water_bill','Water bill'),('buy_car','Buy Car'),('recruiting_driver','Recruiting Driver')
,('transportation_insurance','Transportation Insurance'),('debits','Debits'),('health_care','Health Care'),
('providing_medicines_medical_devices_and_needs_the_disabled','Providing Medicines Medical Devices And Needs The Disabled'),
- ('recruiting_domestic_worker_or_nurse','Recruiting a domestic worker or nurse') ,('marriage','Marriage')]
+ ('recruiting_domestic_worker_or_nurse','Recruiting a domestic worker or nurse') ,('marriage','Marriage'),('eid_gift','Eid gift'),
+ ('winter_clothing','Winter clothing'),('ramadan_basket','Ramadan basket')]
,string='Service Type')
max_amount_for_student = fields.Float(string='Max Amount for Student')
raise_amount_for_orphan = fields.Float(string='Raise Amount For Orphan')
@@ -64,6 +65,15 @@ class ServicesSettings(models.Model):
member_max_payroll = fields.Float(string='Member Max Payroll')
fatherless_member_amount = fields.Float(string='Fatherless Member Amount')
orphan_member_amount = fields.Float(string='Orphan Member Amount')
+ # Eid Gift
+ eid_gift_max_age = fields.Integer(string='Eid Gift Max Age')
+ eid_gift_member_amount = fields.Float(string='Eid Gift Member Amount')
+ #Winter clothing
+ winter_clothing_member_amount = fields.Float(string="Winter clothing Member Amount")
+ #Ramadan Basket
+ ramadan_basket_member_amount = fields.Float(string='Ramadan Basket Member Amount')
+
+
class RentLines(models.Model):
_name = 'rent.lines'
diff --git a/odex25_ensan/odex_benefit/views/service_request.xml b/odex25_ensan/odex_benefit/views/service_request.xml
index ac3f0495e..a313f655e 100644
--- a/odex25_ensan/odex_benefit/views/service_request.xml
+++ b/odex25_ensan/odex_benefit/views/service_request.xml
@@ -58,8 +58,10 @@
+
+
@@ -73,20 +75,21 @@
-
+
+
diff --git a/odex25_ensan/odex_benefit/views/services_settings.xml b/odex25_ensan/odex_benefit/views/services_settings.xml
index 8d0d13769..5ae393512 100644
--- a/odex25_ensan/odex_benefit/views/services_settings.xml
+++ b/odex25_ensan/odex_benefit/views/services_settings.xml
@@ -181,6 +181,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_ensan/odex_benefit_project/models/service_request.py b/odex25_ensan/odex_benefit_project/models/service_request.py
index 86d4b8d6b..02b3156cb 100644
--- a/odex25_ensan/odex_benefit_project/models/service_request.py
+++ b/odex25_ensan/odex_benefit_project/models/service_request.py
@@ -33,7 +33,7 @@ class ServiceRequestInherit(models.Model):
)
rec.project_id = project
- @api.onchange('requested_service_amount', 'benefit_type', 'date', 'service_cat','family_id','device_id','exception_or_steal','home_furnishing_exception','rent_period')
+ @api.onchange('requested_service_amount', 'benefit_type', 'date', 'service_cat','family_id','device_id','exception_or_steal','home_furnishing_exception','rent_period','has_marriage_course','member_id')
def onchange_requested_service_amount(self):
res = {}
today = fields.Date.today()
@@ -322,6 +322,7 @@ class ServiceRequestInherit(models.Model):
'message': _(
"You cannot request more than %s within year") % rec.service_cat.max_recruiting_domestic_worker_or_nurse_amount}
return res
+ # Validation for 'member' benefit type with 'marriage' service type
if rec.benefit_type == 'member' and rec.service_cat.service_type == 'marriage':
if rec.member_age > rec.service_cat.member_max_age:
self.benefit_type = False
@@ -335,4 +336,26 @@ class ServiceRequestInherit(models.Model):
'message': _(
"Member Payroll should be less than %s ") % rec.service_cat.member_max_payroll}
return res
+ if rec.has_marriage_course == 'no':
+ raise UserError(_("You Should take a course"))
+ # Validation for 'family' benefit type with 'eid_gift' service type
+ if rec.benefit_type == 'family' and rec.service_cat.service_type == 'eid_gift':
+ if rec.eid_gift_benefit_count == 0:
+ raise UserError(_("You cannot request this service because family should have members his age less than %s")%rec.service_cat.eid_gift_max_age)
+ # Validation for 'member' benefit type with 'eid_gift' service type
+ if rec.benefit_type == 'member' and rec.service_cat.service_type == 'eid_gift':
+ if rec.member_id.age > rec.service_cat.eid_gift_max_age:
+ raise UserError(_("You cannot request this service because your age should be less than %s")%rec.service_cat.eid_gift_max_age)
+ # # Validation for 'family' benefit type with 'eid_gift' service type
+ # if rec.benefit_type == 'family' and rec.service_cat.service_type == 'winter_clothing':
+ # if rec.eid_gift_benefit_count == 0:
+ # raise UserError(
+ # _("You cannot request this service because family should have members his age less than %s") % rec.service_cat.eid_gift_max_age)
+ # # Validation for 'member' benefit type with 'eid_gift' service type
+ # if rec.benefit_type == 'member' and rec.service_cat.service_type == 'eid_gift':
+ # if rec.member_id.age > rec.service_cat.eid_gift_max_age:
+ # raise UserError(
+ # _("You cannot request this service because your age should be less than %s") % rec.service_cat.eid_gift_max_age)
+
+