diff --git a/odex25_sales/dev_membership/i18n/ar_001.po b/odex25_sales/dev_membership/i18n/ar_001.po
index 106c6a923..4b97bdfb5 100644
--- a/odex25_sales/dev_membership/i18n/ar_001.po
+++ b/odex25_sales/dev_membership/i18n/ar_001.po
@@ -1574,6 +1574,31 @@ msgstr "المرشحين"
msgid "Print Membership Nomination"
msgstr "طباعة المرشحين للعضوية"
+
+
+
+
+#. module: dev_membership
+#: code:addons/dev_membership/models/res_partner.py:0
+#, python-format
+msgid "Mobile number must be exactly 10 digits."
+msgstr "يجب أن يتكون رقم الجوال من 10 أرقام بالضبط."
+
+
+#. module: dev_membership
+#: code:addons/dev_membership/models/res_partner.py:0
+#, python-format
+msgid "ID number must be unique."
+msgstr "يجب أن يكون رقم الهوية فريدًا."
+
+#. module: dev_membership
+#: code:addons/dev_membership/models/res_partner.py:0
+#, python-format
+msgid "Mobile number is required for members."
+msgstr "رقم الجوال مطلوب للأعضاء."
+
+
+=======
#. module: dev_membership
#: code:addons/dev_membership/models/res_partner.py:10
#, python-format
@@ -1597,3 +1622,4 @@ msgstr "رقم الهاتف يجب أن يتكون من 10 أرقام بالضب
+
diff --git a/odex25_sales/dev_membership/models/res_partner.py b/odex25_sales/dev_membership/models/res_partner.py
index 5d33912a0..e435cb7c0 100644
--- a/odex25_sales/dev_membership/models/res_partner.py
+++ b/odex25_sales/dev_membership/models/res_partner.py
@@ -169,9 +169,28 @@ class Partner(models.Model):
'target': 'current',
}
+ @api.onchange('mobile')
+ def _check_mobile_format(self):
+ for record in self:
+ if record.mobile and not (len(record.mobile) == 10 and record.mobile.isdigit()):
+ raise ValidationError("Mobile number must be exactly 10 digits.")
+
+
+ # @api.constrains('identification_number')
+ # def _check_id_no_required_if_member(self):
+ # for record in self:
+ # if record.is_member and not record.identification_number:
+ # raise ValidationError(_("ID number is required for members."))
+ @api.constrains('mobile','is_member')
+ def _check_mobile_required_if_member(self):
+ for record in self:
+ if record.is_member and not record.mobile:
+ raise ValidationError(_("Mobile number is required for members."))
+
+
@@ -186,6 +205,7 @@ class Partner(models.Model):
], limit=1)
if existing_mobile:
raise ValidationError(_("Mobile number must be unique."))
+
if record.identification_number:
existing_id = self.search([
('identification_number', '=', record.identification_number),
@@ -193,6 +213,11 @@ class Partner(models.Model):
], limit=1)
if existing_id:
raise ValidationError(_("ID number must be unique."))
+
+
+
+
+
@api.onchange('mobile')
@@ -204,8 +229,8 @@ class Partner(models.Model):
raise ValidationError(_("Mobile number must be exactly 10 digits."))
- # Optional: Add SQL constraints for uniqueness
-
+
+
diff --git a/odex25_sales/dev_membership/views/partner_extended.xml b/odex25_sales/dev_membership/views/partner_extended.xml
index 3d046406e..f60385503 100644
--- a/odex25_sales/dev_membership/views/partner_extended.xml
+++ b/odex25_sales/dev_membership/views/partner_extended.xml
@@ -170,10 +170,19 @@
res.partner
-
-
+
+
+
+
+
+ {'required': [('is_member', '=', True)]}
+ {"pattern": "[0-9]{10}"}
+
+
+
+
+
+ {'required': [('is_member', '=', True)]}
+