En la comunidad de Odoo hay una grieta. Estan los que opinan que migrar facturas es un proceso complejo, propenso a errores y antes de hacerlo prefieren enrolarse en la Marina. Y están los equivocados que opinan que migrar facturas es algo simple. En este post vamos a explicar porque estos últimos estan errados y vamos a presentar una alternativa no ideal pero si mucho más sencilla y pragmática.
Desafíos al migrar facturas
En los viejos tiempos las facturas se almacenaban en sus propios modelos: account.invoice, account.invoice.line, account.invoice.tax. Y cuando se confirmaba la factura recien en ese momento se creaba el asiento contable en el modelo account.move.
Que llevo al equipo de Odoo a deshechar esos modelos y centralizar todo en el modelo account.move? Es un misterio para mi pero fue una decisión que complicó mucho los desarrollos debido a que las líneas de las facturas pasaron a ser campos computados de los apuntes contables de cuentas pagables-cobrables. El cálculo de impuestos se complicó y trajo otros problemas más que no vamos a detallar. A cambio de que? Aún sigo esperando los beneficios de esta "reinvención de la contabilidad" (el marketing de Odoo es lo más patético e incompetente que encontré en el planeta).
Esto nos lleva a que cuando tengamos que migrar las facturas debamos migrar los apuntes contables junto con su informacion impositiva (lo cual no es del todo facil, alguna vez probaron de migrar las percepciones? junto con la información del padrón? o alguna vez conocieron aquella costumbre muy alemana de cambiar mes a mes la configuración de los impuestos?). Para luego tener que confirmarla y conciliarla con los pagos que uno supone ya fueron migrados. Y despues rogar que la contabilidad historica quede bien.
El punto es; migrar una línea de una factura de un Odoo a otro es algo muy dificil y que muy probablemente finalice mal, creando grandes riesgos en el proyecto de migración.
Una alternativa más sencilla
El fin es simplificar la migración y no por ello perder funcionalidad para los usuarios. Honestamente a los usuarios solo les interesa consultar la historia de las facturas. Si una factura de dos o tres años atrás se encuentra en otro modelo... les resulta irrelevante.
Es por ello que para migrar la contabilidad proponemos primero migrar no solo las configuraciones (diarios, impuestos, cuentas contables, posiciones fiscales) sino también solo los saldos de las cuentas contables. Ello se puede lograr de dos maneras. Se puede hacer un asiento con todos los saldos contables, o se pueden migrar todos los asientos contables juntos con sus apuntes contables, y confirmarlos. Todos estos asientos deben pasarse como asientos contables, no como pagos o facturas. Solo como asientos. Y confirmarlos, lo que va a conformar el saldo de las cuentas contables. Y nada más se necesita al respecto.
Ahora pasamos a las facturas y pagos. Para las facturas y pagos se pueden crear modelos alternativos. Por ejemplo:
- account.payment: se migrarían sus detalles a un nuevo modelo con nombre account.migration.payment
- account.move: se migrarían los asientos del tipo facturas y reembolsos. Ellos actualizarían un modelo de nombre account.invoice solo con los datos de la cabecera.
- account.move.line: los contenidos de los campos invoice_line_ids deben actualizar un nuevo modelo de nombre account.invoice.line. En este tendremos los detalles de las líneas de las facturas junto con sus impuestos
- Impuestos: se debería leer los contenidos del campo tax_totals (más de ello en un siguiente post) y actualizar un modelo con el detalle de los impuestos, por ejemplo account.invoice.tax
- account.partial.reconcile: cada uno de sus líneas debe actualizar un nuevo modelo llamado account.migration.reconcile. En este mostraremos como se fueron conciliando cada una de las facturas migradas.
Este nuevo enfoque si bien no es perfecto, es un método para migrar que resuelve las necesidades de los usuarios y aparte remueve muchas de las complejidades propias de migrar las facturas junto con sus conciliaciones. No es convencional, pero creanme que les va a ahorrar mucho tiempo y dolores de cabeza