This question has been flagged
2 Replies
9392 Views

greetings all,

I need to send email notification to ship_owner (res.partner),when any field value is changed

This is my code fragment( .py file)

 ship_owner = fields.Many2one('res.partner', string="Ship Owner", ondelete='set null')
hull_number = fields.Char(string="Hull Number", size=64, track_visibility='onchange')   
engine_number = fields.Char(string="Engine Number", size=64, track_visibility='onchange', )   
name = fields.Char(string="Vessel Name", size=64, track_visibility='onchange')
.xml
<div class="oe_chatter">
    <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
    <field name="message_ids" widget="mail_thread"/>
this creates a log i need to send email at the same time when this log is created

 

Avatar
Discard
Best Answer

Hello 

you have added chatter it just creates a log but for sending an email you have write method also you have create email template as well.

below is the code which i have write to send an email when picking validates/done with template design you can create your own template design

@api.multi 

def make_pickings_auto_done(self):

        emails = []

        email_to = ''

        mail_mail = self.env['mail.mail']

        for pick in self:

            partner_ids = pick.message_follower_ids and \

                          pick.message_follower_ids.ids or []

            for partner in self.env['mail.followers'].browse(partner_ids):

                emails.append(partner.partner_id.email)

            product_dic = {}

            for picking_line in pick.pack_operation_product_ids:

                product_dic.update({str(picking_line.product_id.name) :

                                        picking_line.qty_done})

        for email in emails:

            email_to = email_to and email_to + ',' + email or email_to + email

        do = pick.name and pick.name or ""

        body_html = '''

                            <div>

                               <p>

                        Hello,

                        <br/><br/>

                            Delivery order ''' + do + ''' is move to done

                            state.

                            <br/><br/>

                            The details of shipping is as below.

                            <br/><br/>

                        </p>

                        <table border="1" cellpadding="5" cellspacing="1">

                        <tbody>

                            <tr>

                                <th>Delivery Order</th>

                                <th>Customer</th>

                                <th>Product</th>

                                <th>Qty</th>

                            </tr>'''

        for nm,qty in product_dic.iteritems():

            body_html += '''<tr>

                                <td>''' + do + '''</td>

                                <td>''' + pick.partner_id.name + '''</td>

                                <td>''' + nm + '''</td>

                                <td>''' + str(qty) +'''</td>

                            </tr>'''

        body_html += '''</tbody>

                        </table>'''

        mail_values = {

            'email_from': self.company_id.partner_id.email or

                          'noreply@localhost',

            'email_to': email_to,

            'subject': 'Delivery order ',

            'body_html': body_html,

            'state': 'outgoing',

            'message_type': 'email',

        }

        mail_id = mail_mail.create(mail_values)

        if mail_id:

            for mail in mail_id:

                # To avoid sending mail/notification multiple times

                return mail.send()

        else:

            return True


Avatar
Discard
Best Answer

Yes you can send email on the change of fields in odoo. I have a code that sends email on button click you can modify the method of button click to onchange method and that it. To get complete code and description read: http://learnopenerp.blogspot.com/2017/08/odoo-how-to-send-email-on-button-click.html

Avatar
Discard

Odoo how to send email on button click

just copy the method of sending email and use it in onchange method.

http://learnopenerp.blogspot.com/2017/08/odoo-how-to-send-email-on-button-click.html

Thanks