Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

Mostrando las entradas con la etiqueta funciones super. Mostrar todas las entradas
Mostrando las entradas con la etiqueta funciones super. Mostrar todas las entradas

lunes, 20 de enero de 2014

Como Funciona la Herencia en Odoo (OpenERP)


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:

class res_partner(osv.osv):

<!--­­ 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:

class mi_clase(osv.osv):

    <!--­­ 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()