You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
# -*- coding: utf-8 -*-
|
|
##############################################################################
|
|
# For copyright and license notices, see __openerp__.py file in root directory
|
|
##############################################################################
|
|
|
|
from openerp import models, fields, api
|
|
from openerp.tools.translate import _
|
|
import collections
|
|
|
|
|
|
def dict_recursive_update(d, u):
|
|
for k, v in u.iteritems():
|
|
if isinstance(v, collections.Mapping):
|
|
r = dict_recursive_update(d.get(k, {}), v)
|
|
d[k] = r
|
|
else:
|
|
d[k] = u[k]
|
|
return d
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
region = fields.Many2one(comodel_name='res.partner.nuts',
|
|
string="Region")
|
|
substate = fields.Many2one(comodel_name='res.partner.nuts',
|
|
string="Substate")
|
|
lbl_region = fields.Char(compute='_labels_get')
|
|
lbl_substate = fields.Char(compute='_labels_get')
|
|
|
|
@api.one
|
|
@api.depends('country_id')
|
|
def _labels_get(self):
|
|
self.lbl_region = _('Region')
|
|
self.lbl_substate = _('Substate')
|
|
|
|
@api.multi
|
|
def onchange_state(self, state_id):
|
|
result = super(ResPartner, self).onchange_state(state_id)
|
|
if not state_id:
|
|
changes = {
|
|
'domain': {
|
|
'substate': [],
|
|
'region': [],
|
|
},
|
|
'value': {
|
|
'substate': False,
|
|
'region': False,
|
|
}
|
|
}
|
|
dict_recursive_update(result, changes)
|
|
return result
|
|
|
|
@api.onchange('substate', 'region')
|
|
def onchange_substate_or_region(self):
|
|
result = {'domain': {}}
|
|
if not self.substate:
|
|
result['domain']['substate'] = []
|
|
if not self.region:
|
|
result['domain']['region'] = []
|
|
return result
|