Skip to content

Commit

Permalink
Merge pull request odoo#11 from rruebner/8.0-partner-address
Browse files Browse the repository at this point in the history
[IMP] Removed no longer needed functions, updated partner / company s…
  • Loading branch information
kaerdsar committed Aug 15, 2016
2 parents 1fae623 + adbe49b commit 412f69b
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 214 deletions.
4 changes: 2 additions & 2 deletions addons/base_partner_address/i18n/de.po
Expand Up @@ -75,6 +75,7 @@ msgstr "Land"

#. module: base_partner_address
#: field:res.partner.email,name:0
#: view:res.partner:base_partner_address.view_partner_form
msgid "Email"
msgstr "E-Mail"

Expand Down Expand Up @@ -280,6 +281,7 @@ msgstr "Nummer"
#. module: base_partner_address
#: field:res.partner.address,phone:0
#: selection:res.partner.phone,type:0
#: view:res.partner:base_partner_address.view_partner_form
msgid "Phone"
msgstr "Telefon"

Expand All @@ -297,13 +299,11 @@ msgstr "Fax"

#. module: base_partner_address
#: field:res.partner,partner_phone_ids:0
#: view:res.partner:base_partner_address.view_partner_form
msgid "Phones"
msgstr "Telefonnummern"

#. module: base_partner_address
#: field:res.partner,partner_email_ids:0
#: view:res.partner:base_partner_address.view_partner_form
msgid "Email Addresses"
msgstr "E-Mail Adressen"

Expand Down
201 changes: 100 additions & 101 deletions addons/base_partner_address/models/res_company.py
Expand Up @@ -26,126 +26,125 @@ class ResCompany(models.Model):
_inherit = 'res.company'

street = fields.Char(compute='_get_address_data',
inverse='_set_address_data')
inverse='_set_address_street')
street2 = fields.Char(compute='_get_address_data',
inverse='_set_address_data')
zip = fields.Char(compute='_get_address_data', inverse='_set_address_data')
inverse='_set_address_street2')
zip = fields.Char(compute='_get_address_data', inverse='_set_address_zip')
city = fields.Char(compute='_get_address_data',
inverse='_set_address_data')
inverse='_set_address_city')
state_id = fields.Many2one(compute='_get_address_data',
inverse='_set_address_data')
inverse='_set_address_state_id')
country_id = fields.Many2one(compute='_get_address_data',
inverse='_set_address_data')
inverse='_set_address_country_id')
email = fields.Char(compute='_get_address_data',
inverse='_set_address_data', store=True)
inverse='_set_email_data', store=True)
phone = fields.Char(compute='_get_address_data',
inverse='_set_address_data', store=True)
fax = fields.Char(compute='_get_address_data', inverse='_set_address_data')
inverse='_set_phone_phone', store=True)
fax = fields.Char(compute='_get_address_data', inverse='_set_phone_fax')

@api.depends('partner_id')
def _get_address_data(self):
"""Read address, phone and email functional fields."""
for rec in self:
street = street2 = zip = city = email = phone = fax = ''
state_id = country_id = False
if rec.partner_id:
address = rec.partner_id.preferred_address
if address:
street = address.street
street2 = address.street2
zip = address.zip
city = address.city
state_id = address.state_id and \
rec.street = address.street
rec.street2 = address.street2
rec.postcode = address.zip
rec.city = address.city
rec.state_id = address.state_id and \
address.state_id.id or False
country_id = address.country_id and \
rec.country_id = address.country_id and \
address.country_id.id or False
email = rec.partner_id.email
phone_rec = rec.partner_id.get_phone('phone')
if phone_rec:
phone = phone_rec.name
fax_rec = rec.partner_id.get_phone('fax')
if fax_rec:
fax = fax_rec.name

rec.street = street
rec.street2 = street2
rec.zip = zip
rec.city = city
rec.email = email
rec.phone = phone
rec.fax = fax
rec.state_id = state_id
rec.country_id = country_id

def _set_address_data(self):
"""Write address, phone and email functional fields."""
rec.phone = phone_rec and phone_rec.name or ''
rec.fax = fax_rec and fax_rec.name or ''
rec.email = rec.partner_id.email

