Odoo создать автоматический отчет и отправить его конкретному пользователю, используя шаблон электронной почты - PullRequest
0 голосов
/ 21 мая 2018

Я хотел бы создать автоматический отчет и первого числа каждого месяца отправлять его на конкретное электронное письмо, используя шаблон электронной почты.

Я думаю использовать:

  • 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>
...