diff --git a/odex25_sales/dev_membership/i18n/ar_001.po b/odex25_sales/dev_membership/i18n/ar_001.po
index 7bd3bdfc1..3a508bae9 100644
--- a/odex25_sales/dev_membership/i18n/ar_001.po
+++ b/odex25_sales/dev_membership/i18n/ar_001.po
@@ -1572,4 +1572,31 @@ msgstr "المرشحين"
#. module: dev_membership
#: model:ir.actions.report,name:dev_membership.menu_print_membership_nomination
msgid "Print Membership Nomination"
-msgstr "طباعة المرشحين للعضوية"
\ No newline at end of file
+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 "رقم الجوال مطلوب للأعضاء."
+
+
+
+
+
diff --git a/odex25_sales/dev_membership/models/res_partner.py b/odex25_sales/dev_membership/models/res_partner.py
index 308b84292..6223b7db9 100644
--- a/odex25_sales/dev_membership/models/res_partner.py
+++ b/odex25_sales/dev_membership/models/res_partner.py
@@ -166,52 +166,56 @@ class Partner(models.Model):
'target': 'current',
}
-
-
-
- @api.constrains('identification_number', 'is_member')
- 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."))
-
- @api.constrains('mobile', 'identification_number')
- def _check_unique_mobile_id(self):
- for record in self:
- if record.mobile:
- existing_mobile = self.search([
- ('mobile', '=', record.mobile),
- ('id', '!=', record.id)
- ], 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),
- ('id', '!=', record.id)
- ], limit=1)
- if existing_id:
- raise ValidationError(_("ID number must be unique."))
-
- @api.constrains('mobile')
+ @api.onchange('mobile')
def _check_mobile_format(self):
- print("Test constraint running!")
for record in self:
- print("Checking mobile format: %s", record.mobile)
- if record.mobile and (len(record.mobile) != 10 or not record.mobile.isdigit()):
- raise ValidationError(_("Mobile number must be exactly 10 digits."))
+ if record.mobile and not (len(record.mobile) == 10 and record.mobile.isdigit()):
+ raise ValidationError("Mobile number must be exactly 10 digits.")
+
- # Optional: Add SQL constraints for uniqueness
- _sql_constraints = [
- ('unique_mobile', 'UNIQUE(mobile)', 'Mobile number must be unique.'),
- ('unique_identification_number', 'UNIQUE(identification_number)', 'ID number must be unique.'),
- ]
+
+
+ # @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."))
+
+ @api.constrains('identification_number')
+ def _check_unique_mobile_id(self):
+ for record in self:
+ # if record.mobile:
+ # existing_mobile = self.search([
+ # ('mobile', '=', record.mobile),
+ # ('id', '!=', record.id)
+ # ], 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),
+ ('id', '!=', record.id)
+ ], limit=1)
+ if existing_id:
+ raise ValidationError(_("ID number must be unique."))
+
+ # @api.constrains('mobile')
+ # def _check_mobile_format(self):
+
+ # for record in self:
+ # print("Checking mobile format: %s", record.mobile)
+ # if record.mobile and (len(record.mobile) != 10 or not record.mobile.isdigit()) and not record.user_ids:
+ # raise ValidationError(_("Mobile number must be exactly 10 digits."))
+
+
+
+
diff --git a/odex25_sales/dev_membership/security/security.xml b/odex25_sales/dev_membership/security/security.xml
index 682252a1f..0faea90a8 100644
--- a/odex25_sales/dev_membership/security/security.xml
+++ b/odex25_sales/dev_membership/security/security.xml
@@ -39,8 +39,5 @@
[(1,'=',1)]
-
- Sale/Purchase Tab
-
-
+
diff --git a/odex25_sales/dev_membership/views/partner_extended.xml b/odex25_sales/dev_membership/views/partner_extended.xml
index fc9057727..8446de55f 100644
--- a/odex25_sales/dev_membership/views/partner_extended.xml
+++ b/odex25_sales/dev_membership/views/partner_extended.xml
@@ -170,12 +170,22 @@
res.partner
-
- dev_membership.sale_purchase_tab
-
-
+
+
+
+
-
+
+
+
+
+
+ {'required': [('is_member', '=', True)]}
+ {"pattern": "[0-9]{10}"}
+
+
+
+
+
+ {'required': [('is_member', '=', True)]}
+