Publicidad

martes, 22 de septiembre de 2015

Override Metodos Odoo

Extender Funciones en Odoo (Método Super)


    Al momento de desarrollar, muchas veces necesitamos hacer un override a un método de una clase heredada, esto lo podemos realizar con ayuda del metodo super propio de Python.

La estructura es la siguiente:

@api.multi
def MetodoClase(self,):
    .... Aqui mi Codigo
    return super(ClaseHeredada, self).MetodoClase()
    Primero necesitamos definir los decoradores correspondientes del Método, posteriormente solo extender mediante el método super de Python, aquí puedo darles un consejo, el método super puede ser asignado a una variable y el orden de la variable afectara el comportamiento del método, en la sintaxis de arriba primero ejecutaría mi código y posterior a esto el método Original, si quisiéramos cambiar este orden bastaría con esto:

@api.multi
def MetodoClase(self,):
    res = super(ClaseHeredada, self).MetodoClase()
    .... Aqui mi Codigo
    return res

Ejemplo Completo de un método Super:

# -*- encoding: utf-8 -*-
############################################################################
#    (c) 2015 German Ponce Dominguez
#    All Rights Reserved.
#    info skype: german_442 email: (german.ponce@outlook.com)
############################################################################

import itertools
from lxml import etree

from openerp import models, fields, api, _
from openerp.exceptions import except_orm, Warning, RedirectWarning
from openerp.tools import float_compare
import openerp.addons.decimal_precision as dp


class account_invoice(models.Model):
    # Inherits partner and adds invoice information in the partner form
    _inherit = 'account.invoice'

    @api.multi
    def invoice_validate(self):
        res = super(account_invoice, self).invoice_validate()
        return res

9 comentarios:

  1. Respuestas
    1. Hola amigo,

      Solo eh testeado por el momento la parte Funcional :/

      Saludos

      Eliminar
  2. saludos compañero, he estado siguiendo su blog desde hace un tiempo... trabajo actualmente con openerp7 he aprendido mucho aunque aun no entiendo los one2many, gracias por sus publicaciones

    ResponderEliminar
  3. hola amigo excelentes aportaciones e aprendido mucho y te tengo una preguntita fijate que necesito crear array en un formulario y ese array necesito escribirlo en una tabla pero no se como hacerlo te agradeciera que me orientes

    ResponderEliminar
    Respuestas
    1. Hola, podrías leer otros post de mi Blog, creó que necesitas algo sobre campos calculados.

      Saludos.

      Eliminar
  4. Hola German seguí tus tutorilales con odoo v8 en windows; podia crear modulos sin problemas ; pero ahora con odoo v9 no me aparecen para instalarlos ; si me puedes ayudar , gracias de antemano

    ResponderEliminar
    Respuestas
    1. Que tal Gustavo,

      La Version 9 de Odoo cambia mucho, primero debes encontrar el path de los addons en windows, activar la vista desarrollo y actualizar la lista de modulos, posterior a esto buscar el que acabas de crear.

      Eliminar
  5. Hola German seguí tus tutorilales con odoo v8 en windows; podia crear modulos sin problemas ; pero ahora con odoo v9 no me aparecen para instalarlos ; si me puedes ayudar , gracias de antemano

    ResponderEliminar
    Respuestas
    1. Que tal Gustavo,

      La Version 9 de Odoo cambia mucho, primero debes encontrar el path de los addons en windows, activar la vista desarrollo y actualizar la lista de modulos, posterior a esto buscar el que acabas de crear.

      Eliminar