diff --git a/odex25_sales/dev_membership/models/dev_membership.py b/odex25_sales/dev_membership/models/dev_membership.py index 9d9733db5..4e2640a34 100644 --- a/odex25_sales/dev_membership/models/dev_membership.py +++ b/odex25_sales/dev_membership/models/dev_membership.py @@ -161,7 +161,7 @@ class DevMembership(models.Model): ], limit=1, order="to_date desc") # Handle sequence generation for new or renewed memberships sequence_code = 'membership.no.sequence' - self.partner_id.check_active_membership() + if not self.invoice_id and not self.is_free: raise ValidationError(_('Please Create Membership Invoice')) if self.invoice_id.payment_state not in ['paid', 'in_payment'] and not self.is_free: @@ -240,7 +240,7 @@ class DevMembership(models.Model): message_type='notification', # author_id=self.env.user.partner_id.id, ) - membership.partner_id.check_active_membership() + def membership_reminder_email_cron(self): membership_pool = self.env['dev.membership'] diff --git a/odex25_sales/dev_membership/models/res_partner.py b/odex25_sales/dev_membership/models/res_partner.py index 64de5ce4e..9d4d19b8d 100644 --- a/odex25_sales/dev_membership/models/res_partner.py +++ b/odex25_sales/dev_membership/models/res_partner.py @@ -25,7 +25,7 @@ class Partner(models.Model): membrship_no = fields.Char('Membership Number') birth_date = fields.Date(string='Birth Date') join_date = fields.Date(string='Join Date') - memebership_end_date = fields.Date(string='Memebership End Date',store=True, compute='_compute_membership_end') + memebership_end_date = fields.Date(string='Memebership End Date',store=True, compute='check_active_membership') age = fields.Integer(string='Age',compute='_compute_age') employer = fields.Char(string='Employer',) product_id = fields.Many2one('product.product', string="Membership Type",store=True,compute="check_active_membership") @@ -39,27 +39,67 @@ class Partner(models.Model): if rec.birth_date: rec.age = (datetime.today().year-rec.birth_date.year) + + def check_active_membership(self): + for partner in self: + partner.active_membership_id = False - partner.product_id = False + partner.is_membership_expire = False + + partner.memebership_end_date = False + + partner.product_id = False + if partner.membership_count > 0: - # partner._compute_membership_level() - # partner.check_memebership_status() - # partner._compute_membership_end() + c_date = datetime.now().date() + membership_id = self.env['dev.membership'].sudo().search([('partner_id', '=', partner.id), + ('state', '=', 'active'), + ('from_date', '<=', c_date), + ('to_date', '>=', c_date)], order='to_date desc', limit=1) + if membership_id: + partner.active_membership_id = membership_id and membership_id.id or False - - else: - partner.is_membership_expire = True - - @api.depends('active_membership_id') + + last_membership_id = self.env['dev.membership'].sudo().search([ + + ('partner_id', '=', partner.id), + + ('state', '=', 'active'), + + ('product_id', '=', membership_id.product_id.id)], order='to_date desc', limit=1) + + if last_membership_id: + + partner.memebership_end_date = last_membership_id.to_date + + partner.product_id = last_membership_id.product_id.id + + else: + + partner.is_membership_expire = True + + last_membership_id = self.env['dev.membership'].sudo().search([ + + ('partner_id', '=', partner.id), + + ('state', 'in', ('expire','cancel'))], order='to_date desc', limit=1) + + if last_membership_id: + + partner.memebership_end_date = last_membership_id.to_date + + 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 @@ -88,7 +128,7 @@ class Partner(models.Model): ('state', 'in', ('active','expire','cancel'))], order='to_date desc', limit=1) if membership_id: partner.membrship_level = membership_id.membrship_level - partner.product_id = membership_id and membership_id.product_id.id or False + @api.depends('active_membership_id') def check_memebership_status(self): for partner in self: