fix membership
This commit is contained in:
parent
83204154c3
commit
6685aac6a1
|
|
@ -1572,4 +1572,10 @@ msgstr "المرشحين"
|
|||
#. module: dev_membership
|
||||
#: model:ir.actions.report,name:dev_membership.menu_print_membership_nomination
|
||||
msgid "Print Membership Nomination"
|
||||
msgstr "طباعة المرشحين للعضوية"
|
||||
msgstr "طباعة المرشحين للعضوية"
|
||||
|
||||
#. module: dev_membership
|
||||
#: code:addons/dev_membership/models/res_partner.py:10
|
||||
#, python-format
|
||||
msgid "email must be unique."
|
||||
msgstr "يجب أن يكون البريد الإلكتروني فريدًا."
|
||||
|
|
@ -28,7 +28,8 @@ class MembershipCancellationRequest(models.Model):
|
|||
rec.membership_id.partner_id.memebership_end_date = request_date
|
||||
rec.membership_id.request_date = request_date
|
||||
rec.state = 'approved'
|
||||
rec.membership_id.state = 'cancel'
|
||||
if rec.membership_id.state=='active':
|
||||
rec.membership_id.state = 'cancel'
|
||||
rec.membership_id.partner_id.check_active_membership()
|
||||
|
||||
def action_reject(self):
|
||||
|
|
|
|||
|
|
@ -19,7 +19,10 @@ _logger = logging.getLogger(__name__)
|
|||
class Partner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
is_member = fields.Boolean(string='Is Member')
|
||||
is_member = fields.Boolean(string='Is Member' ,default=False)
|
||||
mobile = fields.Char(copy=False)
|
||||
identification_number = fields.Char(copy=False)
|
||||
email = fields.Char(copy=False)
|
||||
membership_count = fields.Integer(string="Membership Count", compute="_get_membership_count")
|
||||
active_membership_id = fields.Many2one('dev.membership', string='Membership', compute='check_active_membership')
|
||||
membrship_level = fields.Many2one('membership.level',string='Membrship level',store=True,compute='_compute_membership_level')
|
||||
|
|
@ -169,50 +172,46 @@ class Partner(models.Model):
|
|||
|
||||
|
||||
|
||||
@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')
|
||||
@api.constrains('mobile', 'identification_number','email')
|
||||
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."))
|
||||
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."))
|
||||
if record.email:
|
||||
existing_email = self.search([
|
||||
('email', '=', record.email),
|
||||
('id', '!=', record.id)
|
||||
], limit=1)
|
||||
if existing_email:
|
||||
raise ValidationError(_("email 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."))
|
||||
@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."))
|
||||
|
||||
|
||||
# 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.'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,8 +39,5 @@
|
|||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('group_membership_manager'))]"/>
|
||||
</record>
|
||||
<record id="sale_purchase_tab" model="res.groups">
|
||||
<field name="name">Sale/Purchase Tab</field>
|
||||
<field name="category_id" ref="dev_membership.membership_category"/> <!-- Or use your own category -->
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
attrs="{'invisible':['|',('membership_id','!=',False),('state','not in',['expire','active','cancel'])]}"/>
|
||||
<button name="%(dev_membership.membership_request_cancel_wizard_action)d" type="action" string="Cancel"
|
||||
attrs="{'invisible': ([('state', 'not in', ['active','expire'])])}"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,activeexpire,cancel"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,active,expire,cancel"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
|
|
|
|||
|
|
@ -231,6 +231,11 @@
|
|||
<xpath expr="//field[@name='function']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='mobile']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
|
||||
|
||||
<xpath expr="//field[@name='company_type']" position="attributes">
|
||||
<attribute name="attrs">{'invisible':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
|
|
@ -264,6 +269,9 @@
|
|||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="partner_custom.partner_view_property_cusotm"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='identification_number']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='identifcation_info']" position="after">
|
||||
<group>
|
||||
<field name="gender" attrs="{'required':[('is_member','=',True)]}"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue