Ir al contenido
Menú
Se marcó esta pregunta

How can I set up multiple recipients for one specific customer when I send an invoice?


I want to achieve that as soon as I confirm the invoice for the customer and select "Send and Print" that multiple e-mail addresses are populated for delivery of the invoice without choosing different template.


Thank you,

Carlo 

Avatar
Descartar

Ping! I'd like to see an answer to this question as well.

Mejor respuesta

If the recipient list is not being populated with other "invoice" addresses despite following the configuration steps, there are a few areas to check and troubleshoot. Here's how to address the issue:

1. Verify Contact Configuration:

  • Go to the Contacts app and open the customer's contact.
  • Ensure the additional contacts are properly linked under the Contacts & Addresses section.
  • Confirm that:
    • Type is set to Invoice or Other.
    • The Email field is not empty and contains valid email addresses.

Common Issue: If the Type is not set correctly or left blank, Odoo will not consider the contact for invoicing purposes.

2. Review Email Template Configuration:

  • Go to Settings > Technical > Email Templates and edit the invoice template (Account: Send by email).
  • In the To (Emails) field, replace the content with this expression:
    ${', '.join([o.partner_id.email] + o.partner_id.child_ids.filtered(lambda c: c.type in ['invoice', 'other']).mapped('email'))}
    
    • This ensures the main contact and all associated contacts with the Invoice or Other type are included.
  • Save the template and retry sending an invoice.

Common Issue: The default template may not be dynamically fetching child contacts. This modification ensures it does.

3. Check Automated Email Sending Logic:

  • Enable Developer Mode:
    • Go to Settings > Activate the Developer Mode.
  • Navigate to Settings > Technical > Automated Actions.
  • Verify if there are any automated actions or custom logic overriding the email behavior for invoices. Disable conflicting automated actions if found.

4. Inspect the Logs:

  • Check the Odoo server logs for errors during the email sending process.
  • Look for indications of why child contacts are not included.

5. Test with a Custom Python Script:

  • If the issue persists, add a small Python script to verify contact fetching:
    • Go to Settings > Technical > Actions > Server Actions.
    • Create a new server action and use the following script to fetch and log emails:
      contact_emails = [record.partner_id.email] + record.partner_id.child_ids.filtered(lambda c: c.type in ['invoice', 'other']).mapped('email')
      raise UserError("Emails: %s" % ', '.join(contact_emails))
      
    • Assign this action to trigger on invoice confirmation and review the output.

6. Validate Module Integrity:

  • Ensure no third-party module or customizations are interfering with the standard behavior of the email template or recipient fetching logic.
  • Temporarily disable third-party modules and test the functionality.

Alternative Solution:

If the issue remains unresolved, you can use custom development as a workaround:

  1. Create a custom module to override the AccountMove email sending logic.
  2. Customize the recipient-fetching logic to include all child contacts.

Sample Code:

from odoo import models

class AccountMove(models.Model):
    _inherit = 'account.move'

    def _message_get_default_recipients(self):
        res = super(AccountMove, self)._message_get_default_recipients()
        for record in self:
            child_emails = record.partner_id.child_ids.filtered(lambda c: c.type in ['invoice', 'other']).mapped('email')
            if child_emails:
                res[record.id]['email_to'] = ', '.join([res[record.id]['email_to']] + child_emails)
        return res

This ensures all "invoice" contacts are always included in the email recipients.

If these steps don't resolve the issue, let me know the specifics (e.g., any error messages or unexpected behavior) to refine the solution further!

Avatar
Descartar
Autor

It does not work for me. Recipient list is not populated with other "invoice" addresses only default one.

Autor

I see that you changed code. I will try with next invoice. Also, I am testing this on production enviroment, and I didn't confirm new invoice. Instead, I used "Send and Print" for already posted invoice. Will that work? This logic should work every time I call "Send and Print"?

Publicaciones relacionadas Respuestas Vistas Actividad
2
oct 23
2176
1
abr 25
1378
Odoo App Resuelto
1
nov 23
1942
1
mar 24
1475
0
may 24
1675