Publicidad

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.



0 comentarios:

Publicar un comentario