[FIX] sms: use partners on record to send sms

To reproduce
============
- create sms template and apply it to a module different than `res.partner`
for example Tasks
- add context action
- create a task and select a customer that has a phone number
- from action try to send the sms, an error is displayed

Problem
=======
when computing the receipient info, the partner on the record is not taken
into account.

opw-3475456

closes odoo/odoo#137014

X-original-commit: 6e6a8c24c3ab1a6b3ff27564f4244ed3d6b4c022
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Abdelouahab (abla)
2023-09-29 08:07:04 +00:00
parent efea7e13c5
commit f69f3623d9
2 changed files with 15 additions and 2 deletions
+1 -1
View File
@@ -135,7 +135,7 @@ class SendSMS(models.TransientModel):
composer.recipient_single_number = ''
continue
records.ensure_one()
res = records._sms_get_recipients_info(force_field=composer.number_field_name, partner_fallback=False)
res = records._sms_get_recipients_info(force_field=composer.number_field_name, partner_fallback=True)
composer.recipient_single_description = res[records.id]['partner'].name or records._mail_get_partners()[records[0].id].display_name
composer.recipient_single_number = res[records.id]['number'] or ''
@@ -154,6 +154,7 @@ class TestSMSComposerComment(SMSCommon, TestSMSRecipients):
self.assertSMSNotification([{'number': self.random_numbers_san[0]}], self._test_body)
def test_composer_default_recipient(self):
""" Test default description of SMS composer must be partner name"""
self.test_record.write({
'phone_nbr': '0123456789',
})
@@ -165,9 +166,21 @@ class TestSMSComposerComment(SMSCommon, TestSMSRecipients):
'number_field_name': 'phone_nbr',
})
self.assertFalse(composer.recipient_single_valid)
self.assertEqual(composer.recipient_single_description, self.test_record.customer_id.display_name)
def test_composer_nofield_w_customer(self):
""" Test SMS composer without number field, the number on partner must be used instead"""
with self.with_user('employee'):
composer = self.env['sms.composer'].with_context(
default_res_model='mail.test.sms', default_res_id=self.test_record.id,
).create({
'body': self._test_body,
})
self.assertTrue(composer.recipient_single_valid)
self.assertEqual(composer.recipient_single_number, self.test_numbers[1])
self.assertEqual(composer.recipient_single_number_itf, self.test_numbers[1])
def test_composer_internals(self):
with self.with_user('employee'):
composer = self.env['sms.composer'].with_context(