[FIX] repair : send email to author when included

When we include the author in the recipients of the quotation email of a repair order he doesn't receive the email.

Steps to reproduce the error :
1- create a repiar order
2- add the author in the list of recipients
3- send the email

The origin of the problem is that mail_notify_author=False , se we need to add it as True when we have the author in the recipients.

Similar old fix : https://github.com/odoo/odoo/commit/f49dbf595c870b682f36c11443c9cf1a9a027474

opw-3295744

closes odoo/odoo#126986

X-original-commit: d4d48526867e93295d93d4504e824cfdc2b146a7
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: Mahdi Cheikh Rouhou (macr) <macr@odoo.com>
This commit is contained in:
Mahdi Cheikh Rouhou (macr)
2023-06-30 20:13:43 +02:00
parent bfbf92d4f5
commit 699ba2d782
3 changed files with 42 additions and 0 deletions
+1
View File
@@ -7,3 +7,4 @@ from . import stock_traceability
from . import stock_lot
from . import account_move
from . import product
from . import mail_compose_message
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class MailComposeMessage(models.TransientModel):
_inherit = 'mail.compose.message'
def _action_send_mail(self, auto_commit=False):
if self.model == 'repair.order':
self = self.with_context(mail_notify_author=self.env.user.partner_id in self.partner_ids)
return super(MailComposeMessage, self)._action_send_mail(auto_commit=auto_commit)
+28
View File
@@ -386,3 +386,31 @@ class TestRepair(AccountTestInvoicingCommon):
('company_id', '=', repair.company_id.id),
], limit=1)
self.assertEqual(repair.operations[0].location_dest_id, location_dest_id)
def test_repair_order_send_to_self(self):
# when sender(logged in user) is also present in recipients of the mail composer,
# user should receive mail.
product_to_repair = self.product_product_5
partner = self.res_partner_address_1
repair_order = self.env['repair.order'].with_user(self.env.user).create({
'product_id': product_to_repair.id,
'product_uom': product_to_repair.uom_id.id,
'address_id': partner.id,
'guarantee_limit': '2019-01-01',
'location_id': self.stock_warehouse.lot_stock_id.id,
'partner_id': self.env.user.partner_id.id
})
email_ctx = repair_order.action_send_mail().get('context', {})
# We need to prevent auto mail deletion, and so we copy the template and send the mail with
# added configuration in copied template. It will allow us to check whether mail is being
# sent to to author or not (in case author is present in 'Recipients' of composer).
mail_template = self.env['mail.template'].browse(email_ctx.get('default_template_id')).copy({'auto_delete': False})
# send the mail with same user as customer
repair_order.with_context(**email_ctx).with_user(self.env.user).message_post_with_source(
mail_template,
subtype_xmlid='mail.mt_comment',
)
mail_message = repair_order.message_ids[0]
self.assertEqual(mail_message.author_id, repair_order.partner_id, 'Repair: author should be same as customer')
self.assertEqual(mail_message.author_id, mail_message.partner_ids, 'Repair: author should be in composer recipients thanks to "partner_to" field set on template')
self.assertEqual(mail_message.partner_ids, mail_message.sudo().mail_ids.recipient_ids, 'Repair: author should receive mail due to presence in composer recipients')