Clean-up code for one2many_phone
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Base Partner One2many Phone',
|
'name': 'Base Partner One2many Phone',
|
||||||
'version': '0.1',
|
'version': '10.0.1.0.0',
|
||||||
'category': 'Phone',
|
'category': 'Phone',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'summary': 'One2many link between partners and phone numbers',
|
'summary': 'One2many link between partners and phone numbers',
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.addons.base_phone.fields import Phone, Fax
|
from odoo.addons.base_phone.fields import Phone, Fax
|
||||||
|
import phonenumbers
|
||||||
|
|
||||||
|
|
||||||
class ResPartnerPhone(models.Model):
|
class ResPartnerPhone(models.Model):
|
||||||
@@ -30,21 +31,41 @@ class ResPartnerPhone(models.Model):
|
|||||||
class ResPartner(models.Model):
|
class ResPartner(models.Model):
|
||||||
_inherit = 'res.partner'
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
@api.one
|
@api.model
|
||||||
|
def convert_from_international_to_e164(self, phone_num):
|
||||||
|
res = False
|
||||||
|
try:
|
||||||
|
res_parse = phonenumbers.parse(phone_num)
|
||||||
|
res = phonenumbers.format_number(
|
||||||
|
res_parse, phonenumbers.PhoneNumberFormat.E164)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return res
|
||||||
|
# without this convert, we would have in DB:
|
||||||
|
# E.164 format in res_partner_phone table
|
||||||
|
# phonenumbers.PhoneNumberFormat.INTERNATIONAL in res_partner
|
||||||
|
# TODO bug: but even with this, it doesn't work, the format
|
||||||
|
# is stored in international format in res_partner
|
||||||
|
# => I'll try to find the reason later
|
||||||
|
|
||||||
|
@api.multi
|
||||||
@api.depends('phone_ids.phone', 'phone_ids.type')
|
@api.depends('phone_ids.phone', 'phone_ids.type')
|
||||||
def _compute_partner_phone(self):
|
def _compute_partner_phone(self):
|
||||||
|
for partner in self:
|
||||||
phone = mobile = fax = False
|
phone = mobile = fax = False
|
||||||
for partner_phone in self.phone_ids:
|
for partner_phone in partner.phone_ids:
|
||||||
not_phone_type = ('2_mobile', '4_home_fax', '5_office_fax')
|
num_e164 = self.convert_from_international_to_e164(
|
||||||
if partner_phone.type not in not_phone_type:
|
partner_phone.phone)
|
||||||
phone = partner_phone.phone
|
if num_e164:
|
||||||
if partner_phone.type == '2_mobile':
|
if partner_phone.type == '2_mobile':
|
||||||
mobile = partner_phone.phone
|
mobile = num_e164
|
||||||
if partner_phone.type in ('5_office_fax', '4_home_fax'):
|
elif partner_phone.type in ('5_office_fax', '4_home_fax'):
|
||||||
fax = partner_phone.phone
|
fax = num_e164
|
||||||
self.phone = phone
|
else:
|
||||||
self.mobile = mobile
|
phone = num_e164
|
||||||
self.fax = fax
|
partner.phone = phone
|
||||||
|
partner.mobile = mobile
|
||||||
|
partner.fax = fax
|
||||||
|
|
||||||
phone_ids = fields.One2many(
|
phone_ids = fields.One2many(
|
||||||
'res.partner.phone', 'partner_id', string='Phones')
|
'res.partner.phone', 'partner_id', string='Phones')
|
||||||
|
|||||||
Reference in New Issue
Block a user