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 override. Mostrar todas las entradas
Mostrando las entradas con la etiqueta override. Mostrar todas las entradas

miƩrcoles, 19 de octubre de 2016

Override de Funciones Javascript en Odoo

MĆ©todo para Sobrescribir Funciones Javascript en Odoo



Trabajando en algunas modificaciones de apuntes contables me di cuenta que tenemos un filtro "escondido" en las fuentes de javascript la cual limitaba los registros para no mostrar partidas cuyo crĆ©dito y dĆ©bito es 0.0, de alguna forma esto es correcto, pero para algunas personas es importante tener el desglose total de las partidas sin importar los montos, bueno para ello tenia que adentrarme en el archivo llamado account_move_line_quickadd.js y el mĆ©todo search_by_journal_period, para sobrescribir debemos hacer lo siguiente:

  1. Nuestro archivo __openerp__.py debe importar los archivos con codigo Javascript.
        'js': ['static/src/js/move_line_search_view.js'],
    
  2. El archivo  move_line_search_view.js contendra el reemplazo de la funcion, para ello la estructura es la siguiente:
    openerp.journal_entries_report_filter = function (instance) {
        instance.web.account.QuickAddListView.include({
    
            search_by_journal_period: function() {
                /*console.log("HOLA SUPER METODO")*/
                var self = this;
                var domain = [];
                if (self.current_journal !== null) domain.push(
                    ["journal_id", "=", self.current_journal]);
                if (self.current_period !== null) domain.push(
                    ["period_id", "=", self.current_period]);
                self.last_context["journal_id"] = 
                    self.current_journal === null ? false : 
                    self.current_journal;
                if (self.current_period === null) delete 
                    self.last_context["period_id"];
                else self.last_context["period_id"] =  
                    self.current_period;
                self.last_context["journal_type"] = 
                    self.current_journal_type;
                self.last_context["currency"] = 
                    self.current_journal_currency;
                self.last_context["analytic_journal_id"] = 
                    self.current_journal_analytic;
                return self.old_search(
                    new instance.web.CompoundDomain(
                                        self.last_domain, 
                        domain), self.last_context, 
                                    self.last_group_by);
            },
        });
    };
    

    journal_entries_report_filter es el modulo que estoy creando con los nuevos mĆ©todos javascript, openerp.journal_entries_report_filter = function (instance) fragmento de código  que crea una instancia de los archivos fuente javascript para instanciar el modulo account y sus recursos, en la siguiente linea apreciamos la referencia (instancia) del modulo account instance.web.account.QuickAddListView.include por ultimo el mĆ©todo search_by_journal_period es el mĆ©todo que estoy reemplazando o sobrescribiendo.
Nota: no se olviden de tener como dependencia
Espero que les ayude en algĆŗn momento.



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