[IMP] odex_benefit: IMP benefit
This commit is contained in:
parent
c7afd786f1
commit
ef1809aaad
|
|
@ -17541,3 +17541,68 @@ msgid ""
|
|||
msgstr ""
|
||||
"طلبات الخدمة التالية ليس لديها جهة الدفع محددة:\n"
|
||||
"%s"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__related_information_html
|
||||
#: 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 "Related Information"
|
||||
msgstr "المعلومات المرتبطة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Family Information"
|
||||
msgstr "معلومات الأسرة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Member Information"
|
||||
msgstr "معلومات الأفراد"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Unnamed file"
|
||||
msgstr "ملف بدون اسم"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__family_related_fields
|
||||
msgid "Related Family Fields"
|
||||
msgstr "الحقول المرتبطة بالأسرة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__member_related_fields
|
||||
msgid "Related Member Fields"
|
||||
msgstr "الحقول المرتبطة بالفرد"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "No service selected"
|
||||
msgstr "لم يتم اختيار خدمة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Please select a service category to view related information."
|
||||
msgstr "رجاءً اختر خدمة لعرض المعلومات المرتبطة."
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Field Name"
|
||||
msgstr "اسم الحقل"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "Value"
|
||||
msgstr "القيمة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/service_request.py:0
|
||||
#, python-format
|
||||
msgid "No information available for this section."
|
||||
msgstr "لا توجد معلومات متاحة."
|
||||
|
|
@ -4,6 +4,7 @@ from datetime import datetime, timedelta
|
|||
from dateutil.relativedelta import relativedelta
|
||||
from odoo.tools import html_escape
|
||||
|
||||
|
||||
class ServiceRequest(models.Model):
|
||||
_name = 'service.request'
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
|
|
@ -185,8 +186,8 @@ class ServiceRequest(models.Model):
|
|||
car_owner_id = fields.Many2one('family.member', domain="[('benefit_id','=',family_id)]", string="Car Owner")
|
||||
car_model_id = fields.Many2one('benefit.vehicle.model', string='Car model')
|
||||
car_price = fields.Float(string='Car Price')
|
||||
car_remaining_amount = fields.Float(string='Remaining Amount',compute='_compute_remaining_amount',store=True,)
|
||||
show_car_remaining_amount = fields.Boolean(string='Show Car Remaining Amount',compute='_compute_remaining_amount')
|
||||
car_remaining_amount = fields.Float(string='Remaining Amount', compute='_compute_remaining_amount', store=True, )
|
||||
show_car_remaining_amount = fields.Boolean(string='Show Car Remaining Amount', compute='_compute_remaining_amount')
|
||||
application_form = fields.Many2many('ir.attachment', 'request_application_form_rel', 'request_id', 'attachment_id',
|
||||
string="Application Form")
|
||||
driving_license = fields.Many2many('ir.attachment', 'request_driving_license_rel', 'request_id', 'attachment_id',
|
||||
|
|
@ -205,23 +206,27 @@ class ServiceRequest(models.Model):
|
|||
return_reason_id = fields.Many2one("return.reason", string="Return Reason")
|
||||
agree_terms = fields.Boolean(string="I agree to the Terms and Conditions", default=False, )
|
||||
related_information_html = fields.Html(string="Related Information",
|
||||
compute='_compute_related_information_html',store=True,)
|
||||
compute='_compute_related_information_html', store=True, )
|
||||
|
||||
@api.depends('service_cat', 'family_id', 'member_id', 'benefit_type')
|
||||
def _compute_related_information_html(self):
|
||||
for rec in self:
|
||||
if not rec.service_cat:
|
||||
no_service_title = _("No service selected")
|
||||
no_service_desc = _("Please select a service category to view related information.")
|
||||
rec.related_information_html = f"""
|
||||
<div class="o_form_sheet_not_found">
|
||||
<div class="o_form_sheet_not_found_icon">📋</div>
|
||||
<h4>{_("No service selected")}</h4>
|
||||
<p>{_("Please select a service category to view related information.")}</p>
|
||||
<h4>{no_service_title}</h4>
|
||||
<p>{no_service_desc}</p>
|
||||
</div>
|
||||
"""
|
||||
continue
|
||||
|
||||
family_rows = []
|
||||
member_rows = []
|
||||
family_title = _("Family Information")
|
||||
member_title = _("Member Information")
|
||||
|
||||
for ir_field in rec.service_cat.family_related_fields:
|
||||
row = rec._get_field_display_value(rec.family_id, ir_field)
|
||||
|
|
@ -232,8 +237,8 @@ class ServiceRequest(models.Model):
|
|||
row = rec._get_field_display_value(rec.member_id, ir_field)
|
||||
if row:
|
||||
member_rows.append(row)
|
||||
family_table = rec._build_info_table(_("Family Information"), family_rows)
|
||||
member_table = rec._build_info_table(_("Member Information"), member_rows) if member_rows else ""
|
||||
family_table = rec._build_info_table(family_title, family_rows)
|
||||
member_table = rec._build_info_table(member_title, member_rows) if member_rows else ""
|
||||
|
||||
rec.related_information_html = f"""
|
||||
<div class="info-container">
|
||||
|
|
@ -243,11 +248,14 @@ class ServiceRequest(models.Model):
|
|||
"""
|
||||
|
||||
def _build_info_table(self, title, rows):
|
||||
field_name_label = _("Field Name")
|
||||
value_label = _("Value")
|
||||
no_info_text = _("No information available for this section.")
|
||||
if not rows:
|
||||
return f"""
|
||||
<div class="info-section">
|
||||
<h3>{title}</h3>
|
||||
<div class="info-empty">{_("No information available for this section.")}</div>
|
||||
<div class="info-empty">{no_info_text}</div>
|
||||
</div>
|
||||
"""
|
||||
return f"""
|
||||
|
|
@ -256,8 +264,8 @@ class ServiceRequest(models.Model):
|
|||
<table class="table info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{_("Field Name")}</th>
|
||||
<th>{_("Value")}</th>
|
||||
<th>{field_name_label}</th>
|
||||
<th>{value_label}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -304,8 +312,11 @@ class ServiceRequest(models.Model):
|
|||
badges = [f'<span class="badge badge-secondary">{html_escape(r.name or "-")}</span>' for r in value]
|
||||
display = ' '.join(badges) or '<span class="info-empty">—</span>'
|
||||
elif field.type == 'one2many':
|
||||
items = [f'<div style="margin:8px 0; padding:6px 0; border-bottom:1px dotted #ddd;">• {html_escape(r.display_name or r.name or "-")}</div>' for r in value[:20]]
|
||||
more = f'<div style="color:#875A92; font-weight:600; margin-top:10px;">... {_("and")} {len(value)-20} {_("more records")}</div>' if len(value) > 20 else ""
|
||||
items = [
|
||||
f'<div style="margin:8px 0; padding:6px 0; border-bottom:1px dotted #ddd;">• {html_escape(r.display_name or r.name or "-")}</div>'
|
||||
for r in value[:20]]
|
||||
more = f'<div style="color:#875A92; font-weight:600; margin-top:10px;">... {_("and")} {len(value) - 20} {_("more records")}</div>' if len(
|
||||
value) > 20 else ""
|
||||
display = ''.join(items) + more or '<span class="info-empty">—</span>'
|
||||
elif field.type == 'binary':
|
||||
if value:
|
||||
|
|
@ -760,9 +771,9 @@ class ServiceRequest(models.Model):
|
|||
if rec.service_cat.service_type == 'recruiting_driver':
|
||||
if not rec.family_id.has_car:
|
||||
raise ValidationError(_("You cannot request this service because you do not have a car"))
|
||||
#son_members_above_age = rec.family_id.member_ids.filtered(
|
||||
# son_members_above_age = rec.family_id.member_ids.filtered(
|
||||
# lambda x: x.relationn.relation_type == 'son' and x.age > 18)
|
||||
#daughter_members_above_age = rec.family_id.member_ids.filtered(
|
||||
# daughter_members_above_age = rec.family_id.member_ids.filtered(
|
||||
# lambda x: x.relationn.relation_type == 'daughter' and x.age > 18)
|
||||
|
||||
children_above_18_living_with_family = rec.family_id.member_ids.filtered(
|
||||
|
|
@ -781,10 +792,11 @@ class ServiceRequest(models.Model):
|
|||
work_mother = rec.family_id.member_ids.filtered(
|
||||
lambda x: x.relationn.relation_type == 'mother' and x.is_work)
|
||||
disable_replacement_mother = rec.family_id.member_ids.filtered(
|
||||
lambda x: x.relationn.relation_type == 'replacement_mother' and bool(x.disabilities_attachment_ids))
|
||||
lambda x: x.relationn.relation_type == 'replacement_mother' and bool(
|
||||
x.disabilities_attachment_ids))
|
||||
work_replacement_mother = rec.family_id.member_ids.filtered(
|
||||
lambda x: x.relationn.relation_type == 'replacement_mother' and x.is_work)
|
||||
#if son_members_above_age or daughter_members_above_age:
|
||||
# if son_members_above_age or daughter_members_above_age:
|
||||
# raise ValidationError(
|
||||
# _("You cannot request this service because children above 18 years"))
|
||||
if rec.family_id.add_replacement_mother and not disable_replacement_mother and not work_replacement_mother:
|
||||
|
|
|
|||
Loading…
Reference in New Issue