Publicidad

viernes, 8 de abril de 2016

Método para Sobrescribir fuentes Java Script (JS) en Odoo

Guía para Reemplazar archivos js en Odoo

    Como todos sabemos la herencia es una de las herramientas mas poderosas con las que contamos en la programación con Odoo, esta misma herramienta de la programación podemos emplearla para heredar módulos y reemplazar archivos fuente, en este ejemplo reemplazo el archivo models.js del punto de venta por uno nuevo con mis modificaciones, como lo hacemos de una forma muy fácil.

1. Primero debemos crear en nuestro modulo un archivo xml para agregar la herencia del template, como podemos observar en el siguiente codigo:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="assets_backend" name="point_of_sale assets" 
inherit_id="point_of_sale.assets_backend">
        <xpath expr="//script[contains(@src,'models.js')]" position="replace">
         <script type="text/javascript"
src="/ps_modulo_pos_herencia/static/src/js/models_cb.js"></script>
          </xpath>
        </template>
    </data>
</openerp>


Mi modulo tiene por nombre ps_modulo_pos_herencia  y reemplazo el archivo models.js para poder modificarlo y agregar nuevas funcionalidades.

2. Las partes importantes son:

  • Atributo inherit_id que hace referencia  al modulo al cual heredamos seguido de un punto y el ID del template que vamos a heredar en esta caso assets_backend.
  • Para heredarlo utilizaremos el metodo Xpath solamente sustituiremos la referencia del archivo fuente models.js por modes_cb.js.
  • Por ultimo añadimos nuestra ruta del nuevo archivo fuente javascript /ps_modulo_pos_herencia/static/src/js/models_cb.js
Estos 2 pasos anteriores nos permiten reemplazar archivos fuente JavaScript de una forma facil para modificarlos y que estos sean reconocidos por Odoo para ejecutar nuevas funcionalidades, Widgets, etc.



4 comentarios:

  1. Hola, me parece muy interesante la guía, me estoy aventurando en las modificaciones del javascript de odoo y tengo muchas dudas pero me gustaría saber a que hace referencia en la template cuando se usa la siguiente linea:



    a que corresponde el name?
    que es en si el assets_backend?

    esas unas dudas de muchas en realidad pero me gustaría ver si me las pueden aclarar

    ResponderBorrar
    Respuestas
    1. Tienez razón, en ocasiones dejamos de lado lo mas importante el por que lo realiza de esta manera u otra, estare investigando un poco y realizare un post mas adelante. Saludos

      Borrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. Este comentario ha sido eliminado por el autor.

    ResponderBorrar