Я хотел бы создать автоматический отчет и первого числа каждого месяца отправлять его на конкретное электронное письмо, используя шаблон электронной почты.
Я думаю использовать:
- ir.cron объект для автоматического вызова метода первого числа каждого месяца
- stock.location объект с методом get_data () для получения данных
- mail.template объект для отправки данных для конкретного пользователя по электронной почте.
Я написал get_data () метод для получения power_difference значений из всех местоположений.Проблема в том, что я вызываю метод send_mail () .Моя переменная self.id равна False, так как я понимаю, что почтовый шаблон не может быть обработан.
Что я делаю не так?Я получаю все, что мне нужно, от метода get_data (), но проблема в том, как передать records value в почтовый шаблон и отправить электронное письмо.
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>