Resolución de Desincronización de Repositorios y Error de Instalación de Módulo `cr_electronic_invoice`
Fecha de Creación: 2026-04-15 | Fecha de Cierre: 2026-04-28
Problema
El cliente reportó una desincronización significativa entre el código de módulos personalizados en sus instancias de Odoo (específicamente 'kronoscr', 'pv10', 'aldonero') y los repositorios de GitHub (`main`, `qa-next`). Esta discrepancia impedía la implementación de nuevas funcionalidades (como el campo needs_fe) y generaba incertidumbre sobre la versión real de producción. Se identificaron métodos presentes en un entorno pero ausentes en otro, lo que indicaba una falta de consistencia.
Posteriormente, tras una primera fase de sincronización, se detectó un error al intentar instalar el módulo cr_electronic_invoice en una base de datos Odoo en blanco. El problema radicaba en el archivo l10_cr/cr_electronic_invoice/data/economic.activity.csv, donde la columna sale_type contenía valores en español (Bienes, Servicios) en lugar de las claves técnicas esperadas por el campo Selection definido en economic_activity.py (goods, services). Odoo, al cargar el CSV, lanzaba un error al no encontrar los valores traducidos en las opciones técnicas del campo.
Causa Raíz
- Desincronización inicial: Falta de un proceso formal y centralizado para la gestión de versiones y despliegue de código entre las instancias de Odoo y los repositorios de GitHub, lo que llevó a múltiples "snapshots" y ramas desalineadas.
- Error de instalación del módulo: Carga de datos incorrecta en un archivo CSV. Los campos de tipo
Selectionen Odoo requieren que los valores en los archivos de datos (CSV, XML) sean las claves técnicas definidas en el código Python, no las etiquetas traducidas o mostradas en la interfaz de usuario.
Solución
- El experto de Odoo solicitó y obtuvo acceso de escritura a los repositorios de GitHub (
logosoftyl10_cr) para gestionar directamente el código y asegurar la consistencia. - Se creó una nueva rama
prod-modulesen ambos repositorios (Logosoft-S-A/logosoftyLogosoft-S-A/l10_cr) para consolidar la versión de código de producción. - Se subió la última versión de los módulos de producción a la rama
prod-modules, incluyendo la adición del camponeeds_feencr_electronic_invoice(modelores.partner) y la unificación de métodos desalineados. - Se identificó la causa del error de instalación del módulo
cr_electronic_invoice: los valores en el archivoeconomic.activity.csvpara el camposale_typeno coincidían con las claves técnicas del campoSelectionen Python. - Se corrigieron los valores en el archivo
l10_cr/cr_electronic_invoice/data/economic.activity.csv, reemplazando 'Bienes' por 'goods' (710 filas) y 'Servicios' por 'services' (1 fila). - Los cambios fueron aplicados a la rama
prod-modulesdel repositorioLogosoft-S-A/l10_cr(commit422a091) y sincronizados con el servidorkronoscrpara asegurar la correcta instalación del módulo en nuevas bases de datos.
Errores Relacionados
El valor 'Bienes' no se encontró en el campo de selección 'Sale Type'
Consejos de Prevención
Para prevenir problemas similares en el futuro, se recomienda:
- Establecer un Flujo de Trabajo de Git Estricto: Implementar un modelo de ramas claro (ej. GitFlow) con ramas dedicadas para desarrollo, QA y producción (
prod-modulesen este caso) y definir políticas de fusión estrictas. - Centralizar la Gestión de Repositorios: Designar un responsable o equipo con acceso y permisos para gestionar los repositorios de código y asegurar la consistencia entre el código versionado y el desplegado.
- Implementar Revisiones de Código (Code Reviews): Realizar revisiones de código obligatorias para validar los cambios antes de fusionarlos en ramas críticas, asegurando la calidad y la adherencia a estándares.
- Pruebas de Instalación en Bases de Datos Limpias: Realizar pruebas de instalación de módulos en bases de datos Odoo en blanco para detectar errores de carga de datos o dependencias faltantes antes del despliegue en entornos de producción o pre-producción.
- Capacitación en Carga de Datos de Odoo: Capacitar al personal de desarrollo sobre las mejores prácticas para la definición y carga de datos en Odoo, haciendo énfasis en el uso de claves técnicas para campos
Selectionen archivos de datos (CSV, XML). - Automatización de Despliegues (CI/CD): Considerar la implementación de herramientas de Integración Continua/Despliegue Continuo para automatizar el proceso de despliegue, reducir errores manuales y asegurar que el código desplegado siempre provenga de la rama de producción designada.
La aplicación de estas prácticas asegura una mayor estabilidad y coherencia en el entorno de Odoo.