Leimos Odoo 14 Development Cookbook
Y aquí nuestras opiniones
El libro Odoo 14 Development Cookbook, que puede ser adquirido en Amazon o en PacktPub (recomendaría Packtpub por su continuo soporte al mundo Open-Source, por ejemplo su website corre en Drupal) fue lanzado meses atras y lo compré la semana pasada. Y quería comentarlo (y recomendarlo).
La primera razón para recomendarlo es que no hay buena documentación para el desarrollo de Odoo, y este libro llena un gran vacio. Si bien cada vez hay más información sobre los aspectos básicos de desarrollo de Odoo, aquellos que tenemos años de experiencia nos cuesta encontrar material que nos enseñe algo. Que no es el caso con este libro ya que posee mucha información interesante y novedosa (por ejemplo un capítulo sobre OWL y otro capítulo sobre POS).
Lo que es novedoso es el hecho que esta escrito por tres desarrolladores, uno de ellos muy experimentado como Daniel Reis. El otro perteneció al equipo de desarrollo de Odoo. Lo que le brinda gran valor al libro y se nota su aporte. Supongo que los ejemplos del capítulo de OWL se deben al aporte del último autor, no a los pobres y tristes ejemplos que nos proveyó Odoo SA en su documentación.
El libro es extenso (tiene más de 700 páginas) y tiene una estructura de workbook, pero va más alla de un libro de recetas. Tiene una estructura de ir desde temas básicos (por ejemplo instalación de Odoo) a temas más complejos (como por ejemplo OWL). Y en cada capítulo uno tiene recetas sobre como resolver los problemas. Es muy interesante que en cada sección de cada capítulo, hay una sección de "How it works". Que explica lo que sucede internamente en Odoo y el gran aprendizaje se da ahí.
El primer capítulo habla sobre la instalación local de Odoo para desarrollo, no menciona Docker (gran idea) y explica porque uno debe usar Ubuntu para hostear el server (es la distribución usada por el equipo de desarrollo de Odoo). Muy valioso para los novatos es la explicación detallada sobre el paso a paso de la instalación de Odoo, lo cual sirve al momento de resolver problemas. Y esto da lugar a una de las primeras críticas, no hay explicación sobre como hacer el deployment en un ambiente de producción. Posiblemente porque la misma ya esta contemplada en la documentación de Odoo.
El segundo capítulo, es sobre como administrar la instancia de Odoo. Es muy básico y explica como agregar módulos a Odoo, administrar la estructura de directorios y trabajar con github. Me parece bien que este presente, pero me pregunto si valió la pena existiendo temas más importantes (como ambiente de producción) que quedaron fueron del libro.
El tercer capítulo explica como crear módulos. Es una detallada explicación. El cuarto capítulo (de unas cincuenta páginas) no solo explica como crear los modelos y sus vistas correspondientes, sino tiene detalles interesantes sobre como funciona el campo display_name, como administrar los dígitos de los campos flotantes, como administrar los campos monetarios (por ejemplo). Es un capítulo realmente interesante, debido a que explica temas no conocidos (al menos por mi) como por ejemplo AbstractModels o como heredar de modelos existentes en los modelos con los que uno trabaja. O agregar campos mediante referencias. Recapitulando, la mejor descripción sobre los campos y modelos en Odoo. Pero por lejos la mejor descripción.
El séptimo capítulo brinda una introducción a como hacer debugging en Odoo. Le faltaría como utilizar la llamada a ValidationError que muchas veces nos resuelve muchos problemas en ambientes de producción.
El octavo capítulo trata sobre técnicas avanzadas de programación en Odoo. Empieza con el uso de la funcion sudo() y luego pasa al uso del contexto (tan utilizado con la localización argentina o en la contabilidad). Luego sigue con wizards, SQL, onchange. La descripción que hace de las limitaciones del onchange (por ejemplo solo se invoca si alguno de los campos de la vista se cambia, no si se lo cambia a nivel modelo) son únicos. Merecen un post aparte. Y provee dos secciones sobre dos temas que nunca antes había visto: como agregar seteos y como usar init_hooks.
El noveno capítulo es sobre vistas. Y enseña bien como funcionan en Odoo. No enseña HTML ni Bootstrap, eso lo debe aprender uno solo. Lo que tiene de interesante? Documenta lo que nunca vimos, como por ejemplo vistas del tipo actividad. El décimo capítulo es sobre seguridad. Detalla definición de grupos, como limitar el acceso a grupos y modelos, y por sobre todo reglas de acceso a registro (fundamental para la seguridad). Sería interesante que hable sobre como limitar el acceso a los clientes, que es un problema muy común en Odoo. El decimo primer capítulo es sobre internacionalización, en el caso que trabajen con Europa. Caso contrario, lo podemos saltear.
El capítulo 12 es sobre automatización e e-mails (y tambien impresión). Para mi sorpresa empieza con el manejo de estados en Odoo, lo cual es bienvenido. Pero despues pierde el tiempo con las vistas kanban (que pueden ser problemáticas si la vista tiene miles de registros). Pero este capítulo me enseño a usar acciones del servidor, algo que nunca habia usado y la verdad descubrir ese feature me ahora mucho tiempo.
Del capítulo 13 al 15 se cubre desarrollo web. Que es un issue muchas veces descuidado en Argentina por dos motivos. El primero es la factura electrónica, sy implementación y mantenimiento distrae mucho los recursos de una organización de IT. El segundo motivo es que tenemos poca funcionalidad web en Argentina. No me refiero al cliente web, pero sino a aplicaciones como e-commerce y portal. En otros paises son mucho más populares y más usadas. Igualmente estos capítulos son buenos porque tarde o temprano los consultores Odoo deben trabajar con dos aplicaciones: portal e e-commerce. Por ello valen la pena su lectura.
El capítulo 16 es interesante debido a que brinda la primera introducción realista a OWL. Esta librería es el futuro de Odoo a nivel cliente y a nivel desarrollo movil (dentro de poco calculo que empezarán a trabajar en la integración con dispositivos celulares). Pero hasta el día de hoy Odoo se encargó de documentarlo pobremente, y explicar porque no usaban Angular para el desarrollo de su cliente web (a todo esto, pensar que Odoo va a sobrevivir en el evento que Google y Microsoft quiebren... me parece un poco exagerado). Bueno, volviendo al libro, hay tres o cuatro ejemplos sobre como usar OWL en Odoo. Y ejemplos muy interesantes. Leí el capítulo en pocos minutos, y al rato ya estaba desarrollando mi componente en OWL. Lo que es interesante es que explica como desarrollar Widgets, y como los mismos interactuan con el ORM de Odoo. Lo que da unas ideas de como empezar a explotar la potencialidad de OWL.
Los capítulos 18 y 19 cubren dos areas que conozco poco; testing y odoo.sh. Así que no pienso comentarlos.
El capítulo 20 es necesario debido a que explica como usar RPC con Odoo. Desde Moldeo predicamos la importancia de RPC. Ahora nunca encontramos documentación sobre JSON-RPC. Que es brindada por este libro. Posiblemente si hubiesemos sabido de la existencia de JSON-RPC Ignacio no hubiese desarrollado odoo_api. Lo que habla de la importancia de la documentación para los desarrolladores.
El capítulo 21 fue quiza frustrante. No porque no sea interesante lo que plantea, tiene un par de tips que no conocía (como por ejemplo el read_group) o manejo de imágenes. Pero sinceramente muchos de los problemas de performance en Odoo (al menos en Argentina) pasan por la configuración de PostgreSQL.
El capítulo 22 fue inesperado y bienvenido. Un capítulo sobre como extender la funcionalidad del módulo POS con OWL. Y es bienvenido porque en base a mi experiencia la única manera de extender el POS era leyendo el código del mismo y romperse la cabeza con Backbone con el fin de implementar las funcionalidades que se necesitaban (cargos por tarjeta de crédito y campos extras a los clientes). Lo interesante del capítulo es que explica como hacerlo con OWL, lo que va a dar lugar a una mejor integración del POS con la localización argentina en un futuro cercano.
El capítulo 23 creo que justifica el costo del libro. Explica como configurar los e-mails. Sobre todo el ingreso de los mismos y como mantener el chatter y las actividades como desarrollador. Tiene muchas recetas, pero hay algo que le falta. Dar un ejemplo de una empresa real, donde tenes usuarios que envian mails de ventas y compras, etc.
El capítulo 24 es interesante ya que explica como trabajar con IoT box. Si bien es un producto Enterprise, sigue siendo un capítulo interesante. Ya que brinda la explicación sobre como resolver problemas propios de lugares como Argentina, por ejemplo impresión remota. Tambien será de interes el como hacer el deployment del POS en el IoT Box. Pareció interesante, ahora como dejamos de lado el POS y la versión Enterprise, me focalicé en otros capítulos.
Recapitulando... es un manual necesario para todo desarrollador de Odoo (al igual que sus predecesores). Se nota la experiencia de los autores y se agradece el hecho que uno haya pasado por las oficinas de desarrollo de Odoo. Se nota bastante en el contenido. Mi consejo es, comprenlo. Porque tiene innumerables ejemplos, consejos e ideas para implementar. A uno le va a ahorrar mucho tiempo con los clientes. Estaría bueno que existan libros similares en Odoo. Como por ejemplo "Automatización de la empresa con Odoo" o "Patrones de diseño en Odoo". Pero es un comienzo, por lo pronto es bueno que tengamos un libro sobre la localización argentina.
Acerca de:
Gustavo Orrillo
Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.