Resolución de Desincronización de Repositorios y Error de Instalación de Módulo `cr_electronic_invoice`
📋

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 Selection en 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

  1. El experto de Odoo solicitó y obtuvo acceso de escritura a los repositorios de GitHub (logosoft y l10_cr) para gestionar directamente el código y asegurar la consistencia.
  2. Se creó una nueva rama prod-modules en ambos repositorios (Logosoft-S-A/logosoft y Logosoft-S-A/l10_cr) para consolidar la versión de código de producción.
  3. Se subió la última versión de los módulos de producción a la rama prod-modules, incluyendo la adición del campo needs_fe en cr_electronic_invoice (modelo res.partner) y la unificación de métodos desalineados.
  4. Se identificó la causa del error de instalación del módulo cr_electronic_invoice: los valores en el archivo economic.activity.csv para el campo sale_type no coincidían con las claves técnicas del campo Selection en Python.
  5. 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).
  6. Los cambios fueron aplicados a la rama prod-modules del repositorio Logosoft-S-A/l10_cr (commit 422a091) y sincronizados con el servidor kronoscr para 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-modules en 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 Selection en 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.