stop contrain
This commit is contained in:
parent
a4c464f2e4
commit
9225ed0af9
|
|
@ -11,6 +11,10 @@
|
|||
from odoo import fields, models, api,_
|
||||
from datetime import datetime
|
||||
|
||||
from odoo.exceptions import Warning, ValidationError
|
||||
import re
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class Partner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
|
@ -66,22 +70,26 @@ class Partner(models.Model):
|
|||
partner.product_id = last_membership_id.product_id.id
|
||||
@api.depends('active_membership_id')
|
||||
def _compute_membership_end(self):
|
||||
for partner in self:
|
||||
partner.memebership_end_date = False
|
||||
if partner.membership_count > 0:
|
||||
if partner.active_membership_id:
|
||||
membership_id = self.env['dev.membership'].sudo().search([
|
||||
('partner_id', '=', partner.id),
|
||||
('state', '=', 'active'),
|
||||
('product_id', '=', partner.active_membership_id.product_id.id)], order='to_date desc', limit=1)
|
||||
if membership_id:
|
||||
partner.memebership_end_date = membership_id.to_date
|
||||
else:
|
||||
membership_id = self.env['dev.membership'].sudo().search([
|
||||
('partner_id', '=', partner.id),
|
||||
('state', 'in', ('expire','cancel'))], order='to_date desc', limit=1)
|
||||
if membership_id:
|
||||
partner.memebership_end_date = membership_id.to_date
|
||||
for partner in self:
|
||||
partner.membership_end_date = False
|
||||
if partner.membership_count > 0:
|
||||
if partner.active_membership_id:
|
||||
# Search for the latest active membership with the same product
|
||||
membership = self.env['dev.membership'].sudo().search([
|
||||
('partner_id', '=', partner.id),
|
||||
('state', '=', 'active'),
|
||||
('product_id', '=', partner.active_membership_id.product_id.id)
|
||||
], order='to_date desc', limit=1)
|
||||
if membership:
|
||||
partner.membership_end_date = membership.to_date
|
||||
else:
|
||||
# Find the latest expired or cancelled membership
|
||||
membership = self.env['dev.membership'].sudo().search([
|
||||
('partner_id', '=', partner.id),
|
||||
('state', 'in', ('expire', 'cancel'))
|
||||
], order='to_date desc', limit=1)
|
||||
if membership:
|
||||
partner.membership_end_date = membership.to_date
|
||||
|
||||
@api.depends('active_membership_id')
|
||||
def _compute_membership_level(self):
|
||||
|
|
@ -156,4 +164,57 @@ class Partner(models.Model):
|
|||
'domain': [('id', '=', board_nominations)],
|
||||
'view_mode': 'tree,form',
|
||||
'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')
|
||||
# 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."))
|
||||
|
||||
# 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.'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue