Merge pull request #214 from expsa/zainab_sale
[ADD]ADD corn mail to partner and user if the membership not renew
This commit is contained in:
commit
1623a0b7f5
|
|
@ -52,6 +52,33 @@
|
|||
<p>It's gentle reminder that your membership is about to expire on ${object.datetime_convert()}.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
|
||||
<record id="dev_cancel_membership_expire" model="mail.template">
|
||||
<field name="name">Membership Cancel Notify</field>
|
||||
<field name="email_from">${(object.company_id.email or '') | safe}</field>
|
||||
<field name="email_to">${(object.partner_id.email or '') | safe}</field>
|
||||
<field name="subject">Membership Second Expire Reminder</field>
|
||||
<field name="model_id" ref="dev_membership.model_dev_membership"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<p>Hello ${object.partner_id.name}.</p>
|
||||
<p>Hope you doing well!</p>
|
||||
<p>It's gentle reminder that your membership is about to Cancelled on ${object.datetime_convert()}.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
<record id="dev_cancel_membership_expire2" model="mail.template">
|
||||
<field name="name">Membership Cancel Notify</field>
|
||||
<field name="email_from">${(object.company_id.email or '') | safe}</field>
|
||||
<field name="email_to">${(object.user_id.email or '') | safe}</field>
|
||||
<field name="subject">Membership Second Expire Reminder</field>
|
||||
<field name="model_id" ref="dev_membership.model_dev_membership"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<p>Hello ${object.user_id.name}.</p>
|
||||
<p>Hope you doing well!</p>
|
||||
<p>It's gentle reminder that your membership is about to Cancelled on ${object.datetime_convert()}.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
<!-- todo end -->
|
||||
<record id="dev_membership_expired_mail_template" model="mail.template">
|
||||
<field name="name">Membership Expired Mail</field>
|
||||
|
|
|
|||
|
|
@ -25,6 +25,28 @@
|
|||
<field name="state">code</field>
|
||||
<field name="code">model.membership_reminder_email_cron()</field>
|
||||
</record>
|
||||
<record id="cron_cancel_dev_membership_reminder" model="ir.cron">
|
||||
<field name="name">Membership Partner Cancel Notify</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False"/>
|
||||
<field name="model_id" ref="model_dev_membership"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cancell_membership_reminder_email_cron()</field>
|
||||
</record>
|
||||
<record id="cron_cancel2_dev_membership_reminder" model="ir.cron">
|
||||
<field name="name">Membership User Cancel Notify</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False"/>
|
||||
<field name="model_id" ref="model_dev_membership"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cancell2_membership_reminder_email_cron()</field>
|
||||
</record>
|
||||
|
||||
<!-- todo start -->
|
||||
<record id="cron_dev_membership_seacond_reminder" model="ir.cron">
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ class DevMembership(models.Model):
|
|||
phone = fields.Char(string='Phone',related='partner_id.phone',store=True)
|
||||
email = fields.Char(string='Email',related='partner_id.email',store=True)
|
||||
product_id = fields.Many2one('product.product', string="Membership Product", domain="[('is_membership', '=', True)]", tracking=2, required=1)
|
||||
membership_fees = fields.Float(string="Membership Fees",readonly=0)
|
||||
membership_fees = fields.Float(string="Membership Fees")
|
||||
is_free = fields.Boolean(string="Is Free",related="product_id.is_free",)
|
||||
|
||||
company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env.company, required=1, tracking=3)
|
||||
duration = fields.Integer(string="Duration",readonly=0,)
|
||||
duration = fields.Integer(string="Duration",)
|
||||
description = fields.Text(string="Description", related="product_id.description", readonly=False)
|
||||
interval = fields.Selection(string="Interval", related="product_id.interval")
|
||||
|
||||
|
|
@ -53,12 +53,18 @@ class DevMembership(models.Model):
|
|||
def _onchange_membership_type(self):
|
||||
if self.product_id:
|
||||
self.membership_fees = self.product_id.list_price
|
||||
self.duration = self.product_id.duration
|
||||
self.duration = (self.product_id.duration)
|
||||
@api.onchange('duration')
|
||||
def _onchange_duration(self):
|
||||
if self.duration and self.interval and self.membership_fees:
|
||||
self.membership_fees = self.duration*self.membership_fees
|
||||
|
||||
@api.constrains('membership_fees')
|
||||
def _check_subscription_fee(self):
|
||||
for record in self:
|
||||
if record.membership_fees < record.product_id.list_price:
|
||||
if record.product_id.duration==1 and record.membership_fees < record.product_id.list_price :
|
||||
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
|
||||
elif record.product_id.duration>1 and record.membership_fees*record.duration < record.product_id.list_price*record.duration :
|
||||
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
|
||||
|
||||
|
||||
|
|
@ -123,7 +129,7 @@ class DevMembership(models.Model):
|
|||
def action_active_membership(self):
|
||||
if not self.invoice_id and not self.is_free:
|
||||
raise ValidationError(_('Please Create Membership Invoice'))
|
||||
if self.invoice_id.payment_state != 'paid' and not self.is_free:
|
||||
if self.invoice_id.payment_state not in ['paid','in_payment'] and not self.is_free:
|
||||
raise ValidationError(_('Membership Invoice is not paid.\nPlease Paid membership invoice and active the membership.'))
|
||||
self.state = 'active'
|
||||
|
||||
|
|
@ -187,14 +193,65 @@ class DevMembership(models.Model):
|
|||
for membership in membership_ids:
|
||||
tmpl_id.send_mail(membership.id, force_send=True)
|
||||
return True
|
||||
|
||||
def cancell_membership_reminder_email_cron(self):
|
||||
membership_pool = self.env['dev.membership']
|
||||
tmpl_id = self.env.ref('dev_membership.dev_cancel_membership_expire')
|
||||
post_expiry_period = self.env['ir.config_parameter'].get_param('dev_membership.post_expiry_period')
|
||||
cancel_reason = self.env['ir.config_parameter'].get_param('dev_membership.cancellation_reason')
|
||||
|
||||
if tmpl_id and post_expiry_period:
|
||||
date = fields.Date.today() - relativedelta(days=int(post_expiry_period))
|
||||
membership_ids = membership_pool.search([
|
||||
('state', '=', 'expire'),
|
||||
('to_date', '<=', date),('membership_id','=',False)
|
||||
])
|
||||
for membership in membership_ids:
|
||||
membership.write({
|
||||
'state': 'cancel',
|
||||
'cancel_reason': cancel_reason
|
||||
})
|
||||
tmpl_id.send_mail(membership.id, force_send=True)
|
||||
return True
|
||||
def cancell2_membership_reminder_email_cron(self):
|
||||
membership_pool = self.env['dev.membership']
|
||||
tmpl_id = self.env.ref('dev_membership.dev_cancel_membership_expire2')
|
||||
post_expiry_period = self.env['ir.config_parameter'].get_param('dev_membership.post_expiry_period')
|
||||
cancel_reason = self.env['ir.config_parameter'].get_param('dev_membership.cancellation_reason')
|
||||
|
||||
if tmpl_id and post_expiry_period:
|
||||
date = fields.Date.today() - relativedelta(days=int(post_expiry_period))
|
||||
membership_ids = membership_pool.search([
|
||||
('state', '=', 'expire'),
|
||||
('to_date', '<=', date),('membership_id','=',False)
|
||||
])
|
||||
for membership in membership_ids:
|
||||
membership.write({
|
||||
'state': 'cancel',
|
||||
'cancel_reason': cancel_reason
|
||||
})
|
||||
tmpl_id.send_mail(membership.id, force_send=True)
|
||||
return True
|
||||
|
||||
def cancell_membership_reminder_email_cron(self):
|
||||
membership_pool = self.env['dev.membership']
|
||||
tmpl_id = self.env.ref('dev_membership.dev_cancel_membership_expire')
|
||||
post_expiry_period = self.env['ir.config_parameter'].get_param('dev_membership.post_expiry_period')
|
||||
if tmpl_id:
|
||||
date = self.to_date+ relativedelta(days=int(post_expiry_period))
|
||||
membership_ids = membership_pool.search([('state', '=', 'expire'),
|
||||
('to_date', '<=', date)])
|
||||
for membership in membership_ids:
|
||||
tmpl_id.send_mail(membership.id, force_send=True)
|
||||
return True
|
||||
def membership_secand_reminder_email_cron(self):
|
||||
membership_pool = self.env['dev.membership']
|
||||
tmpl_id = self.env.ref('dev_membership.dev_membership_expire_second_reminder_mail_template')
|
||||
days_before_second = self.env['ir.config_parameter'].get_param('dev_membership.days_before_second')
|
||||
if tmpl_id:
|
||||
date = datetime.now().date() + relativedelta(days=int(days_before))
|
||||
date = datetime.now().date() + relativedelta(days=int(days_before_second))
|
||||
membership_ids = membership_pool.search([('state', '=', 'active'),
|
||||
('to_date', '<=', date)])
|
||||
('to_date', '<=', days_before_second)])
|
||||
for membership in membership_ids:
|
||||
tmpl_id.send_mail(membership.id, force_send=True)
|
||||
return True
|
||||
|
|
|
|||
|
|
@ -58,12 +58,18 @@ class RenewMembership(models.TransientModel):
|
|||
if record.membership_fees < record.product_id.list_price:
|
||||
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
|
||||
|
||||
|
||||
@api.onchange('duration')
|
||||
def _onchange_duration(self):
|
||||
if self.duration and self.interval and self.membership_fees:
|
||||
self.membership_fees = self.duration*self.membership_fees
|
||||
@api.constrains('duration')
|
||||
def _check_duration(self):
|
||||
for record in self:
|
||||
if record.duration < record.product_id.duration:
|
||||
raise ValidationError(_('Duration cannot be less than the default value in Setting of membrship type.'))
|
||||
if record.product_id.duration==1 and record.membership_fees < record.product_id.list_price :
|
||||
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
|
||||
elif record.product_id.duration>1 and record.membership_fees*record.duration < record.product_id.list_price*record.duration :
|
||||
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
|
||||
|
||||
|
||||
def action_renew_membership(self):
|
||||
mem_pool = self.env['dev.membership'].sudo()
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@
|
|||
<group>
|
||||
<label for="duration"/>
|
||||
<div>
|
||||
<field name="duration" class="oe_inline" readonly="1"/>
|
||||
<field name="duration" class="oe_inline" readonly="0"/>
|
||||
<label for="duration" string=" " style="margin-right: 5px;"/>
|
||||
<field name="interval" class="oe_inline" readonly="1" style="height:24px;"/>
|
||||
</div>
|
||||
<field name="membership_fees" readonly="1" force_save="1"/>
|
||||
<field name="membership_fees" readonly="0" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
|
|
|
|||
Loading…
Reference in New Issue