diff --git a/odex25_sales/dev_membership/models/dev_membership.py b/odex25_sales/dev_membership/models/dev_membership.py index 10bd298fd..dfd559510 100644 --- a/odex25_sales/dev_membership/models/dev_membership.py +++ b/odex25_sales/dev_membership/models/dev_membership.py @@ -239,10 +239,20 @@ class DevMembership(models.Model): ('to_date', '<=', date),('membership_id','=',False) ]) for membership in membership_ids: - membership.write({ - 'state': 'cancel', - 'cancel_reason': cancel_reason - }) + # Check if a cancellation request already exists + existing_cancel_request = self.env['membership.cancellation.request'].search([ + ('membership_id', '=', membership.id), + ('state', '=', 'draft') + ], limit=1) + if not existing_cancel_request: + # Create a new cancellation request instead of canceling directly + self.env['membership.cancellation.request'].create({ + 'membership_id': membership.id, + 'member_id': membership.partner_id.id, + 'request_date': fields.Datetime.now(), + 'state': 'draft', + 'cancel_reason': cancel_reason + }) tmpl_id.send_mail(membership.id, force_send=True) return True def cancell2_membership_reminder_email_cron(self): @@ -258,10 +268,20 @@ class DevMembership(models.Model): ('to_date', '<=', date),('membership_id','=',False) ]) for membership in membership_ids: - membership.write({ - 'state': 'cancel', - 'cancel_reason': cancel_reason - }) + m # Check if a cancellation request already exists + existing_cancel_request = self.env['membership.cancellation.request'].search([ + ('membership_id', '=', membership.id), + ('state', '=', 'draft') + ], limit=1) + if not existing_cancel_request: + # Create a new cancellation request instead of canceling directly + self.env['membership.cancellation.request'].create({ + 'membership_id': membership.id, + 'member_id': membership.partner_id.id, + 'request_date': fields.Datetime.now(), + 'state': 'draft', + 'cancel_reason': cancel_reason + }) tmpl_id.send_mail(membership.id, force_send=True) return True @@ -274,6 +294,20 @@ class DevMembership(models.Model): membership_ids = membership_pool.search([('state', '=', 'expire'), ('to_date', '<=', date)]) for membership in membership_ids: + # Check if a cancellation request already exists + existing_cancel_request = self.env['membership.cancellation.request'].search([ + ('membership_id', '=', membership.id), + ('state', '=', 'draft') + ], limit=1) + if not existing_cancel_request: + # Create a new cancellation request instead of canceling directly + self.env['membership.cancellation.request'].create({ + 'membership_id': membership.id, + 'member_id': membership.partner_id.id, + 'request_date': fields.Datetime.now(), + 'state': 'draft', + 'cancel_reason': cancel_reason + }) tmpl_id.send_mail(membership.id, force_send=True) return True def membership_secand_reminder_email_cron(self):