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) + +