Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odpovědět
1798 Zobrazení

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
Zrušit
Nejlepší odpověď

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
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
2
bře 25
1434
1
srp 22
2947
2
čvc 24
5302
2
dub 20
5375
2
kvě 16
11193