diff --git a/addons/crm_phone_validation/__manifest__.py b/addons/crm_phone_validation/__manifest__.py index 7c729bfae3e..72a21dbfcfa 100644 --- a/addons/crm_phone_validation/__manifest__.py +++ b/addons/crm_phone_validation/__manifest__.py @@ -13,6 +13,7 @@ CRM Phone Numbers Validation This module allows for validate and format phone numbers for leads and contacts.""", 'data': [ 'views/res_config_settings_views.xml', + 'views/crm_lead_views.xml' ], 'depends': [ 'phone_validation', diff --git a/addons/crm_phone_validation/models/crm_lead.py b/addons/crm_phone_validation/models/crm_lead.py index a652f1bd5ca..76c1617c5f2 100644 --- a/addons/crm_phone_validation/models/crm_lead.py +++ b/addons/crm_phone_validation/models/crm_lead.py @@ -8,13 +8,12 @@ class Lead(models.Model): _name = 'crm.lead' _inherit = ['crm.lead', 'phone.validation.mixin'] - @api.onchange('phone', 'country_id') + @api.onchange('phone', 'country_id', 'company_id') def _onchange_phone_validation(self): if self.phone: self.phone = self.phone_format(self.phone) - @api.onchange('mobile', 'country_id') + @api.onchange('mobile', 'country_id', 'company_id') def _onchange_mobile_validation(self): if self.mobile: self.mobile = self.phone_format(self.mobile) - diff --git a/addons/crm_phone_validation/models/res_partner.py b/addons/crm_phone_validation/models/res_partner.py index 97f5eaf891d..5328fe9e7d8 100644 --- a/addons/crm_phone_validation/models/res_partner.py +++ b/addons/crm_phone_validation/models/res_partner.py @@ -8,12 +8,12 @@ class Contact(models.Model): _name = 'res.partner' _inherit = ['res.partner', 'phone.validation.mixin'] - @api.onchange('phone', 'country_id') + @api.onchange('phone', 'country_id', 'company_id') def _onchange_phone_validation(self): if self.phone: self.phone = self.phone_format(self.phone) - @api.onchange('mobile', 'country_id') + @api.onchange('mobile', 'country_id', 'company_id') def _onchange_mobile_validation(self): if self.mobile: self.mobile = self.phone_format(self.mobile) diff --git a/addons/crm_phone_validation/views/crm_lead_views.xml b/addons/crm_phone_validation/views/crm_lead_views.xml new file mode 100644 index 00000000000..bcf1840bd7a --- /dev/null +++ b/addons/crm_phone_validation/views/crm_lead_views.xml @@ -0,0 +1,13 @@ + + + + crm.lead.form.opportunity.inherit.crm.phone.validation + crm.lead + + + + + + + + diff --git a/addons/phone_validation/models/phone_validation_mixin.py b/addons/phone_validation/models/phone_validation_mixin.py index 1003ab929f2..4cd9d8eb2bb 100644 --- a/addons/phone_validation/models/phone_validation_mixin.py +++ b/addons/phone_validation/models/phone_validation_mixin.py @@ -11,20 +11,21 @@ class PhoneValidationMixin(models.AbstractModel): def _phone_get_country(self): if 'country_id' in self: return self.country_id - return self.env.user.company_id.country_id def _phone_get_always_international(self): - if 'company_id' in self: + if 'company_id' in self and self.country_id: return self.company_id.phone_international_format == 'prefix' return self.env.user.company_id.phone_international_format == 'prefix' def phone_format(self, number, country=None, company=None): country = country or self._phone_get_country() + if not country: + return number always_international = company.phone_international_format == 'prefix' if company else self._phone_get_always_international() return phone_validation.phone_format( number, country.code if country else None, country.phone_code if country else None, always_international=always_international, - raise_exception=True + raise_exception=False ) diff --git a/addons/phone_validation/tools/phone_validation.py b/addons/phone_validation/tools/phone_validation.py index 940c4300f26..7ca7bed6ea8 100644 --- a/addons/phone_validation/tools/phone_validation.py +++ b/addons/phone_validation/tools/phone_validation.py @@ -41,7 +41,7 @@ try: if raise_exception: raise else: - _logger.warning(_('Unable to format %s:\n%s') % number, e) + _logger.warning(_('Unable to format %s:\n%s'), number, e) return number if always_international or phone_nbr.country_code != country_phone_code: phone_fmt = phonenumbers.PhoneNumberFormat.INTERNATIONAL