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