[IMP] odex_benefit: IMP benefit

This commit is contained in:
younes 2025-11-30 13:37:13 +01:00
parent 4923e2f20c
commit 6621c4fd13
6 changed files with 47 additions and 112 deletions

View File

@ -5043,7 +5043,6 @@ msgstr "الالتزامات"
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__account_id
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__device_account_id
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__account_id
#: model:ir.model.fields,field_description:odex_benefit.field_transportation_insurance__account_id
msgid "Expenses Account"
msgstr "حساب المصروف"
@ -14195,17 +14194,6 @@ msgid "Exception or steal Attachment"
msgstr "مرفق إثبات حالات الاستثناء"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__service_reason_id
msgid "Service Reason"
msgstr "سبب الخدمة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__max_amount
msgid "Max Transportation Amount"
msgstr "الحد الأعلى للنقل"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__transportation_insurance_ids
#: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__service_type__transportation_insurance
msgid "Transportation Insurance"
msgstr "تأمين مواصلات"
@ -14215,26 +14203,11 @@ msgstr "تأمين مواصلات"
msgid "Price Unit"
msgstr "سعر الوحدة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_transportation_insurance__name
msgid "Insurance Name"
msgstr "اسم التأمين"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_transportation_insurance__limit_amount
msgid "Limit Amount"
msgstr "الحد الأعلى للمبلغ"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_tree
msgid "Request Creator"
msgstr "منشئ الطلب"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__requests_counts
msgid "Requests Counts"
msgstr "عدد الطلبات"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__is_family_member
msgid "Is Family member?"
@ -16084,16 +16057,6 @@ msgstr "من 5"
msgid "Mini Count Member"
msgstr "الحد الأقصى لعدد الأفراد"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.services_settings_form
msgid "Transportation Insurance Settings"
msgstr "إعدادات تأمين المواصلات"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
msgid "Transportation Insurance Service"
msgstr "تأمين مواصلات"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.services_settings_form
msgid "Home furnishing Settings"
@ -16261,7 +16224,6 @@ msgstr "لا يمكنك طلب هذه الخدمة أكثر من مرة."
#: code:addons/odex_benefit/models/service_request.py:0
#: code:addons/odex_benefit/models/service_request.py:0
#: code:addons/odex_benefit/models/service_request.py:0
#: code:addons/odex_benefit/models/service_request.py:0
#, python-format
msgid "You cannot request more than %s"
msgstr "لا يمكنك طلب أكثر من %s"

View File

