[FIX] odex_benefit

This commit is contained in:
Samir Ladoui 2025-05-19 12:52:25 +01:00
parent 27884b4e66
commit ed4cb18cdf
5 changed files with 61 additions and 16 deletions

View File

@ -11954,8 +11954,8 @@ msgstr ""
#. module: odex_benefit
#: code:addons/odex_benefit/models/service_request.py:0
#, python-format
msgid "You Cannot request More than %s"
msgstr ""
msgid "You cannot request more than %s"
msgstr "لا يمكنك طلب أكثر من %s"
#. module: odex_benefit
#: code:addons/odex_benefit/models/service_request.py:0
@ -11987,7 +11987,7 @@ msgstr ""
#: code:addons/odex_benefit/models/service_request.py:0
#, python-format
msgid "You cannot benefit from this service (property type not ownership)"
msgstr ""
msgstr "لا يمكنك الاستفادة من هذه الخدمة (نوع العقار ايجار وليس ملك)"
#. module: odex_benefit
#: code:addons/odex_benefit/models/service_request.py:0
@ -13890,6 +13890,11 @@ msgstr "عدد الطلبات"
msgid "Is Family member?"
msgstr "هل صاحب الحساب من أفراد الأسرة؟"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_location_settings__is_far_from_family
msgid "Is Far From Family?"
msgstr "هل هو بعيد عن سكن العائلة؟"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__owner_identity_attachment_ids
msgid "Account holder identity"

View File

@ -664,6 +664,7 @@ class LocationSettings(models.Model):
name = fields.Char(string='name')
location_type = fields.Selection([('member', _('Member')), ('mother_location', _('Mother Location'))])
is_benefit = fields.Boolean(string='Is Benefit?')
is_far_from_family = fields.Boolean(string='Is Far From Family?')
class AttachmentsSettings(models.Model):
_name = 'attachments.settings'
@ -781,6 +782,7 @@ class ServiceAttachmentsSettings(models.Model):
('natural_disasters', 'Natural disasters'), ('legal_arguments', 'Legal arguments')],string='Service Type',related="service_id.service_type")
service_id = fields.Many2one('services.settings',string='Service')
service_request_id = fields.Many2one('service.request',string='Service Request')
previous_service_attachment_settings_id = fields.Many2one('service.attachments.settings', readonly=True)
notes = fields.Text(string='Notes')
class HomeMaintenanceItems(models.Model):

View File

