[IMP] Benefit

This commit is contained in:
younes 2025-08-21 15:58:50 +01:00
parent 083bd9ac0f
commit 1ebd82c59a
3 changed files with 91 additions and 29 deletions

View File

@ -5239,16 +5239,20 @@ msgid "Father Dead Date"
msgstr "تاريخ وفاة الأب"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__father_family_name
#: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__father_family_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__father_family_name
#, python-format
msgid "Father Family Name"
msgstr "اسم عائلة الأب"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__father_name
#: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__father_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__father_name
#, python-format
msgid "Father First Name"
msgstr "الاسم الاول للأب"
@ -5263,16 +5267,20 @@ msgid "Father Nationality"
msgstr "جنسية الأب"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__father_second_name
#: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__father_second_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__father_second_name
#, python-format
msgid "Father Second Name"
msgstr "الاسم الثاني للأب"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__father_third_name
#: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__father_third_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__father_third_name
#, python-format
msgid "Father Third Name"
msgstr "الاسم الثالث للأب"
@ -7891,7 +7899,9 @@ msgid "Member Family Name"
msgstr "اسم العائلة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/family_members.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__member_first_name
#, python-format
msgid "Member First Name"
msgstr "الاسم الأول"
@ -8181,7 +8191,9 @@ msgid "Mother Marital"
msgstr "الحالة الاجتماعية"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__mother_name
#, python-format
msgid "Mother Name"
msgstr "الاسم الأول للأم"
@ -8201,8 +8213,10 @@ msgid "Mother Relationn"
msgstr "الصلة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__mother_second_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__mother_second_name
#, python-format
msgid "Mother Second Name"
msgstr "الاسم الثاني للأم"
@ -8212,8 +8226,10 @@ msgid "Mother Status"
msgstr "حالة الأم"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__mother_third_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__mother_third_name
#, python-format
msgid "Mother Third Name"
msgstr "الاسم الثالث للأم"
@ -8223,8 +8239,10 @@ msgid "Mother-Orphan"
msgstr ""
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__mother_family_name
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__mother_family_name
#, python-format
msgid "MotherFamily Name"
msgstr "اسم عائلة الأم"
@ -9843,7 +9861,9 @@ msgid "Replacement Mother Birth Date"
msgstr "تاريخ ميلاد الام البديلة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__replacement_mother_family_name
#, python-format
msgid "Replacement Mother Family Name"
msgstr "اسم العائلة"
@ -9868,7 +9888,9 @@ msgid "Replacement Mother Marital"
msgstr "الحالة الاجتماعية للأم البديلة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__replacement_mother_name
#, python-format
msgid "Replacement Mother Name"
msgstr "الاسم الاول"
@ -9883,7 +9905,9 @@ msgid "Replacement Mother Relation"
msgstr "صلة القرابة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__replacement_mother_second_name
#, python-format
msgid "Replacement Mother Second Name"
msgstr "الاسم الثاني"
@ -9893,7 +9917,9 @@ msgid "Replacement Mother Status"
msgstr "حالة الاستفادة"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__replacement_mother_third_name
#, python-format
msgid "Replacement Mother Third Name"
msgstr "الاسم الثالث"
@ -14730,4 +14756,14 @@ msgstr ""
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form
msgid "Documents"
msgstr "المستندات"
msgstr "المستندات"
#. module: odex_benefit
#: code:addons/odex_benefit/models/benefit.py:0
#: code:addons/odex_benefit/models/family_members.py:0
#, python-format
msgid ""
"%s must contain only alphabetic characters and spaces. Numbers and special "
"characters are not allowed."
msgstr ""
"%s يجب أن يحتوي فقط على الأحرف الأبجدية والمسافات. الأرقام والرموز الخاصة غير مسموح بها."

View File

