From 6186dc226692da67bafc0941ec32e118075c8dbf Mon Sep 17 00:00:00 2001 From: "Eteil Djoumatchoua (etdj)" Date: Mon, 2 Jan 2023 15:26:51 +0000 Subject: [PATCH] [FIX] sms: don't get error when sending an sms on sale order steps: - Go to Rental app - Open a rental Order - Click on Action - Send an SMS text message - Fill phone number and message - Sens SMS Issue: Traceback Cause: Sale order doesn't have a phone or mobile field so the sms.composer tries to write on it use "False" Solution ensure the field name isn't false before writing opw-3103232 closes odoo/odoo#110038 X-original-commit: 70a9995c9e02f36dc15d2723151ef0a205ebc12b Signed-off-by: Nicolas Lempereur (nle) Signed-off-by: Thibault Delavallee (tde) --- addons/sms/wizard/sms_composer.py | 4 +++- addons/test_mail_sms/tests/test_sms_composer.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py index ea78f730385..fa570734283 100644 --- a/addons/sms/wizard/sms_composer.py +++ b/addons/sms/wizard/sms_composer.py @@ -210,7 +210,9 @@ 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 self.recipient_single_number_itf and self.recipient_single_number_itf != self.recipient_single_number: + if not self.number_field_name: + 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}) return self._action_send_sms_comment(records=records) diff --git a/addons/test_mail_sms/tests/test_sms_composer.py b/addons/test_mail_sms/tests/test_sms_composer.py index a95de3cea55..2f999eb6912 100644 --- a/addons/test_mail_sms/tests/test_sms_composer.py +++ b/addons/test_mail_sms/tests/test_sms_composer.py @@ -220,6 +220,23 @@ class TestSMSComposerComment(TestSMSCommon, TestSMSRecipients): self.assertNoSMS() self.assertSMSIapSent(self.random_numbers_san, self._test_body) + def test_composer_sending_with_no_number_field(self): + test_record = self.env['mail.test.sms.partner'].create({'name': 'Test'}) + sms_composer = self.env['sms.composer'].create({ + 'body': self._test_body, + 'composition_mode': 'comment', + 'mass_force_send': False, + 'mass_keep_log': True, + 'number_field_name': False, + 'numbers': False, + 'recipient_single_number_itf': self.random_numbers_san[0], + 'res_id': test_record.id, + 'res_model': 'mail.test.sms.partner' + }) + with self.mockSMSGateway(): + sms_composer._action_send_sms() + self.assertSMSNotification([{'number': self.random_numbers_san[0]}], self._test_body) + class TestSMSComposerBatch(TestSMSCommon): @classmethod