HERENCIA DE CLASES Y METODOS Odoo (OPENERP)
_inherit (Herencia de objetos).
Al hacer referencia a este atributo, hacemos referencia a la HERENCIA. Un hijo hereda
todos los campos, y funciones de su padre.
Ejemplo:
Como todos sabemos, existe una clase que se llama “res.partner”. En el siguiente ejemplo vamos a crear una nueva clase que herede de “res.partner”. A esta nueva clase le aƱadiremos 2 Campos uno para Identificar que elementos de "res.partner" (Clientes/Proveedores) tienen facebook y cual seria el facebook de dichos registros:
Esta serĆa la declaración de la nueva clase:
<!-- Aqui indico el atributo 'name' del Objeto Padre -->
_inherit ='res.partner'
<!-- Nuevo campo que voy a aƱadir al Objeto res.partner -->
_columns= {
'facebook': fields.boolean('Facebook'),
'facebook_description': fields.boolean('URL Facebook'),
}
res_partner()
Heredar funciones, y llamar a funciones padre con SUPER.
A veces nos puede interesar heredar una función de una clase, para poder modificarla. Vamos a poner como ejemplo la función 'onchange_xxxxx' que estÔ definida en la clase 'mi.clase'.
Esta función se ejecuta cada vez que cambiemos el id de “mi.clase”, asĆ que imaginemos que queremos cambiar el funcionamiento de dicha función. Teniendo en cuenta que en mi.clase existe la función onchange_xxxxx(self, cr, uid, ids, part), vamos a ver el siguiente ejemplo:
<!-- HEREDAMOS DE LA CLASE -->
_inherit = 'mi.clase'
<!-- DECLARAMOS OTRA VEZ LA FUNCIĆN QUE VAMOS A MODIFICAR -->
def onchange_xxxxx(self, cr, uid, ids, part):
value = {}
miclase_obj = self.pool.get('mi.clase')
<!-- LLAMAMOS A LA FUNCION PADRE -->
<!-- super(mi_clase,self): De esta manera llamamos a la función padre. Hay que pasarle 2 parÔmetro: la clase padre, y 'self' -->
res = super(mi_clase, self).onchange_xxxxx(cr, uid, ids, part)
value = res['value']
if part:
miclase = miclase_obj.browse(cr, uid, part)
<!-- Modificamos 'value', si en value existe 'client_order_ref' modifica su valor, si no existe, lo crea dentro de value -->
value.update({
'client_order_ref': miclase.name,
})
<! La función 'onchange' siempre devuelve un value >
return {'value': value}
sale_order()