@ -23,7 +23,9 @@ class ServiceRequest(models.Model):
benefit_member_count = fields.Integer(string="Benefit Member count", related='family_id.benefit_member_count')
branch_custom_id = fields.Many2one('branch.settings', string="Branch", related='family_id.branch_custom_id',
store=True)
member_id = fields.Many2one('family.member', domain="[('benefit_id','=',family_id)]", string='Member')
member_id = fields.Many2one('family.member', string='Member')
member_domain_ids = fields.Many2many(comodel_name='family.member', compute='_compute_member_domain_and_count',
string="Eligible Members",store=True)
description = fields.Char(string='Description')
need_status = fields.Selection(string='Need Status', selection=[('urgent', 'urgent'), ('not_urgent', 'Not urgent')])
main_service_category = fields.Many2one('services.settings', domain="[('service_type','=','main_service')]",
@ -143,16 +145,6 @@ class ServiceRequest(models.Model):
# Home furnishing Exception
home_furnishing_exception = fields.Boolean(string='Exception(Fire Or Steal or Natural disaster)')
furnishing_items_ids = fields.One2many('home.furnishing.items', 'service_request_id', string="Furnishing Items")
# Transportation insurance
# service_reason = fields.Selection(selection=[
# ('government_transportation', 'Government Transportation'),
# ('universities_training_institutes_transportation', 'Universities Training Institutes Transportation'),
# ('hospitals_transportation', 'Hospitals Transportation'),
# ('programs_transportation', 'Programs Transportation'),
# ], string='Service Reason')
service_reason_id = fields.Many2one('transportation.insurance')
max_amount = fields.Float(string='Max Transportation Amount')
requests_counts = fields.Integer(string='Requests Counts', default=1)
# Marriage
member_age = fields.Integer(string="Member Age", related="member_id.age")
member_payroll = fields.Float(string="Member Payroll", related="member_id.member_income")
@ -160,7 +152,7 @@ class ServiceRequest(models.Model):
('yes', 'Yes'),
('no', 'No'),
], string='Has Marriage Course')
service_benefit_count = fields.Integer(string='Service Benefit Count', compute="_compute_service_benefit_count")
service_benefit_count = fields.Integer(string='Service Benefit Count', compute="_compute_member_domain_and_count")
# Buy home
amount_for_buy_home_for_member_count = fields.Float(string="Amount For Buy Home for member count")
home_age = fields.Integer(string='Home Age')
@ -302,13 +294,11 @@ class ServiceRequest(models.Model):
def _expand_states(self, states, domain, order):
return [key for key, val in type(self).state.selection]
@api.depends('service_cat', 'service_reason_id')
# TODO: remove this method
@api.depends('service_cat')
def _compute_account_id(self):
for rec in self:
if rec.service_type == 'transportation_insurance':
rec.account_id = rec.service_reason_id.account_id
else:
rec.account_id = rec.service_cat.account_id
rec.account_id = rec.service_cat.account_id
@api.depends('service_cat')
def _compute_attachment_lines(self):
@ -505,20 +495,44 @@ class ServiceRequest(models.Model):
rec.rent_for_alternative_housing = False
@api.depends('family_id', 'service_cat')
def _compute_service_benefit_count(self):
def _compute_member_domain_and_count(self):
for rec in self:
if not rec.family_id:
rec.member_domain_ids = False
rec.service_benefit_count = 1
continue
family_members = rec.family_id.member_ids
benefit_members = family_members.filtered(lambda m: m.member_status == 'benefit')
count = 1
if rec.benefit_type == "family":
count = len(rec.family_id.member_ids.filtered(lambda m: m.member_status == 'benefit'))
count_members = benefit_members
if rec.service_cat.max_age > 0:
count = len(
rec.family_id.member_ids.filtered(lambda x: x.age <= rec.service_cat.max_age))
count_members = family_members.filtered(
lambda m: m.age <= rec.service_cat.max_age
)
count = len(count_members)
rec.service_benefit_count = count
@api.onchange('requests_counts', 'service_type', 'service_reason_id')
def _get_max_transportation_amounts(self):
for rec in self:
rec.max_amount = rec.requests_counts * rec.service_reason_id.limit_amount
domain_members = family_members
if rec.service_cat:
sc = rec.service_cat
if not sc.allow_non_beneficiary:
domain_members = benefit_members
if sc.is_this_service_for_student:
domain_members = domain_members.filtered(
lambda m: (
m.education_status == 'educated'
and any(edu.case_study == 'continuous'
for edu in m.member_education_status_ids)
)
)
rec.member_domain_ids = domain_members
def action_send_to_researcher(self):
for rec in self:
@ -681,7 +695,6 @@ class ServiceRequest(models.Model):
'home_furnishing_exception',
'has_marriage_course',
'home_age',
'service_reason_id',
'device_id',
'requested_quantity',
'amount_for_buy_home_for_member_count',
@ -904,11 +917,6 @@ class ServiceRequest(models.Model):
elif rec.max_limit_period == "recurrence_period":
pass
if service_type == 'transportation_insurance':
if rec.service_reason_id and rec.requested_service_amount > rec.max_amount:
raise ValidationError(_("You cannot request more than %s"))
continue
if rec.service_cat.service_type == 'marriage':
if rec.member_id.relationn.relation_type == 'son' and not rec.member_id.is_work:
raise ValidationError(_("This service is not eligible because the son is not working."))
@ -1014,8 +1022,6 @@ class ServiceRequest(models.Model):
else:
domain.append(('service_type', '!=', 'buy_home'))
rec.available_service_cats = rec.available_service_cats.sudo().search(domain)
# if rec.member_id.member_status != 'benefit':
# domain.append(('allow_non_beneficiary','=',True))
def action_set_to_draft(self):
for rec in self:

View File

@ -41,8 +41,6 @@ class ServicesSettings(models.Model):
max_furnishing_amount_if_exception = fields.Float(string='Max Furnishing Amount (Exception)')
bill_lines = fields.One2many('bill.lines', 'services_settings_id')
min_count_member = fields.Integer(string='Mini Count Member')
#Transportation insurance
transportation_insurance_ids = fields.One2many('transportation.insurance', 'services_settings_id')
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')
@ -186,17 +184,4 @@ class ServiceLimitByPersonLine(models.Model):
min_count_member = fields.Integer(string='Minimum Number of Persons')
max_count_member = fields.Integer(string='Maximum Number of Persons')
amount = fields.Float(string='Amount')
services_settings_id = fields.Many2one('services.settings', string='Services Settings')
class TransportationInsurance(models.Model):
_name = 'transportation.insurance'
services_settings_id = fields.Many2one('services.settings')
name = fields.Char(string="Insurance Name", required=True)
limit_amount = fields.Float(required=True)
account_id = fields.Many2one(
'account.account',
string='Expenses Account',
domain="[('user_type_id.id', '=', 15)]",
required=True
)
services_settings_id = fields.Many2one('services.settings', string='Services Settings')

