#openerp
#odoo
Вопрос:
Я хочу установить значение поля равным null на основе логического значения поля.
При создании customer, если я проверю, что поле является company. появится кнопка создать. после нажатия на кнопку Создать открывается новая страница просмотра. на этой странице просмотра используется поле адреса компании.Я хочу, чтобы при снятии этого флажка поле адреса было пустым. Это не должно принимать адрес компании, который я указываю в родительском представлении.
я унаследовал модуль res.partner и переопределил функцию onchange_address(). вот мой код.
def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None):
def value_or_id(val):
""" return val or val.id if val is a browse record """
return val if isinstance(val, (bool, int, long, float, basestring)) else val.id
result = {}
if parent_id:
if ids:
partner = self.browse(cr, uid, ids[0], context=context)
if partner.parent_id and partner.parent_id.id != parent_id:
result['warning'] = {'title': _('Warning'),
'message': _('Changing the company of a contact should only be done if it '
'was never correctly set. If an existing contact starts working for a new '
'company then a new contact should be created under that new '
'company. You can use the "Discard" button to abandon this change.')}
if use_parent_address :
parent = self.browse(cr, uid, parent_id, context=context)
address_fields = self._address_fields(cr, uid, context=context)
result['value'] = dict((key, value_or_id(parent[key])) for key in address_fields)
elif use_parent_address == False:
result['value'] = {'street': '','street2': '','city': '','state_id':False,'country_id':False,'zip': ''}
else:
result['value'] = {'use_parent_address': False}
return result