[IMP] IMP benefit services

This commit is contained in:
younes 2025-10-11 20:18:55 +01:00
parent 36b8eb29cb
commit 8b41a697bb
5 changed files with 72 additions and 56 deletions

View File

@ -16327,4 +16327,34 @@ msgstr "الحد الأقصى لعدد الأفراد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__amount_for_buy_home_for_member_count
msgid "Amount For Buy Home for member count"
msgstr "القيمة الإجمالية للمنزل"
msgstr "القيمة الإجمالية للمنزل"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__max_health_care_amount
msgid "Max Health Care Amount In Year"
msgstr "حقل الحد الأقصى للخدمة في العام"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__member_max_payroll
msgid "Member Max Payroll"
msgstr "الحد الأقصى لراتب الفرد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__fatherless_member_amount
msgid "Fatherless Member Amount"
msgstr "مبلغ العضو الذي توفي والده"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__orphan_member_amount
msgid "Orphan Member Amount"
msgstr "مبلغ العضو فاقد الأبوين"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_age
msgid "Member Age"
msgstr "عمر العضو"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__is_orphan
msgid "Orphaned (Both Parents Deceased)"
msgstr "فاقد الأبوين"

View File

@ -168,8 +168,16 @@ class ServiceRequest(models.Model):
currency_id = fields.Many2one('res.currency', string="Currency", related='company_id.currency_id')
service_max_amount = fields.Float(string="Maximum Amount", copy=False)
rent_period = fields.Integer('Rent Period')
is_orphan = fields.Boolean(string='Orphaned (Both Parents Deceased)',compute='_compute_is_orphan',store=True)
@api.depends('family_id.mother_marital_conf','family_id.replacement_mother_marital_conf')
def _compute_is_orphan(self):
for rec in self:
if not rec.family_id.add_replacement_mother:
mother_dead = bool(getattr(rec.family_id.mother_marital_conf, 'is_dead', False))
else:
mother_dead = bool(getattr(rec.family_id.replacement_mother_marital_conf, 'is_dead', False))
rec.is_orphan = mother_dead
def _expand_states(self, states, domain, order):
return [key for key, val in type(self).state.selection]
@ -388,7 +396,7 @@ class ServiceRequest(models.Model):
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))
rec.eid_gift_benefit_count = len(rec.family_id.member_ids.filtered(lambda x: x.age <= rec.service_cat.max_age))
@api.onchange('requests_counts', 'service_type', 'service_reason_id')
def _get_max_transportation_amounts(self):
@ -483,12 +491,6 @@ class ServiceRequest(models.Model):
@api.onchange('member_id','family_id','eid_gift_benefit_count','service_cat')
def _onchange_member(self):
for rec in self:
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':
@ -711,10 +713,28 @@ class ServiceRequest(models.Model):
existing_requests_within_year = self.search(domain)
rec.service_max_amount = rec.service_cat.max_health_care_amount - sum(existing_requests_within_year.mapped('requested_service_amount'))
if rec.service_cat.service_type == 'marriage':
rec.service_max_amount = rec.service_cat.fatherless_member_amount
if rec.is_orphan:
rec.service_max_amount = rec.service_cat.orphan_member_amount
if rec.member_age > rec.service_cat.max_age:
raise ValidationError(_( "Member Age should be less than %s ") % rec.service_cat.max_age)
if rec.member_payroll > rec.service_cat.member_max_payroll:
raise ValidationError(_("Member Payroll should be less than %s ") % rec.service_cat.member_max_payroll)
if not rec.is_orphan and rec.requested_service_amount > rec.service_max_amount:
raise ValidationError(_("You cannot request more than %s ") % rec.service_max_amount)
if rec.is_orphan and rec.requested_service_amount > rec.service_max_amount:
raise ValidationError(_("You cannot request more than %s ") % rec.service_max_amount)
if rec.has_marriage_course == 'no':
raise UserError(_("You Should take a course"))
continue
if rec.requested_service_amount > rec.service_max_amount and service_type not in special_services:
raise ValidationError(
_("You cannot request more than %s") % rec.service_max_amount
)
# if rec.benefit_type == 'family' and rec.service_cat.service_type == 'electrical_devices':
# Check for existing request of the same type in seven years and not exception or steal
# existing_request = self.search([
@ -753,34 +773,6 @@ class ServiceRequest(models.Model):
elif rec.rent_period > rec.service_cat.rent_period:
raise UserError(
_("You Cannot request this service for period more than %s") % rec.service_cat.rent_period)
# 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
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 not rec.family_id.mother_marital_conf.is_dead and rec.requested_service_amount > rec.service_cat.fatherless_member_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s ") % rec.service_cat.fatherless_member_amount}
return res
if rec.family_id.mother_marital_conf.is_dead and rec.requested_service_amount > rec.service_cat.orphan_member_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s ") % rec.service_cat.orphan_member_amount}
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:

View File

@ -45,8 +45,6 @@ class ServicesSettings(models.Model):
transportation_insurance_ids = fields.One2many('transportation.insurance', 'services_settings_id')
#Health_care
max_health_care_amount = fields.Float(string='Max Health Care Amount In Year')
# Marriage
member_max_age = fields.Integer(string='Member Max Age')
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')

View File

@ -125,6 +125,7 @@
<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="member_payroll" attrs="{'invisible':[('service_type','!=','marriage')]}"/>
<field name="account_id" invisible="1"/>
<field name="device_account_id" invisible="1"/>
<field name="accountant_id"
@ -144,6 +145,7 @@
<field name="service_cat"
attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}"
domain="[('id','in',available_service_cats)]" required="1"/>
<field name="is_orphan" attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
<field name="service_approval_date"/>
<field name="need_status"
attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}"/>
@ -362,12 +364,6 @@
<field name="requests_counts"/>
</group>
</page>
<page string="Marriage Service" attrs="{'invisible':[('service_type','!=','marriage')]}">
<group>
<field name="member_age"/>
<field name="member_payroll"/>
</group>
</page>
<page string="Eligibility Criteria">
<group>
<field name="service_conditions"/>

View File

@ -39,12 +39,20 @@
attrs="{'invisible': ['|',('service_type','!=','health_care'),('max_limit_type', '!=', 'service')]}"/>
<field name="min_count_member"
attrs="{'invisible':[('service_type','!=','buy_car')]}"/>
<field name="buy_home_max_total_amount" attrs="{'invisible':['|',('service_type','!=','buy_home'),('max_limit_type', '!=', 'amount_person')]}"/>
<field name="home_age" attrs="{'invisible':['|',('service_type','!=','buy_home'),('max_limit_type', '!=', 'amount_person')]}"/>
<field name="buy_home_max_total_amount"
attrs="{'invisible':['|',('service_type','!=','buy_home'),('max_limit_type', '!=', 'amount_person')]}"/>
<field name="home_age"
attrs="{'invisible':['|',('service_type','!=','buy_home'),('max_limit_type', '!=', 'amount_person')]}"/>
<field name="member_max_payroll"
attrs="{'invisible':[('service_type','!=','marriage')]}"/>
<field name="fatherless_member_amount"
attrs="{'invisible':[('service_type','!=','marriage')]}"/>
<field name="orphan_member_amount"
attrs="{'invisible':[('service_type','!=','marriage')]}"/>
<field name="currency_id" invisible="1"/>
</group>
<group>
<field name="max_age"/>
<field name="max_age" attrs="{'invisible': [('benefit_type', '=', 'family')]}"/>
</group>
</group>
<group>
@ -198,14 +206,6 @@
</field>
</group>
</page>
<page string="Marriage Settings" attrs="{'invisible':[('service_type','!=','marriage')]}">
<group>
<field name="member_max_age"/>
<field name="member_max_payroll"/>
<field name="fatherless_member_amount"/>
<field name="orphan_member_amount"/>
</group>
</page>
<page string="Eid Gift Settings" attrs="{'invisible':[('service_type','!=','eid_gift')]}">
<group>
<field name="eid_gift_max_age"/>