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}"} + + + +

@@ -272,6 +282,9 @@ + + {'required': [('is_member', '=', True)]} +