Skip to Content
Menú
This question has been flagged
1 Respondre
1814 Vistes

Hi there,

i want to automatically send an email to each customer for whom a delivery has been made with the following data.


the delivery note, the invoice and the Invoice in an excel format


thank you so much for the help

Avatar
Descartar
Best Answer

Hi,

Create a server action on the stock.picking model (Delivery Orders)

Trigger: On Validation (when the delivery is marked “Done”)

Action: Execute Python Code → send email with attachments.

for picking in records:

    if picking.picking_type_id.code == 'outgoing' and picking.state == 'done':

        # Get customer

        partner = picking.partner_id

        # Generate Delivery Slip PDF

        delivery_pdf = env['ir.actions.report']._render_qweb_pdf('stock.report_deliveryslip', picking.id)[0]

        # Get related invoices

        invoices = picking.sale_id.invoice_ids.filtered(lambda inv: inv.state == 'posted')

        attachments = []

        # Attach Delivery Slip

        attachments.append(('Delivery_Slip.pdf', delivery_pdf))

        for inv in invoices:

            # Invoice PDF

            inv_pdf = env['ir.actions.report']._render_qweb_pdf('account.report_invoice', inv.id)[0]

            attachments.append((f'Invoice_{inv.name}.pdf', inv_pdf))

            # Invoice Excel (custom report needed)

            inv_xlsx = env['ir.actions.report']._render_qweb_xlsx('your_module.report_invoice_xlsx', inv.id)[0]

            attachments.append((f'Invoice_{inv.name}.xlsx', inv_xlsx))

        # Send email

        mail = env['mail.mail'].create({

            'subject': f"Delivery and Invoice for {picking.name}",

            'body_html': f"<p>Dear {partner.name},<br/>Please find attached your delivery note and invoice.</p>",

            'email_to': partner.email,

            'attachment_ids': [

                (0, 0, {'name': fname, 'datas': base64.b64encode(data), 'res_model': 'mail.mail'})

                for fname, data in attachments

            ]

        })

        mail.send()


Hope it helps.

Avatar
Descartar
Related Posts Respostes Vistes Activitat
2
de març 25
1439
1
d’ag. 22
2952
2
de jul. 24
5307
2
d’abr. 20
5379
2
de maig 16
11195