2016-02-28 103 views
0

Odoo有報告部分,我想知道如何(如果它甚至可能)通過郵件發送報告(併爲其創建自動操作)?通過電子郵件自動發送報告openerp

假設我們必須crm.phonecall.report model,如何獲取信息並在電子郵件模板中使用它?我嘗試使用該模型製作電子郵件模板,然後添加與Phonecall分析中相同的XML文本,但這不起作用。所以所有的幫助真的很感激。

回答

0

以下代碼將足以滿足您提到的要求。它調用電子郵件模板,然後附加一個報告附件,最後發送一封電子郵件。

email = email_obj.browse(cr, uid, template_id) 
attachment_obj = self.pool.get('ir.attachment') 
ir_actions_report = self.pool.get('ir.actions.report.xml') 

matching_reports = ir_actions_report.search(
    cr, uid, [('name', '=', 'Report_Name_here')]) 

if matching_reports: 
    report = ir_actions_report.browse(cr, uid, matching_reports[0]) 
    report_service = 'report.' + report.report_name 
    service = netsvc.LocalService(report_service) 
    (result, format) = service.create(
     cr, uid, mrp_ids, {'model': self._name, 'start_date': start, 'end_date': end}, context=context) 

    if not report.attachment: 
     file_name = "Production Sale Report " + datetime.strftime(datetime.now().date(), "%Y-%m-%d") + ".pdf" 
     attachment_id = attachment_obj.create(cr, uid, 
               { 
                'name': file_name, 
                'datas': result, 
                'datas_fname': file_name, 
                'type': 'binary' 
               }, context=context) 

    email_obj.write(cr, uid, template_id, {'email_from': email.email_from, 
              'email_to': email.email_to, 
              'subject': email.subject, 
              'body_html': email.body_html, 
              'email_recipients': email.email_recipients, 
              'attachment_ids': [(6, 0, [attachment_id])], 
              }) 

    email_obj.send_mail(cr, uid, template_id, False, True, context=context) 

希望這能解決您的問題。乾杯

+0

我更想知道如何編寫QWeb報告本身。就像它在報告 - >電話分析[示例](http://i.imgur.com/juyqgs1.png)中所示。我希望發送這些報告(使用domain =「[('date','=',time.strftime('%Y-%m-%d')),('state','=','完成')])每天發送一封電子郵件,或者在郵件中使用? –