Merge pull request #4811 from expsa/kch_dev_odex25_ensan

[IMP] IMP service for benefit
This commit is contained in:
kchyounes19 2025-10-06 13:38:50 +01:00 committed by GitHub
commit e4920d4008
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 54 additions and 67 deletions

View File

@ -2669,6 +2669,11 @@ msgstr ""
msgid "Both"
msgstr "مشترك"
#. module: odex_benefit
#: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__benefit_type__both
msgid "Both"
msgstr "مشترك"
#. module: odex_benefit
#: model:ir.actions.act_window,name:odex_benefit.action_social_search_committees
msgid "Social Research Committees"
@ -15937,4 +15942,9 @@ msgstr "عدم استكمال المستندات المطاوبة او الاث
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.services_settings_form
msgid "Eligibility Criteria"
msgstr "شروط الاستحقاق"
msgstr "شروط الاستحقاق"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__allow_non_beneficiary
msgid "Allow Non Beneficiary"
msgstr "منح الخدمة لغير المستفيد"

View File

@ -20,7 +20,7 @@ class ServiceRequest(models.Model):
family_category = fields.Many2one('benefit.category',string='Family Category',related='family_id.benefit_category_id')
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), ('member_status', '=', 'benefit')]",string='Member')
member_id = fields.Many2one('family.member',domain="[('benefit_id','=',family_id)]",string='Member')
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="[('is_main_service','=',True)]",string="Main Service Category")
@ -67,11 +67,11 @@ class ServiceRequest(models.Model):
new_rent_amount = fields.Float(string='Rent Amount')
new_rent_amount_payment = fields.Float(string='New Rent Amount Payment',compute='_get_new_rent_amount_payment')
new_payment_type = fields.Selection([
('1', 'Yearly'),
('2', 'Half-yearly'),
('1', 'Yearly'),
('2', 'Half-yearly'),
('4', 'Quarterly'),
('5', 'Monthly')
],
],
string='Payment Type'
)
new_rent_attachment = fields.Many2many('ir.attachment', 'rel_rent_attachment_service_request', 'service_request_id',
@ -86,15 +86,15 @@ class ServiceRequest(models.Model):
'attachment_id', string='Rent Attachment')
added_amount_if_mother_dead = fields.Float(string="Added Amount (If mother dead)",compute="_get_added_amount_if_mother_dead")
attachment_lines = fields.One2many(
'service.attachments.settings',
'service_request_id',
compute='_compute_attachment_lines',
readonly=False,
'service.attachments.settings',
'service_request_id',
compute='_compute_attachment_lines',
readonly=False,
copy=False,
store=True
)
account_id = fields.Many2one(
'account.account',
'account.account',
string='Expenses Account',
compute="_compute_account_id"
)
@ -181,7 +181,7 @@ class ServiceRequest(models.Model):
service_conditions = fields.Html(related='service_cat.service_conditions', string="Service Conditions")
def _expand_states(self, states, domain, order):
return [key for key, val in type(self).state.selection]
@ -192,23 +192,27 @@ class ServiceRequest(models.Model):
rec.account_id = rec.service_reason_id.account_id
else:
rec.account_id = rec.service_cat.account_id
@api.onchange('service_cat', 'device_id')
def _calculate_electrical_type_values(self):
for rec in self:
if rec.service_type == 'electrical_devices':
rec.requested_service_amount = rec.device_id.price_unit if rec.device_id else 0.0
@api.depends('service_cat')
def _compute_attachment_lines(self):
for rec in self:
rec.attachment_lines.unlink()
for attachment_line in rec.service_cat.attachment_lines:
attachment_line.copy({
'service_id': False,
'service_request_id': rec.id,
'previous_service_attachment_settings_id': attachment_line.id
})
commands = [(5, 0, 0)]
if rec.service_cat:
for attachment_line in rec.service_cat.attachment_lines:
commands.append((0, 0, {
'service_id': False,
'service_request_id': rec.id,
'previous_service_attachment_settings_id': attachment_line.id,
}))
rec.attachment_lines = commands
@api.model
def search(self, args, offset=0, limit=None, order=None, count=False):
@ -255,7 +259,7 @@ class ServiceRequest(models.Model):
# Write updates to the related family_id
res.family_id.write(update_values)
return res
def write(self, vals):
# Define the list of fields you want to check
new_rent_fields = ['new_rent_contract_number', 'new_rent_start_date', 'new_rent_end_date', 'new_rent_amount',
@ -438,7 +442,7 @@ class ServiceRequest(models.Model):
rec.amount_for_buy_home_for_member_count = 0
if rec.service_type == 'buy_home':
rec.amount_for_buy_home_for_member_count = (rec.service_cat.buy_home_lines.filtered(lambda x : x.min_count_member <= rec.benefit_member_count <= rec.benefit_member_count)).amount_for_buy_home
def action_send_to_researcher(self):
for rec in self:
rec.state = 'researcher'
@ -563,15 +567,15 @@ class ServiceRequest(models.Model):
self.max_water_bill_amount = water_bill_amount
@api.onchange(
'requested_service_amount',
'benefit_type',
'requested_service_amount',
'benefit_type',
'date',
'service_cat',
'family_id',
'exception_or_steal',
'home_furnishing_exception',
'has_marriage_course',
'home_age',
'home_age',
'service_reason_id'
)
def onchange_requested_service_amount(self):
@ -954,33 +958,28 @@ class ServiceRequest(models.Model):
rec.new_rent_start_date <= rec.new_end <= rec.new_rent_end_date):
raise UserError(
"The Start Date and End Date must be within the Rent Start Date and Rent End Date range.")
# @api.onchange('main_service_category', 'sub_service_category', 'benefit_type', 'family_id', 'member_id')
# def _reset_service_cat(self):
# if self.service_cat:
# self.service_cat = False
@api.depends('family_category')
@api.depends('family_category','member_id')
def _compute_available_service_cats(self):
for rec in self:
if rec.benefit_type:
if rec.benefit_type == 'family':
domain = [('service_type', '!=', 'main_service')]
rec.available_service_cats = rec.available_service_cats.sudo().search(domain).filtered(
lambda r: rec.family_category.id in r.benefit_category_ids.ids or\
(rec.family_category.id, rec.benefit_member_count) in r.rent_lines.mapped(lambda r: (r.benefit_category_id.id, r.benefit_count)) or\
rec.family_category.id in r.home_restoration_lines.benefit_category_id.ids or\
len(r.electricity_bill_lines.filtered(lambda r: r.benefit_category_id.id == rec.family_category.id and rec.benefit_member_count >= r.min_count_member and rec.benefit_member_count <= r.max_count_member)) or\
len(r.water_bill_lines.filtered(lambda r: r.benefit_category_id.id == rec.family_category.id and rec.benefit_member_count >= r.min_count_member and rec.benefit_member_count <= r.max_count_member))
)
elif rec.benefit_type == 'member':
domain = [('service_type', '!=', 'main_service'),('benefit_type','!=','member'),('benefit_category_ids', 'in', [rec.family_category.id])]
rec.available_service_cats = rec.available_service_cats.sudo().search(domain)
elif rec.benefit_type == 'member' and rec.member_id:
domain = [
('service_type', '!=', 'main_service'),
('is_this_service_for_student','=',True)
('benefit_type', '!=', 'family'),
('benefit_category_ids', 'in', [rec.family_category.id])
]
rec.available_service_cats = rec.available_service_cats.sudo().search(domain).filtered(
lambda r: rec.family_category.id in r.benefit_category_ids.ids
)
if rec.member_id.member_status != 'benefit':
domain.append(('allow_non_beneficiary','=',True))
rec.available_service_cats = rec.available_service_cats.sudo().search(domain)
else:
rec.available_service_cats = False

