Marriage Service

This commit is contained in:
eman 2024-11-26 14:53:11 +02:00
parent 6f86a53af0
commit 773e34c2b4
5 changed files with 114 additions and 15 deletions

View File

@ -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):

View File

@ -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'

View File

@ -58,8 +58,10 @@
<field name="family_id" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
<field name="family_category" force_save="1"/>
<field name="benefit_member_count" force_save="1"/>
<field name="eid_gift_benefit_count" attrs="{'invisible':['|',('service_type','!=','eid_gift'),('benefit_type','!=','family')]}"/>
<field name="branch_custom_id" force_save="1"/>
<field name="member_id" attrs="{'invisible':[('benefit_type','!=','member')],'readonly':[('state','not in',['draft','researcher','send_request'])],'required':[('benefit_type','=','member')]}"/>
<field name="member_age" attrs="{'invisible':[('benefit_type','!=','member')]}"/>
<field name="account_id" attrs="{'invisible':[('service_type','=','electrical_devices')]}"/>
<field name="device_account_id" attrs="{'invisible':[('service_type','!=','electrical_devices')]}"/>
<field name="accountant_id" attrs="{'invisible':[('state','in',['draft','researcher','send_request','first_approve','second_approve'])]}"/>
@ -73,20 +75,21 @@
<field name="main_service_category" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
<field name="sub_service_category" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
<field name="service_cat" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" required="1"/>
<field name="requested_service_amount" attrs="{'readonly': ['|',
'|',
'&amp;',
('state', 'not in', ['draft', 'researcher', 'send_request']),
('service_type', '!=', 'electrical_devices'),
'&amp;',
('state', 'not in', ['draft', 'researcher', 'send_request', 'first_approve', 'second_approve', 'accounting_approve']),
('service_type', '=', 'electrical_devices'),
('service_type', '=', 'home_furnishing')]}" force_save="1" required="1"/>
<field name="requested_service_amount" attrs="{'readonly': ['|', '|', '|', '|', '|', '|',
'&amp;',('state', 'not in', ['draft', 'researcher', 'send_request']),('service_type', '!=', 'electrical_devices'),
'&amp;',('state', 'not in', ['draft', 'researcher', 'send_request', 'first_approve', 'second_approve', 'accounting_approve']),
('service_type', '=', 'electrical_devices'),
('service_type', '=', 'home_furnishing'),
('service_type', '=', 'marriage'),
('service_type', '=', 'eid_gift'),
('service_type', '=', 'winter_clothing'),
('service_type', '=', 'ramadan_basket')]}" force_save="1" required="1" />
<field name="max_electricity_bill_amount" readonly="1" force_save="1" attrs="{'invisible':[('service_type','!=','electricity_bill')]}"/>
<field name="max_water_bill_amount" readonly="1" force_save="1" attrs="{'invisible':[('service_type','!=','water_bill')]}"/>
<field name="aid_amount" invisible="1"/>
<field name="description" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}"/>
<field name="service_attach" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" widget="many2many_attachment_preview"/>
<field name="has_marriage_course" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])],'invisible':[('service_type','!=','marriage')],'required':[('service_type','=','marriage')]}" widget="many2many_attachment_preview"/>
<field name="service_type" invisible="1"/>
</group>
</group>

View File

@ -181,6 +181,25 @@
<field name="orphan_member_amount"/>
</group>
</page>
<page string="Eid Gift Settings" attrs="{'invisible':[('service_type','!=','eid_gift')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="eid_gift_max_age"/>
<field name="eid_gift_member_amount"/>
</group>
</page>
<page string="Winter Clothing Settings" attrs="{'invisible':[('service_type','!=','winter_clothing')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="winter_clothing_member_amount"/>
</group>
</page>
<page string="Ramadan Basket Settings" attrs="{'invisible':[('service_type','!=','ramadan_basket')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="ramadan_basket_member_amount"/>
</group>
</page>
</notebook>
</sheet>
</form>

View File

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