Shravy
Shravy

Reputation: 666

How to achieve this functionality in Odoo?

I have been trying with sending mails whenever there is a leave request/approval/rejection in Leave request and I have been following the steps in the following link - https://www.odoo.com/forum/help-1/question/openerp-7-sending-email-to-manager-when-employee-applies-a-leave-7362

By following the above steps, messages do appear in Odoo Inbox but I am not able to get the mail delivered to mail client like thunderbird

Anyone kindly can give an opinion ?

Upvotes: 1

Views: 612

Answers (1)

Ravi Rupapara
Ravi Rupapara

Reputation: 96

Here is the code that you want,

Code for leave request:

def create(self, cr, uid, values, context=None):

        res = super(hr_holidays, self).create(cr, uid, values, context=context)

        template = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_holidays_aspire', 'leave_request')
        mail_id = self.pool.get('email.template').send_mail(cr, uid, template.id, res , force_send=True)

        return res

Code for leave approve:

def holidays_validate(self, cr, uid, ids, context=None):

        compose_ctx = dict(context,active_ids=ids)
        search_domain = [('name', '=', 'Leave Approved')]
        template_id = self.pool['email.template'].search(cr, uid, search_domain, context=context)[0]

        compose_id = self.pool['mail.compose.message'].create(
            cr, uid, {
                'model': self._name,
                'composition_mode': 'mass_mail',
                'template_id': template_id,
                'post': True,
                'notify': True,
            }, context=compose_ctx)
        self.pool['mail.compose.message'].write(
            cr, uid, [compose_id],
            self.pool['mail.compose.message'].onchange_template_id(
                cr, uid, [compose_id],
                template_id, 'mass_mail', self._name, False,
                context=compose_ctx)['value'],
            context=compose_ctx)
        self.pool['mail.compose.message'].send_mail(cr, uid, [compose_id], context=compose_ctx)

        return True

Code for leave refuse:

def holidays_refuse(self, cr, uid, ids, context=None):
        compose_ctx = dict(context,active_ids=ids)
        search_domain = [('name', '=', 'Leave Refused')]
        template_id = self.pool['email.template'].search(cr, uid, search_domain, context=context)[0]

        compose_id = self.pool['mail.compose.message'].create(
            cr, uid, {
                'model': self._name,
                'composition_mode': 'mass_mail',
                'template_id': template_id,
                'post': True,
                'notify': True,
            }, context=compose_ctx)
        self.pool['mail.compose.message'].write(
            cr, uid, [compose_id],
            self.pool['mail.compose.message'].onchange_template_id(
                cr, uid, [compose_id],
                template_id, 'mass_mail', self._name, False,
                context=compose_ctx)['value'],
            context=compose_ctx)
        self.pool['mail.compose.message'].send_mail(cr, uid, [compose_id], context=compose_ctx)
        return super(hr_holidays, self).holidays_refuse(cr, uid, ids, context=context)

Here is the three different template for Leave request,approve and refuse respectively.

        <!-- Templates for requesting leave -->
        <record id="leave_request" model="email.template">
            <field name="name">Leave Request</field>
            <field name="subject">Leave Application from ${object.employee_id.name} [${object.employee_id.employee_no}].</field>
            <field name="email_from">${object.employee_id.work_email}</field>
            <field name="email_to">${object.employee_id.parent_id.work_email}</field>
            <field name="model_id" ref="model_hr_holidays"/>
            <field name="user_signature" eval="0"/>
            <field name="body_html"><![CDATA[<p>Hi,</p>
            <p> ${object.employee_id.name} [${object.employee_id.employee_no}] has applied for a leave application.</p><br/>
            <p>Following are the applied leave details: </p>
            <p>Leave type: ${object.holiday_status_id.name}</p> 
            <p>From Date:  ${object.date_from}</p> 
            <p>To Date: ${object.date_to}</p> 
            <p>Number of days: ${object.number_of_days_temp}</p> 
            <p>Reason: ${object.name}</p> 
            <p>From Session: ${object.from_session}</p>
            <p>To Session: ${object.to_session}</p>
            <br/><br/>
            <p>Regards, ${object.employee_id.name}</p>
            ]]></field>
        </record>

        <!-- Templates for approving leave -->
        <record id="leave_approve" model="email.template">
            <field name="name">Leave Approved</field>
            <field name="subject">Your Leave Application has been Accepted.</field>
            <field name="email_from">${object.employee_id.parent_id.work_email}</field>
            <field name="email_to">${object.employee_id.work_email}</field>
            <field name="model_id" ref="model_hr_holidays"/>
            <field name="user_signature" eval="0"/>
            <field name="body_html"><![CDATA[<p>Hi ${object.employee_id.name} [${object.employee_id.employee_no}], </p>
            <p>Your leave application has been accepted.</p><br/>
            <p>Leave type: ${object.holiday_status_id.name}</p> 
            <p>From Date:  ${object.date_from}</p> 
            <p>To Date: ${object.date_to}</p> 
            <p>Number of days: ${object.number_of_days_temp}</p> 
            <p>Reason: ${object.name}</p> 
            <p>From Session: ${object.from_session}</p>
            <p>To Session: ${object.to_session}</p>
            <br/><br/>
            <p>Regards, ${object.employee_id.parent_id.name}</p>
            ]]></field>
        </record>

        <!-- Templates for refusing leave -->
        <record id="leave_refuse" model="email.template">
            <field name="name">Leave Refused</field>
            <field name="subject">Your Leave Application has been Refused.</field>
            <field name="email_from">${object.employee_id.parent_id.work_email}</field>
            <field name="email_to">${object.employee_id.work_email}</field>
            <field name="model_id" ref="model_hr_holidays"/>
            <field name="user_signature" eval="0"/>
           <field name="body_html"><![CDATA[<p>Hi ${object.employee_id.name} [${object.employee_id.employee_no}], </p>
            <p>Your leave application has been refused.</p><br/>
            <p>Leave type: ${object.holiday_status_id.name}</p> 
            <p>From Date:  ${object.date_from}</p> 
            <p>To Date: ${object.date_to}</p> 
            <p>Number of days: ${object.number_of_days_temp}</p> 
            <p>Reason: ${object.name}</p> 
            <p>From Session: ${object.from_session}</p>
            <p>To Session: ${object.to_session}</p>
            <br/><br/>
            <p>Regards, ${object.employee_id.parent_id.name}</p>
            ]]></field>
        </record>

Cheers !!!

Upvotes: 1

Related Questions