This question has been flagged
2 Replies
18193 Views

Hello, anyone have any idea of how to automatically attach a report to an email like Sale> Quote> Email? what is the relationship of this with the "edi" module?

Avatar
Discard
Best Answer

Yes you can use schedulers to send e-mails with attachment automatically (here reports) or you can configure the email template to attach reports automatically. For example: I have created a scheduler on model student.student as

 <?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <record model="ir.cron" id="cronjob_student_mail_scheduler">
            <field name='name'>Send Email on Intervals</field>
            <field name='interval_number'>1</field>
            <field name='interval_type'>months</field>
            <field name="numbercall">-1</field>
            <field name="active">False</field>
            <field name="doall" eval="False" />
            <field name="model">student.student</field>
            <field name="function">send_mail</field>
            <field name="args">(None,)</field>
        </record>
    </data>
</openerp>

and it calls the send_mail method in student.student model and the method is

def send_mail(self, cr, uid, ids,  cron_mode=True, context=None):
        print '================send email=================='
        template_id=self.pool.get('email.template').search(cr, uid, [('name', '=', 'Student Details - Send by Email')], context=context)[0]
        print '........template id..........', template_id
        email_obj=self.pool.get('email.template').send_mail(cr, uid, template_id, ids[0], force_send=True)
        print 'email_obj................', email_obj

and I have created an email template as

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data noupdate="1">
        <!--Email template -->
        <record id="email_template_student_details" model="email.template">
            <field name="name">Student Details - Send by Email</field>
            <field name="email_from">gopakumar@zbeanztech.com</field>
            <field name="subject">Welcome</field>
            <field name="email_to">${object.email}</field>
            <field name="model_id" ref="model_student_student"/>
            <field name="auto_delete" eval="True"/>
            <field name="report_template" ref="student_report.student_report"/>
            <field name="report_name">${(object.partner_id.name)}_Details</field>
            <field name="lang">${object.partner_id.lang}</field>
            <field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
    <p>Hello ${object.partner_id.name},</p>

    <p>You have been registered in the ${object.user_id.company_id.name} with the following details.</p>

    <p style="border-left: 1px solid #8e0000; margin-left: 30px;">
        &nbsp;&nbsp;Admission Number: <strong>${object.admit_no}</strong><br />
        &nbsp;&nbsp;University Number: <strong>${object.exam_reg_no}</strong><br />
        &nbsp;&nbsp;Programme: <strong>${object.programme_id.name}</strong><br />
        &nbsp;&nbsp;Grade: <strong>${object.grade_id.name}</strong><br />
        &nbsp;&nbsp;Area: <strong>${object.area_id.name}</strong><br />
        &nbsp;&nbsp;Division: <strong>${object.division_id.name}</strong><br />
    </p>

    <p>Please find the attachment.</p>
    <p>Thanks</p>

</div>            
            ]]></field>
        </record>
    </data>
</openerp>

and in that template I have specified the report student_report in the module student_report (<field name="report_template" ref="student_report.student_report"/>)

So on executing the scheduler the email will be send with the report as attachment.

Avatar
Discard
Author Best Answer

Ok thanks for your answer, but I don't understand thi line : <field name="model_id" ref="model_student_student"/> model_student_student is the id of what model?

Avatar
Discard

It is the model student.student and it should be given in the model_id field of email template as 'model_student_student'

Is there a way to add the 'form' keyword to the 'datas' dictionary that is used in the email.template send_mail method?

Want to use the same report that is triggered by a button via: datas = { 'ids': [], 'model': 'timesheet.timesheet', 'form': data } return { 'type': 'ir.actions.report.xml', 'report_name': 'timesheet.monthly.report', 'datas': datas, }