我想生成一个自动报告,并在每个月的第一天使用电子邮件模板将其发送到特定的电子邮件。
我正在考虑使用:
我编写了 get_data()方法,以便从所有位置获取 power_difference 值。问题是当我调用 send_mail()方法时。我的self.id变量等于False,因此我理解无法呈现邮件模板。
我做错了什么?我从get_data()方法获得了所需的一切,但问题是如何将记录值传递给邮件模板并发送电子邮件。
get_data()方法:
@api.model
def get_data(self):
locations = self.env['stock.location'].search([('id','child_of',[361]),('usage','=','view')]
records=[]
location_power_changes={}
for location in locations:
power = location.power
location.power_difference = location.last_month_power - power
location.last_month_power = power
location_changes['power_difference'] = location.power_difference
records.append(location_power_changes)
template = self.env.ref('t_stock.email_template_1')
self.env['mail.template'].browse(template.id).send_mail(self.id)
邮件模板
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data noupdate="1">
<record id="email_template_t" model="mail.template">
<field name="name">T</field>
<field name="email_from">example@mail.com</field>
<field name="email_to">example1@mail.com</field>
<field name="model_id" ref="t_stock.model_stock_location"/>
<field name="body_html"><![CDATA[
<p>Test</p>
<table>
<tbody>
<tr>
<th>T1</th>
</tr>
% if object.get_data():
% for values in object.get_data()
<tr>
<td>${values['power_difference']}</td>
</tr>
% endfor
% endif
</tbody></table><br>
]]></field>
</record>
</data>
</openerp>