From 8a6eb3a3565cf2ae7a2a7774f110064b284c08b6 Mon Sep 17 00:00:00 2001 From: eman Date: Sat, 2 Nov 2024 15:59:37 +0200 Subject: [PATCH] Benefit customization --- odex25_ensan/odex_benefit/i18n/ar_001.po | 50 +++++++++-- odex25_ensan/odex_benefit/models/benefit.py | 89 +++++++++++++------ .../odex_benefit/models/family_members.py | 25 ++++++ 3 files changed, 127 insertions(+), 37 deletions(-) diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index b84c2d8ad..3fa54ac35 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-31 11:50+0000\n" -"PO-Revision-Date: 2024-10-31 11:50+0000\n" +"POT-Creation-Date: 2024-11-02 13:50+0000\n" +"PO-Revision-Date: 2024-11-02 13:50+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -815,9 +815,10 @@ msgstr "عدد فواتير الموردين" #. module: odex_benefit #: code:addons/odex_benefit/models/benefit.py:0 +#: code:addons/odex_benefit/models/benefit.py:0 #, python-format msgid "%s must be unique within the same record." -msgstr "%s يجب ألا يتكرر رقم الأم أو الأم البديلة أو الأب لنفس الأسرة" +msgstr "%s يجب ألا يتكرر لنفس الأسرة" #. module: odex_benefit #: code:addons/odex_benefit/models/benefit.py:0 @@ -4598,13 +4599,10 @@ msgstr "" #. module: odex_benefit #: code:addons/odex_benefit/models/benefit.py:0 -#: code:addons/odex_benefit/models/benefit.py:0 -#: code:addons/odex_benefit/models/benefit.py:0 -#: code:addons/odex_benefit/models/benefit.py:0 #: code:addons/odex_benefit/models/family_members.py:0 #, python-format msgid "Enter a valid Saudi mobile number" -msgstr "" +msgstr "برجاء إدخال رقم سعودي صحيح" #. module: odex_benefit #: code:addons/odex_benefit/wizards/entity_black_list_wizard.py:0 @@ -8940,6 +8938,12 @@ msgstr "تمت إضافة رقم الهاتف إلى القائمة السودا msgid "Phone Number" msgstr "رقم الهاتف" +#. module: odex_benefit +#: code:addons/odex_benefit/models/family_members.py:0 +#, python-format +msgid "Phone number cannot be the same in The Family" +msgstr "رقم الجوال لا يمكن تكراره لنفس الأسرة" + #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__phone2 msgid "Phone2" @@ -10838,8 +10842,9 @@ msgstr "" msgid "" "The ID number {} already exists in family with code {}. Please enter a " "unique ID number." -msgstr "رقم الهوية {} موجود بالفعل في العائلة بكود {}. الرجاء إدخال رقم تعريف غير مكرر." - +msgstr "" +"رقم الهوية {} موجود بالفعل في العائلة بكود {}. الرجاء إدخال رقم تعريف غير " +"مكرر." #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_family_member__nearest_literacy_school @@ -10847,6 +10852,14 @@ msgstr "رقم الهوية {} موجود بالفعل في العائلة بك msgid "The Nearest Literacy School" msgstr "أقرب مدرسة لمحو الأمية" +#. module: odex_benefit +#: code:addons/odex_benefit/models/benefit.py:0 +#, python-format +msgid "" +"The Phone Number %s in the Family Members list must be unique across the " +"record." +msgstr "رقم الهاتف %s مكرر لعضو في نفس" + #. module: odex_benefit #: code:addons/odex_benefit/models/benefit.py:0 #, python-format @@ -10922,6 +10935,25 @@ msgstr "" msgid "The payment's currency." msgstr "" +#. module: odex_benefit +#: code:addons/odex_benefit/models/family_members.py:0 +#: code:addons/odex_benefit/models/family_members.py:0 +#, python-format +msgid "The phone Number already exists in Family with code %s" +msgstr "" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/benefit.py:0 +#, python-format +msgid "The phone number {} already exists in family with code {}." +msgstr "رقم الجوال {} موجود بالفعل في أسرة بكود {}" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/benefit.py:0 +#, python-format +msgid "The phone {} already exists in family with code {}." +msgstr "رقم الجوال {} موجود بالفعل في أسرة بكود {}" + #. module: odex_benefit #: model:ir.model.fields,help:odex_benefit.field_benefits_representative__membership_amount #: model:ir.model.fields,help:odex_benefit.field_external_benefits__membership_amount diff --git a/odex25_ensan/odex_benefit/models/benefit.py b/odex25_ensan/odex_benefit/models/benefit.py index 79bd8031a..f52895639 100644 --- a/odex25_ensan/odex_benefit/models/benefit.py +++ b/odex25_ensan/odex_benefit/models/benefit.py @@ -1758,37 +1758,70 @@ class GrantBenefitProfile(models.Model): return template.with_context(lang=self.env.user.lang).send_mail(self.id, force_send=True, raise_exception=False) - # Validation Opertaion - @api.onchange('phone', 'phone2', 'relative_phone', 'sms_phone') - def _onchange_mobile_validation(self): - if self.phone: - if self.phone.startswith('+966'): - phone = self.phone[4:] - self.phone = phone - if re.match(SAUDI_MOBILE_PATTERN, self.phone) == None: + # # Validation Opertaion + # @api.onchange('phone', 'phone2','sms_phone') + # def _onchange_mobile_validation(self): + # if self.phone: + # if self.phone.startswith('+966'): + # phone = self.phone[4:] + # self.phone = phone + # if re.match(SAUDI_MOBILE_PATTERN, self.phone) == None: + # raise ValidationError( + # _('Enter a valid Saudi mobile number')) + # if self.phone2: + # if self.phone2.startswith('+966'): + # phone2 = self.phone2[4:] + # self.phone2 = phone2 + # if re.match(SAUDI_MOBILE_PATTERN, self.phone2) == None: + # raise ValidationError( + # _('Enter a valid Saudi mobile number')) + # if self.sms_phone: + # if self.sms_phone.startswith('+966'): + # sms_phone = self.sms_phone[4:] + # self.sms_phone = sms_phone + # if re.match(SAUDI_MOBILE_PATTERN, self.sms_phone) == None: + # raise ValidationError( + # _('Enter a valid Saudi mobile number')) + + @api.onchange('phone', 'phone2','sms_phone') + def _onchange_phone_numbers(self): + phone_numbers = { + 'الهاتف': self.phone, + 'رقم الجوال الثاني': self.phone2, + 'رقم الجوال للتواصل': self.sms_phone, + } + + # Check each ID number for 10-digit format and uniqueness within the parent model + unique_ids = set() + for label, phone_number in phone_numbers.items(): + if phone_number: + if re.match(SAUDI_MOBILE_PATTERN,phone_number) == None: + raise ValidationError( + _('Enter a valid Saudi mobile number')) + if phone_number in unique_ids: + raise ValidationError(_("%s must be unique within the same record.") % label) + unique_ids.add(phone_number) + + # Check for uniqueness against `member_phone` in child records and across database records + for member in self.member_ids: + if member.member_phone and member.member_phone in unique_ids: raise ValidationError( - _('Enter a valid Saudi mobile number')) - if self.phone2: - if self.phone2.startswith('+966'): - phone2 = self.phone2[4:] - self.phone2 = phone2 - if re.match(SAUDI_MOBILE_PATTERN, self.phone2) == None: + _("The Phone Number %s in the Family Members list must be unique across the record.") % member.member_phone) + # Check for duplicate IDs across records in the database + for phone_number in unique_ids: + duplicate_record_family = self.env['grant.benefit'].search([ + '|', '|', ('phone', '=', phone_number), ('phone2', '=', phone_number), + ('sms_phone', '=', phone_number), ('id', '!=', self._origin.id) + ], limit=1) + duplicate_record_member = self.env['family.member'].search([('member_phone', '=', phone_number)], limit=1) + if duplicate_record_family: raise ValidationError( - _('Enter a valid Saudi mobile number')) - if self.relative_phone: - if self.relative_phone.startswith('+966'): - relative_phone = self.relative_phone[4:] - self.relative_phone = relative_phone - if re.match(SAUDI_MOBILE_PATTERN, self.relative_phone) == None: + _("The phone number {} already exists in family with code {}.").format( + phone_number, duplicate_record_family.code)) + if duplicate_record_member: raise ValidationError( - _('Enter a valid Saudi mobile number')) - if self.sms_phone: - if self.sms_phone.startswith('+966'): - sms_phone = self.sms_phone[4:] - self.sms_phone = sms_phone - if re.match(SAUDI_MOBILE_PATTERN, self.sms_phone) == None: - raise ValidationError( - _('Enter a valid Saudi mobile number')) + _("The phone {} already exists in family with code {}.").format( + phone_number, duplicate_record_member.benefit_id.code)) @api.onchange('email') def onchange_email(self): diff --git a/odex25_ensan/odex_benefit/models/family_members.py b/odex25_ensan/odex_benefit/models/family_members.py index 7f721a205..87d0bfb69 100644 --- a/odex25_ensan/odex_benefit/models/family_members.py +++ b/odex25_ensan/odex_benefit/models/family_members.py @@ -668,4 +668,29 @@ class FamilyMemberProfile(models.Model): if exist: raise ValidationError( _('This Phone Already Exist!')) + # Check if the father ID and mother ID are the same on the same record + if self.member_phone == self.benefit_id.phone or self.member_phone == self.benefit_id.phone2 or self.member_phone == self.benefit_id.sms_phone: + raise ValidationError( + _("Phone number cannot be the same in The Family")) + + # Check if the ID number exists in other records or in family members + exist = self.search([ + ('member_phone', '=', self.member_phone) + ], limit=1) + exist_in_family = self.env["grant.benefit"].search([ + '|', '|', + ('phone', '=', self.member_phone), + ('phone2', '=', self.member_phone), + ('sms_phone', '=', self.member_phone), + ], limit=1) + if exist or exist_in_family: + if exist_in_family: + raise ValidationError( + _("The phone Number already exists in Family with code %s") % exist_in_family.code) + if exist: + raise ValidationError( + _("The phone Number already exists in Family with code %s") % exist.benefit_id.code) + + +