Rely on country.address_view_id instead of hacking the view on the fly. The address layout (street VS street_name street_number street_number2) depends now on the country of the user, not on the installed localisation. (it's now configurable per country) Unified street format to "Chaussee de Namur 40 - Appt 12"; the configurable ones where actually wrong by country. Allow street split without base_address_extended; all EDIs can now be used with or without base_address_extended. Merged base_address_city into base_address_extension, to avoid creating bridge modules for no reason. Uses city_id instead of city if the country of the user defines it AND if enforce_cities is set on this country. Improved post_init script for large databases. Split of street removed on res.company. (not required by any l10n) [IMP] l10n_cn_city,l10n_nl,l10n_cl,l10n_co,l10n_pe: base_address_extended improvements l10n_cn_city defined cities but did not provide a means to edit the city_id, so enforce_cities l10n_nl only requires street names and numbers and thus does not need to depend on base_address_extended l10n_cl should not depend on base_address_extended as none of the features are used l10n_pe improve the view l10n_co remove base_address_city dependency - move to l10n_co_edi closes odoo/odoo#81710 Related: odoo/enterprise#23108 Related: odoo/upgrade#3129 Signed-off-by: Laurent Smet <las@odoo.com>
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
# -*- 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
|