如何在odoo中为电子邮件模板设置不同的消息?

时间:2015-07-16 05:51:18

标签: odoo odoo-8 openerp-8

我创建了一个自定义模块,并使用了日历对象来创建一个事件,代码如下

def create_calender_event(self,cr,uid,ids,context=None):
    calendar_obj = self.pool.get('calendar.event')      
    for rec in self.browse(cr,uid,ids,context=context):
        if rec.action:
            for rec_res in rec.action:
                calendar_obj.create(cr,uid,{'name' : rec_res.act_ion,
                    'user_id' : rec_res.asgnd_to.id,
                    'start_date' : rec_res.due_date,
                    'stop_date' : rec_res.due_date,
                    'allday' : True,
                    'partner_ids' : [(6,0, [rec_res.asgnd_to.partner_id.id])]
                },context=context)

这将在相应用户的日历中创建一个事件,但它使用默认模板消息。

如何通过自定义消息替换日历邀请模板消息?

2 个答案:

答案 0 :(得分:3)

你可以从py文件

这样做

1)获取template_id并浏览对象
2)模板体将存储在'body_html'字段中 3)将body_html字段存储在一个变量中,让我们说: old_body
4)然后将您的自定义代码添加到模板的'body_html'字段,并使用上面的temlate_id将值写入模板 5)使用发送方法发送邮件
6)然后将 old_body 值写回模板。

只是为了想法,请参考....

template_id = template_pool.search(cr,uid,[('name','= ilike',template_name)])
                if template_id:
                    template_obj = template_pool.browse(cr,uid,template_id)
                    body = template_obj.body_html
                    body_old = body
                    count = 0

                    body + =“

%s学习笔记PDF 点击这里

”%(url ['subject'],url ['url'])
                    template_pool.write(cr,uid,template_id,{'body_html':body})
                    template_pool.send_mail(cr,uid,template_id [0],record.id)
                    template_pool.write(cr,uid,template_id,{'body_html': body_old})

答案 1 :(得分:0)

这是带有xml id“calendar_template_meeting_invitation”的电子邮件模板,用于发送邀请。所以找到这个模板并改变你想要的任何东西。在模板下,它被称为“会议邀请”电子邮件模板。

OLD ===================

更新================================

<{1>}对象calendar.event上的

create方法调用方法write,通过调用方法create_attendees {{3}创建所有与会者并发送电子邮件邀请因此,您需要重载该函数并重新调用该语句,以便在创建与会者时不发送电子邮件,而是在您需要时发送邀请。

贝斯茨