Un roadmap para aprender a programar en Odoo

Gustavo Orrillo
- 13/06/2022 - 4 min. de lectura

Terminé de leer "Mientras escribo" de Stephen King. Que tiene que ver este libro con Odoo? Libro que se escribió al menos diez años antes que se desarrolle la primer línea de código? Sobre el punto que el buen escritor lee y escribe mucho, muchísimo. Y creo que para aprender a Odoo pasa lo mismo, uno debe practicar muchísimo para empezar a ser productivo.

Lo mismo pasa con aprender Odoo. Ser productivo desarrollando en Odoo tiene su tiempo. No tanto porque aprender a programar en Python, comprender como se interactua con el ORM, se crean y modifican vistas y reportes sea dificil. Lo que cuesta comprender es como funcionan las decenas de objetos de los que se compone Odoo, como interactuan entre ellos y como extenderlos para poder lograr lo que uno necesita. 

Es por ello que no existe un libro que sea "Empezar por aquí" o "Odoo for dummies" (sería interesante conocerlo). El aprendizaje de Odoo lleva por una parte la práctica de muchas horas de programación (esto no se puede evitar). Por otra parte, la lectura de varios libros (recomiendo Odoo Essentials y Odoo Development Cookbook). 

Ahora, como sería un buen curso para aprender Odoo? Primero creo que el alumno debe conocer lo básico de XML, Python y Bootstrap (fundamental para producir reportes). Despues, el curso debería tener muchos, pero muchos, ejercicios. Y debería empezar por lo más básico (datos maestros) a lo mas complejo (por ejemplo, creación y conciliación de facturas). Entonces, el roadmap podría ser el siguiente.

Primer clase: pasos iniciales (una hora)

Con Odoo ya instalado y corriendo (no hay que perder tiempo aprendiendo a instalar ya que hay muchos tutoriales excelentes pululando por internet); se debe aprender a detener Odoo y arrancarlo de vuelta. También a invocar el debugger de Python (un skill muy necesario en todo desarrollador, aquel programador que dice que no necesita hacer debugging es como aquel escritor que miente al decir que no lee). Lo importante es; saber arrancar y detener Odoo. Para luego comprender como se instalan módulos.

Aprendizaje de uso del Developer Mode. Para ello se deben hacer ejercicios como: identificar campos en facturas, productos, clientes. Identificar que módulos y vistas incorporan ciertos campos en las vistas de productos y transferencias de material. Ver la estructura del form de una vista. Modificar manualmente una lista tree agregando un campo opcional y haciendo invisible otro campo. Modificar un formulario haciendo readonly algunos campos y modificando el atributo state de algunos botones.

Segunda clase: datos maestros (dos horas)

Como es un módulo en Odoo, como se crea el módulo. Paso siguiente hacer un módulo e instalarlo. Con el módulo ya creado, el paso primero es extender los datos maestros de Odoo. La idea es hacer uno o dos ejercicios en el cual se extenderá un objeto (por ejemplo el cliente) para agregarle un campo determinado, por ejemplo "Es empresa de salud?". Luego agregaremos otro atributo más, por ejemplo "Seguro de salud", este campo será many2one y referenciará a los partners que son empresa de salud. Por último, modificaremos las vistas del partner para que reflejen los campos agregados.

Procederemos a crear un nuevo modelo, por ejemplo el rubro del partner. Luego procederemos a agregar el rubro como campo many2many  al partner. Agregaremos el menú de Rubros y la vista tipo tree y form para estos modelos.

Tercer clase: reportes en Odoo (una hora)

Aquí ya podemos trabajar con los reportes. Podemos hacer un reporte en el cual podemos ver por seguro de salud cuales son sus usuarios.

Cuarta y quinta clase: importación de datos (tres horas) 

Aprender a importar datos es importante por dos motivos. De una u otra manera se aprende el uso del ORM. Y tambien se aprende xmlrpc que más de una vez nos resuelve algunos problemas. Para ello se deben hacer ejercicios para importar: contactos y productos, ordenes de venta y por último saldos contables. La idea de la importación de pedidos de venta y saldos contables es empezar a aprender como es la estructura de las transacciones en Odoo. 

Sexta clase: reportes con Excel (dos horas)

Odoo tiene sus herramientas de reporting, pero muchas veces se quedan cortas. Entonces con el fin de brindar más práctica al alumno, se procederá a aprender como crear mediante un script de Python un archivo de Excel con los datos de Odoo. Se crearán dos scripts; uno para exportar stocks de productos y otro para exportar saldos de cuenta corriente de clientes.

Séptima y octava clase: transacciones con Odoo (tres horas)

El gol de trabajar con las transacciones de Odoo será aprender como extender las mismas. Para ello se pueden hacer dos ejercicios. El primero es desde las órdenes del punto de venta, crear pedidos de venta. Y luego generar pagos para conciliar las facturas de cliente que tienen un saldo no pagado menor a dos pesos (un ejercicio interesante que permite conocer mejor como funciona la contabilidad y como se concilian las transacciones contables). 

Novena y décima clase: herramientas de Odoo (dos horas) 

Por último, se deben hacer ejercicios que involucren las diferentes herramientas que posee Odoo. El primer ejercicio será la creación de un wizard para la actualización de precios de productos. Dicho wizard deberá ser invocado desde la vista tree de los productos. Al actualizarse los productos, deberá crearse un objeto que posea la lista de productos actualizados, sus precios anterior y posterior a la actualización, un campo de estado (que contendrá tres valores: draft, actualizado y revertido), un nombre que se obtendrá en base a la secuencia y por último un botón para revertir las actualizaciones realizadas.

La idea de este curso no es aprender funcionalmente como funciona Odoo, pero si proveer al alumno con los ejercicios suficientes para que obtenga una experiencia práctica desarrollando en Odoo. 

Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.