From 16bb22f5fc3a97e216ca91ef1f5bb9ec14c33cdc Mon Sep 17 00:00:00 2001 From: "Eteil Djoumatchoua(etdj)" Date: Tue, 16 May 2023 07:21:18 +0000 Subject: [PATCH] [FIX] sms: send SMS on transfer without traceback Steps to reproduce: - Create a SMS template with the 'Applies to' property set to Transfer (without this the action will never appear) - Go to Transfer, pick one, open action and try to send a SMS Issue: Traceback Cause: When sending the SMS we try to modify the 'mobile' attribute of 'stock.picking' but it doesn't exist. opw-3286153 X-original-commit: c84f952824bea4c1e0d5dcc7450d5e48a5637db8 Part-of: odoo/odoo#123716 --- addons/sms/wizard/sms_composer.py | 2 +- .../test_mail_sms/tests/test_sms_composer.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py index fa570734283..6bdaf0d03f6 100644 --- a/addons/sms/wizard/sms_composer.py +++ b/addons/sms/wizard/sms_composer.py @@ -210,7 +210,7 @@ class SendSMS(models.TransientModel): # on the numbers in the database. records = records if records is not None else self._get_records() records.ensure_one() - if not self.number_field_name: + if not self.number_field_name or self.number_field_name not in records: self.numbers = self.recipient_single_number_itf or self.recipient_single_number elif self.recipient_single_number_itf and self.recipient_single_number_itf != self.recipient_single_number: records.write({self.number_field_name: self.recipient_single_number_itf}) diff --git a/addons/test_mail_sms/tests/test_sms_composer.py b/addons/test_mail_sms/tests/test_sms_composer.py index fbf05a81729..c03cc948eb9 100644 --- a/addons/test_mail_sms/tests/test_sms_composer.py +++ b/addons/test_mail_sms/tests/test_sms_composer.py @@ -121,6 +121,25 @@ class TestSMSComposerComment(SMSCommon, TestSMSRecipients): self.assertSMSNotification([{'partner': self.test_record.customer_id, 'number': self.test_record.mobile_nbr}], 'Dear %s this is an SMS.' % self.test_record.display_name, messages) + def test_composer_comment_invalid_field(self): + """ Test the Send Message in SMS Composer when a Model does not contain a number field name """ + test_record = self.env['mail.test.sms.partner'].create({ + 'name': 'Test', + 'customer_id': self.partner_1.id, + }) + sms_composer = self.env['sms.composer'].create({ + 'body': self._test_body, + 'number_field_name': 'phone_nbr', + 'recipient_single_number_itf': self.random_numbers_san[0], + 'res_id': test_record.id, + 'res_model': 'mail.test.sms.partner' + }) + + self.assertNotIn(','.join(test_record._fields), 'phone_nbr') + with self.mockSMSGateway(): + sms_composer._action_send_sms() + self.assertSMSNotification([{'number': self.random_numbers_san[0]}], self._test_body) + def test_composer_comment_nofield(self): """ Test the Send Message in SMS Composer when a Model does not contain any phone number related field """ test_record = self.env['mail.test.sms.partner'].create({'name': 'Test'})