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:
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:
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:
- Create a custom module to override the AccountMove email sending logic.
- 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!
Ping! I'd like to see an answer to this question as well.