@ -19,7 +19,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)]",string='Member')
member_id = fields.Many2one('family.member',domain="[('benefit_id','=',family_id), ('member_status', '=', 'benefit')]",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")
@ -66,7 +66,14 @@ class ServiceRequest(models.Model):
member_rent_attachment = fields.Many2many('ir.attachment', 'rel_member_rent_attachment_service_request', 'service_request_id',
'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',related='service_cat.attachment_lines',readonly=False)
attachment_lines = fields.One2many(
'service.attachments.settings',
'service_request_id',
compute='_compute_attachment_lines',
readonly=False,
copy=False,
store=True
)
account_id = fields.Many2one(
'account.account',
string='Expenses Account',
@ -165,6 +172,17 @@ class ServiceRequest(models.Model):
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
})
@api.model
def search(self, args, offset=0, limit=None, order=None, count=False):
@ -539,6 +557,18 @@ class ServiceRequest(models.Model):
'message': _("You cannot request more than %s") % max_requested_amount}
return res
# Validation for 'family' benefit type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'rent':
rent_line_id = rec.service_cat.rent_lines.filtered(lambda r: r.benefit_category_id.id == rec.family_category.id \
and r.benefit_count == rec.benefit_member_count
)
max_requested_amount = rent_line_id.estimated_rent_branches if rec.branch_custom_id.branch_type == 'branches' else rent_line_id.estimated_rent_governorate
if rec.requested_service_amount > max_requested_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _("You cannot request more than %s") % max_requested_amount}
return res
# Validation for 'family' benefit type with 'home_maintenance'
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'home_maintenance':
max_requested_amount = rec.service_cat.max_maintenance_amount
@ -581,6 +611,12 @@ class ServiceRequest(models.Model):
if existing_request_maintenance:
raise UserError(
_("You cannot request this service with maintenance service in the same year."))
if rec.has_money_to_pay_first_payment == 'no':
home_restoration_line_id = rec.service_cat.home_restoration_lines.filtered(lambda r: r.benefit_category_id.id == rec.family_category.id)
if rec.requested_service_amount > home_restoration_line_id.max_amount:
raise UserError(
_("You cannot request more than %s") % home_restoration_line_id.max_amount
)
# Validation for 'family' benefit type with 'complete_building_house' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'complete_building_house':
@ -748,8 +784,8 @@ class ServiceRequest(models.Model):
'message': _(
"You cannot request more than %s") % rec.service_cat.max_debits_amount}
return res
# Validation for 'family' benefit type with 'health_care' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'health_care':
# Validation for 'family and member' benefit type with 'health_care' service type
if rec.service_cat.service_type == 'health_care':
# Add current record conditionally
domain = [
('family_id', '=', self.family_id.id),
@ -769,8 +805,8 @@ class ServiceRequest(models.Model):
'message': _(
"You cannot request more than %s within year") % rec.service_cat.max_health_care_amount}
return res
# Validation for 'family' benefit type with 'health_care' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'recruiting_domestic_worker_or_nurse':
# Validation for 'family and member' benefit type with 'health_care' service type
if rec.service_cat.service_type == 'recruiting_domestic_worker_or_nurse':
# Add current record conditionally
domain = [
('family_id', '=', self.family_id.id),
@ -808,16 +844,16 @@ class ServiceRequest(models.Model):
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"))
# Validation for 'family' benefit type with 'natural_disasters' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'natural_disasters':
# Validation for 'family and member' benefit type with 'natural_disasters' service type
if rec.service_cat.service_type == 'natural_disasters':
if rec.requested_service_amount > rec.service_cat.natural_disasters_max_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s") % rec.service_cat.natural_disasters_max_amount}
return res
# Validation for 'family' benefit type with 'legal_arguments' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'legal_arguments':
# Validation for 'family and member' benefit type with 'legal_arguments' service type
if rec.service_cat.service_type == 'legal_arguments':
if rec.requested_service_amount > rec.service_cat.legal_arguments_max_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
@ -863,7 +899,7 @@ class ServiceRequest(models.Model):
@api.onchange('member_id')
def onchange_member_id(self):
for rec in self:
if rec.member_id and rec.member_id.member_location != 'study_inside_saudi_arabia' and rec.service_type == 'rent':
if rec.member_id and rec.service_type == 'rent' and (rec.member_id.member_location != 'study_inside_saudi_arabia' or not rec.member_id.member_location_conf.is_far_from_family):
raise UserError(_("You Cannot request Service if you not study inside Saudi Arabia"))
@api.onchange('start', 'end', 'rent_start_date', 'rent_end_date','new_start', 'new_end', 'new_rent_start_date', 'new_rent_end_date', 'new_rent_contract')

View File

@ -995,6 +995,7 @@
<field name="name"/>
<field name="location_type"/>
<field name="is_benefit"/>
<field name="is_far_from_family" />
</group>
</group>
</sheet>
@ -1009,6 +1010,7 @@
<field name="name"/>
<field name="location_type"/>
<field name="is_benefit"/>
<field name="is_far_from_family" />
</tree>
</field>
</record>

View File

@ -78,8 +78,8 @@
'|',
'&amp;',
('state', 'not in', ['draft', 'researcher', 'send_request', 'first_approve', 'second_approve', 'accounting_approve']),
('service_type', 'in', ['home_furnishing', 'marriage', 'eid_gift', 'winter_clothing', 'ramadan_basket']),
('service_type', '=', 'electrical_devices')
('service_type', 'in', ['marriage', 'eid_gift', 'winter_clothing', 'ramadan_basket']),
('service_type', 'in', ['electrical_devices', 'home_furnishing'])
]}" force_save="1" required="1" />
<field name="amount_for_buy_home_for_member_count" attrs="{'invisible':[('service_type','!=','buy_home')]}"/>
<field name="home_age" attrs="{'invisible':[('service_type','!=','buy_home')]}"/>