View File

@ -7,7 +7,7 @@ class ServicesSettings(models.Model):
_order = 'service_number'
service_name = fields.Char(string='Service Name')
benefit_type = fields.Selection(string='Benefit Type', selection=[('family', 'Family'), ('member', 'Member')])
benefit_type = fields.Selection(string='Benefit Type', selection=[('family', 'Family'), ('member', 'Member'), ('both', 'Both')],default='both')
parent_service = fields.Many2one('services.settings',string='Parent Service')
is_main_service = fields.Boolean(string='Is Main Service?')
is_service_producer = fields.Boolean(string='Is Service Producer?')
@ -116,6 +116,7 @@ class ServicesSettings(models.Model):
], string="Max Limit Type"
)
needs_beneficiary_manager_approval = fields.Boolean()
allow_non_beneficiary = fields.Boolean(string="Allow Non Beneficiary")

View File

@ -15,13 +15,15 @@
<group>
<field name="service_number"/>
<field name="service_type"/>
<field name="benefit_type"/>
<field name="benefit_type" required="1"/>
<field name="allow_non_beneficiary" widget="boolean_toggle"/>
<field name="service_producer_id"
attrs="{'invisible':['|',('is_main_service','=',True),('is_service_producer','=',False)]}"/>
</group>
<group>
<field name="service_category"/>
<field name="parent_service" attrs="{'invisible':[('is_main_service','=',True)]}"/>
<field name="benefit_category_ids" widget="many2many_tags" required="1"/>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
@ -136,22 +138,17 @@
</tree>
</field>
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_maintenance_amount"/>
</group>
</page>
<page string="Complete Building House Settings"
attrs="{'invisible':[('service_type','!=','complete_building_house')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_complete_building_house_amount"/>
</group>
</page>
<page string="Electrical Devices Settings"
attrs="{'invisible':[('service_type','!=','electrical_devices')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
</group>
<field name="electrical_devices_lines" widget="one2many_list">
<tree editable="bottom">
<field name="min_count_member"/>
@ -166,7 +163,6 @@
<page string="Home furnishing Settings"
attrs="{'invisible':[('service_type','!=','home_furnishing')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_furnishing_amount"/>
<field name="max_furnishing_amount_if_exception"/>
</group>
@ -201,7 +197,6 @@
</page>
<page string="Buy Car Settings" attrs="{'invisible':[('service_type','!=','buy_car')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_buy_car_amount"/>
<field name="min_count_member"/>
</group>
@ -209,14 +204,12 @@
<page string="Recruiting Driver Settings"
attrs="{'invisible':[('service_type','!=','recruiting_driver')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_recruiting_driver_amount"/>
</group>
</page>
<page string="Transportation Insurance Settings"
attrs="{'invisible':[('service_type','!=','transportation_insurance')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="transportation_insurance_ids" options="{'no_open': True}">
<tree editable="bottom">
<field name="name"/>
@ -228,33 +221,23 @@
</page>
<page string="Debits Settings" attrs="{'invisible':[('service_type','!=','debits')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_debits_amount"/>
</group>
</page>
<page string="Health Care Settings"
attrs="{'invisible':[('service_type','!=','health_care')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_health_care_amount"/>
</group>
</page>
<page string="Providing Medicines Medical Devices And Needs The Disabled Settings"
attrs="{'invisible':[('service_type','!=','providing_medicines_medical_devices_and_needs_the_disabled')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
</group>
</page>
<page string="Recruiting Domestic Worker Or Nurse Settings"
attrs="{'invisible':[('service_type','!=','recruiting_domestic_worker_or_nurse')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="max_recruiting_domestic_worker_or_nurse_amount"/>
</group>
</page>
<page string="Marriage Settings" attrs="{'invisible':[('service_type','!=','marriage')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="member_max_age"/>
<field name="member_max_payroll"/>
<field name="fatherless_member_amount"/>
@ -263,7 +246,6 @@
</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>
@ -271,34 +253,29 @@
<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>
<page string="Natural disasters Settings"
attrs="{'invisible':[('service_type','!=','natural_disasters')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="natural_disasters_max_amount"/>
</group>
</page>
<page string="Legal arguments Settings"
attrs="{'invisible':[('service_type','!=','legal_arguments')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="legal_arguments_max_amount"/>
</group>
</page>
<page string="Buy Home Settings" attrs="{'invisible':[('service_type','!=','buy_home')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="buy_home_max_total_amount"/>
<field name="home_age"/>
</group>