def _set_address_street(self):
for rec in self:
if rec.partner_id:
# add / update address data
address = rec.partner_id.preferred_address
address_data = {
'street': rec.street,
'street2': rec.street2,
'zip': rec.zip,
'city': rec.city,
'state_id': rec.state_id and rec.state_id.id or False,
'country_id': rec.country_id and rec.country_id.id or False
}
if address:
address.write(address_data)
else:
address_data.update({
'name': rec.partner_id.name,
'type': 'business',
'partner_id': rec.partner_id.id
})
self.env['res.partner.address'].create(address_data)

# add / update email data
email_rec = self.env['res.partner.email'].sudo().search(
[('partner_id', '=', rec.partner_id.id),
('name', '=', rec.email), ('type', '=', 'business')],
limit=1)
email_data = {
'name': rec.email
}
if email_rec:
email_rec.write(email_data)
else:
if rec.partner_id.partner_email_ids:
rec.partner_id.partner_email_ids.write(
{'preferred': False})
email_data.update({
'type': 'business',
'partner_id': rec.partner_id.id,
'preferred': True
})
self.env['res.partner.email'].create(email_data)
rec._set_address_data('street', rec.street)

# add / update phone data
phone_rec = rec.partner_id.get_phone('phone')
phone_data = {
'name': rec.phone
}
if phone_rec:
phone_rec.write(phone_data)
else:
phone_data.update({
'type': 'phone',
'partner_id': rec.partner_id.id
})
self.env['res.partner.phone'].create(phone_data)
def _set_address_street2(self):
for rec in self:
rec._set_address_data('street2', rec.street2)

# add / update fax data
fax_rec = rec.partner_id.get_phone('fax')
fax_data = {
'name': rec.fax
}
if fax_rec:
fax_rec.write(fax_data)
else:
fax_data.update({
'type': 'fax',
'partner_id': rec.partner_id.id
def _set_address_zip(self):
for rec in self:
rec._set_address_data('zip', rec.zip)

def _set_address_city(self):
for rec in self:
rec._set_address_data('city', rec.city)

def _set_address_state_id(self):
for rec in self:
rec._set_address_data('state_id', rec.state_id)

def _set_address_country_id(self):
for rec in self:
rec._set_address_data('country_id', rec.country_id)

def _set_address_data(self, name, value):
if name in ['state_id', 'country_id']:
value = value.id
address = self.partner_id.preferred_address
if address:
address.write({name: value})
if address.is_empty():
address.unlink()
else:
self.env['res.partner.address'].create({
'partner_id': self.partner_id.id,
'type': 'business',
'preferred': True,
name: value
})

def _set_phone_phone(self):
for rec in self:
rec._set_phone_data('phone', rec.phone)

def _set_phone_fax(self):
for rec in self:
rec._set_phone_data('fax', rec.fax)

def _set_phone_data(self, phone_type, value):
phone_rec = self.partner_id.get_phone(phone_type)
if phone_rec and not value:
phone_rec.unlink()
elif phone_rec and value:
phone_rec.write({'name': value})
elif not phone_rec and value:
self.env['res.partner.phone'].create({
'partner_id': self.partner_id.id,
'type': phone_type,
'name': value
})

def _set_email_data(self):
for rec in self:
email = rec.email
email_rec = self.env['res.partner.email'].sudo().search(
[('partner_id', '=', rec.partner_id.id),
('type', '=', 'business')])
if email_rec and not email:
email_rec.unlink()
if rec.partner_id.partner_email_ids:
rec.partner_id.partner_email_ids[0].write({
'preferred': True
})
self.env['res.partner.phone'].create(fax_data)
elif email_rec and email:
email_rec.write({'name': email})
elif not email_rec and email:
if rec.partner_id.partner_email_ids:
rec.partner_id.partner_email_ids.write(
{'preferred': False})
self.env['res.partner.email'].create({
'partner_id': rec.partner_id.id,
'type': 'business',
'preferred': True,
'name': email
})
8 changes: 8 additions & 0 deletions addons/base_partner_address/models/res_partner.py
Expand Up @@ -265,6 +265,14 @@ def address_get_all(self, adr_pref=None):
return result
return result

def _address_fields(self, cr, uid, context=None):
"""Return empty partner address list.
We only use address data in res.partner.address we don't use address
data in res.partner anymore.
"""
return []

def clean_preferred(self, contact_type):
if contact_type not in CONTACTS:
raise ValidationError(
Expand Down

0 comments on commit 412f69b

Please sign in to comment.