View File

@ -152,7 +152,6 @@ access_location_settings,access_location_settings,model_location_settings,base.g
access_service_refuse_reason,access_service_refuse_reason,model_service_refuse_reason,base.group_user,1,1,1,1
access_service_refuse_reason_wizard,access_service_refuse_reason_wizard,model_service_refuse_reason_wizard,base.group_user,1,1,1,1
access_reason_for_return_wizard,access_reason_for_return_wizard,model_reason_for_return_wizard,base.group_user,1,1,1,1
access_transportation_insurance,access_transportation_insurance,model_transportation_insurance,base.group_user,1,1,1,1
access_job_settings,access_job_settings,model_job_settings,base.group_user,1,0,0,0
access_job_settings_manager,access_job_settings.manager,model_job_settings,odex_benefit.group_benefit_manager,1,1,1,1
access_death_reason_settings,access_death_reason_settings,model_death_reason_settings,base.group_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
152 access_service_refuse_reason access_service_refuse_reason model_service_refuse_reason base.group_user 1 1 1 1
153 access_service_refuse_reason_wizard access_service_refuse_reason_wizard model_service_refuse_reason_wizard base.group_user 1 1 1 1
154 access_reason_for_return_wizard access_reason_for_return_wizard model_reason_for_return_wizard base.group_user 1 1 1 1
access_transportation_insurance access_transportation_insurance model_transportation_insurance base.group_user 1 1 1 1
155 access_job_settings access_job_settings model_job_settings base.group_user 1 0 0 0
156 access_job_settings_manager access_job_settings.manager model_job_settings odex_benefit.group_benefit_manager 1 1 1 1
157 access_death_reason_settings access_death_reason_settings model_death_reason_settings base.group_user 1 0 0 0

View File

@ -209,7 +209,8 @@
<field name="service_benefit_count"
attrs="{'invisible':['|',('service_type','!=','eid_gift'),('benefit_type','!=','family')]}"/>
<field name="branch_custom_id" force_save="1"/>
<field name="member_id"
<field name="member_domain_ids" invisible="1" widget="many2many_tags"/>
<field name="member_id" domain="[('id', 'in', member_domain_ids)]"
attrs="{'invisible':[('benefit_type','!=','member')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])],'required':[('benefit_type','=','member')]}"/>
<field name="is_orphan" attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
<field name="member_age" attrs="{'invisible':[('benefit_type','!=','member')]}"/>
@ -458,15 +459,6 @@
</tree>
</field>
</page>
<page string="Transportation Insurance Service"
attrs="{'invisible':[('service_type', '!=', 'transportation_insurance')]}">
<group>
<field name="service_reason_id"
options="{'no_create': True, 'no_open': True, 'no_create_edit': True}"/>
<field name="max_amount" readonly="1" force_save="1"/>
<field name="requests_counts"/>
</group>
</page>
<page string="Eligibility Criteria">
<group>
<field name="service_conditions"/>

View File

@ -105,8 +105,11 @@
</page>
<page string="Eligibility Criteria"
attrs="{'invisible':[('service_type','=','main_service')]}">
<group>
<field name="service_conditions"/>
<group col="1" colspan="2">
<field name="service_conditions"
nolabel="1"
placeholder="Enter eligibility conditions..."
/>
</group>
</page>
<page string="Services Attachments"
@ -199,18 +202,6 @@
</tree>
</field>
</page>
<page string="Transportation Insurance Settings"
attrs="{'invisible':[('service_type','!=','transportation_insurance')]}">
<group>
<field name="transportation_insurance_ids" options="{'no_open': True}">
<tree editable="bottom">
<field name="name"/>
<field name="limit_amount"/>
<field name="account_id"/>
</tree>
</field>
</group>
</page>
<page string="Amounts by Number of Persons"
attrs="{'invisible':[('max_limit_type', '!=', 'amount_person')]}">
<field name="limit_person_line_ids" widget="one2many_list">