12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # -*- coding: utf-8 -*-
- # Part of Odoo. See LICENSE file for full copyright and licensing details.
- from odoo import api, fields, models, tools
- class Partner(models.Model):
- _inherit = ['res.partner']
- street_name = fields.Char(
- 'Street Name', compute='_compute_street_data', inverse='_inverse_street_data', store=True)
- street_number = fields.Char(
- 'House', compute='_compute_street_data', inverse='_inverse_street_data', store=True)
- street_number2 = fields.Char(
- 'Door', compute='_compute_street_data', inverse='_inverse_street_data', store=True)
- city_id = fields.Many2one(comodel_name='res.city', string='City ID')
- country_enforce_cities = fields.Boolean(related='country_id.enforce_cities')
- def _inverse_street_data(self):
- """ update self.street based on street_name, street_number and street_number2 """
- for partner in self:
- street = ((partner.street_name or '') + " " + (partner.street_number or '')).strip()
- if partner.street_number2:
- street = street + " - " + partner.street_number2
- partner.street = street
- @api.depends('street')
- def _compute_street_data(self):
- """Splits street value into sub-fields.
- Recomputes the fields of STREET_FIELDS when `street` of a partner is updated"""
- for partner in self:
- partner.update(tools.street_split(partner.street))
- def _get_street_split(self):
- self.ensure_one()
- return {
- 'street_name': self.street_name,
- 'street_number': self.street_number,
- 'street_number2': self.street_number2
- }
- @api.onchange('city_id')
- def _onchange_city_id(self):
- if self.city_id:
- self.city = self.city_id.name
- self.zip = self.city_id.zipcode
- self.state_id = self.city_id.state_id
- elif self._origin:
- self.city = False
- self.zip = False
- self.state_id = False
|