@ -421,18 +421,18 @@ class GrantBenefitProfile(models.Model):
# housing_name = fields.Char(compute='_compute_get_name')
zip = fields.Char('Zip', change_default=True, readonly=False, store=True)
short_number = fields.Char(
readonly=False,
required=False,
readonly=False,
required=False,
states={
'second_approve': [('readonly', True)],
'second_approve': [('readonly', True)],
'complete_info': [('required', True)]
}
)
extra_code = fields.Char(
readonly=False,
required=False,
readonly=False,
required=False,
states={
'second_approve': [('readonly', True)],
'second_approve': [('readonly', True)],
'complete_info': [('required', True)]
}
)
@ -587,20 +587,33 @@ class GrantBenefitProfile(models.Model):
('unique_code', "unique (code) WHERE state NOT IN ('draft', 'new')", 'This code already exists')
]
# @api.constrains('father_name')
# def _check_names_alphabetic(self):
# char_fields = {
# 'father_name': 'father name',
# }
#
# for record in self:
# for field_name, field_label in char_fields.items():
# field_value = getattr(record, field_name)
# if field_value and not re.match(ALPHABETIC_PATTERN, field_value.strip()):
# raise ValidationError(
# f"{field_label} must contain only alphabetic characters and spaces. "
# f"Numbers and special characters are not allowed."
# )
@api.constrains('father_name', 'father_second_name', 'father_third_name', 'father_family_name',
'mother_name', 'mother_second_name', 'mother_third_name', 'mother_family_name',
'replacement_mother_name','replacement_mother_second_name','replacement_mother_third_name','replacement_mother_family_name')
def _check_names_alphabetic(self):
char_fields = {
'father_name': _('Father First Name'),
'father_second_name': _('Father Second Name'),
'father_third_name': _('Father Third Name'),
'father_family_name': _('Father Family Name'),
'mother_name': _('Mother Name'),
'mother_second_name': _('Mother Second Name'),
'mother_third_name':_('Mother Third Name'),
'mother_family_name': _('MotherFamily Name'),
'replacement_mother_name': _('Replacement Mother Name'),
'replacement_mother_second_name': _('Replacement Mother Second Name'),
'replacement_mother_third_name': _('Replacement Mother Third Name'),
'replacement_mother_family_name': _('Replacement Mother Family Name')
}
for record in self:
for field_name, field_label in char_fields.items():
field_value = getattr(record, field_name)
if field_value and not re.match(ALPHABETIC_PATTERN, field_value.strip()):
raise ValidationError(
_("%s must contain only alphabetic characters and spaces. "
"Numbers and special characters are not allowed.") % field_label
)
def assign_sequence_to_all(self):
sequence = self.env['ir.sequence'].search([('code', '=', 'benefit.sequence')], limit=1)
@ -614,7 +627,7 @@ class GrantBenefitProfile(models.Model):
code = self.env['ir.sequence'].sudo().next_by_code('benefit.sequence')
rec.with_context(force_website=True).write({'code':code})
def action_set_waiting_if_needed(self):
records = self.env['grant.benefit'].browse(self._context.get('active_ids', []))
print("hh")
@ -633,7 +646,7 @@ class GrantBenefitProfile(models.Model):
def _compute_request_producer_id(self):
for rec in self:
rec.request_producer_id = rec.user_id.partner_id if rec.request_producer.id == rec.env.ref('base.public_partner').id else rec.request_producer
def validate_attachments(self):
for rec in self:
if not rec.owner_identity_attachment_ids and rec.is_family_member == False and rec.state == 'first_approve':
@ -675,7 +688,7 @@ class GrantBenefitProfile(models.Model):
and rec.father_dead_date < rec.father_birth_date
):
raise ValidationError("Father's Death Date must be after the Birth Date.")
# @api.depends('attachment_ids')
# def get_required_attach(self):
# for rec in self.attachment_ids:
@ -812,7 +825,7 @@ class GrantBenefitProfile(models.Model):
def _get_total_service_requests(self):
for rec in self:
rec.total_service_requests = self.env['service.request'].search_count([('benefit_type', '=', 'family'), ('family_id', '=', rec.id)])
def action_open_related_service_requests(self):
""" Opens a tree view with related records filtered by a dynamic domain """
service_requests = self.env['service.request'].search([
@ -829,11 +842,11 @@ class GrantBenefitProfile(models.Model):
'target': 'current',
}
return action
def _get_total_seasonal_service_requests(self):
for rec in self:
rec.total_seasonal_service_requests = len(self.env['seasonal.service'].search([('family_ids', '!=', False)]).filtered(lambda r: rec.id in r.family_ids.family_id.ids))
def action_open_related_seasonal_service_requests(self):
""" Opens a tree view with related records filtered by a dynamic domain """
seasonal_service_requests = self.env['seasonal.service'].search([('family_ids', '!=', False)]).filtered(lambda r: self.id in r.family_ids.family_id.ids).ids
@ -1117,7 +1130,7 @@ class GrantBenefitProfile(models.Model):
if 'salary_ids' in fields:
res['salary_ids'] = income_attachments_data
return res
def write(self, vals):
res = super(GrantBenefitProfile, self).write(vals)
if "name" in vals and self.user_id:

View File

@ -9,7 +9,7 @@ import qrcode
import base64
from io import BytesIO
SAUDI_MOBILE_PATTERN = "(^(05|5)(5|0|3|6|4|9|1|8|7)([0-9]{7})$)"
ALPHABETIC_PATTERN = "^[A-Za-z ]+$"
ALPHABETIC_PATTERN = "^[\u0600-\u065F\u066A-\u06EF\u06FA-\u06FFA-Za-z ]+$"
import re
_logger = logging.getLogger(__name__)
@ -267,6 +267,19 @@ class FamilyMemberProfile(models.Model):
is_mother = fields.Boolean('Is Mother?')
total_member_service_requests = fields.Integer(compute='_get_total_member_service_requests')
@api.constrains('member_first_name')
def _check_names_alphabetic(self):
char_fields = {
'member_first_name': _('Member First Name'),
}
for record in self:
for field_name, field_label in char_fields.items():
field_value = getattr(record, field_name)
if field_value and not re.match(ALPHABETIC_PATTERN, field_value.strip()):
raise ValidationError(
_("%s must contain only alphabetic characters and spaces. "
"Numbers and special characters are not allowed.") % field_label
)
@api.depends('age')
def _compute_get_age_status(self):
for rec in self: