Como migrar la contabilidad de Odoo desde la versión 11 a la versión 14
En estos momentos estamos finalizando la migración de la contabilidad de un Odoo 12 a un Odoo 14. Por eso queríamos compartir las enseñanzas de dicho proceso, ya que tiene sus complicaciones. Lo primero a tener en cuenta es, este proceso puede ser hecho. Ahora para hacerlo en su equipo necesita contar con un desarrollador de Odoo senior.
En este artículo no nos vamos a concentrar en la migración de módulos. Nos vamos a centrar en la migración de los datos mismos. Lo cual no es solo migrar los datos presentes en los modelos (con sus correspondientes mapeos). Sino tambien hacer que sean consistentes a nivel lógico. Lo que significa (y esto no es menor) que la cuenta corriente sea consistente.
Bien, habiendo dicho esto hay dos enfoques para encarar el trabajo. Uno "minimalista" en el cual uno migra solo los saldos de la cuenta corriente, y la verdad funciona bastante bien. El otro es migrar la contabilidad completa y nos vamos a concentrar en este enfoque. Para ello se debe lograr lo siguiente:
Todas las cuentas contables y diarios deben ser migradas
Todos los asientos contables deben ser migrados y marcados como publicados en Odoo 14
Todas las facturas deben ser migradas a Odoo 14 y deben ser marcadas como publicadas
Todos los pagos deben ser migrados a Odoo 14 y ser marcados como publicados
Todos los resumenes bancarios deben ser migrados
La cuenta corriente de clientes y de proveedores debe ser migrada
Consideraciones para todos los modelos, cuentas contables y diarios
A cada modelo que se migre se deberá agregar un campo extra que indique cual es el id de origen del registro. Prefiero agregar un campo extra llamado original_id donde indico cual es el id del sistema de origen del registro. Otra opción es utilizar el external_id del registro como lo usa odoo_csv_import.
Se pueden migrar todas las cuentas contables, se pueden usar nuevas cuentas... Lo importante es que cada cuenta en el sistema origen tenga una cuenta en el sistema destino. Si esta condición no se cumple, estamos en problemas. Este mapeo puede ser manual o automático. Personalmente me resulta comodo hacerlo de forma manual porque como mucho lleva un solo día (si tienen un plan contable que tenga más de 300 cuentas, tienen un problema en el plan contable). Este proceso es más sencillo en paises europeos donde los planes de cuenta son estandarizados entonces el matcheo de cuentas es mas simple ya que se usa el código de la misma.
Otro punto importante a tener en cuenta es en la migración, marcar las cuentas que son conciliables. Si esto no se hace apropiadamente no se va a poder vincular las facturas con sus correspondientes pagos.
Con respecto a los diarios, recomiendo la creación de diarios exclusivos para la migración. De esta manera va a ser mas facil para el desarrollador y usuario distinguir los movimientos del sistema antiguo de los movimientos del nuevo sistema.
Migración de asientos contables
Todos los asientos contables (account.move) deben ser migrados junto con sus correspondientes apuntes contables (account.move.line). Es importante respetar la fecha del asiento y los montos, tanto en la moneda local como en la moneda extranjera. Una vez migrados los asientos deben ser publicados, lo cual se puede hacer manualmente o por medio de un script de xmlrpc.
Migración de facturas
A partir de la versión 13 Odoo tuvo la bendita idea de fusionar las facturas, notas de crédito y asientos contables dentro de un solo modelo. El modelo account.move. Lo cual logicamente puede tener sentido pero la verdad complica bastante las cosas. Empezando por la migración de las facturas. Basicamente una factura en Odoo 14 es un asiento contable en el cual los datos estan "acomodados" de cierta manera para que parezcan una factura.
Como se migran las facturas? En su momento lo realice en un módulo leyendo mediante xmlrpc las facturas en el sistema origen. Y luego grabando los account.move correspondientes. Para ello me guie en el ejemplo del módulo point_of_sale. Ahí hay un claro ejemplo de como hacerlo. Una vez migradas las facturas las mismas deben quedar en estado borrador. De esta manera luego mediante SQL vamos a poder actualizar tanto el campo state a posted como el campo payment_state a invoicing_legacy.
Tambien se debe agregar un nuevo campo a la factura que identifique cual es el mopvimiento contable del sistema origen, asi el usuario puede contar con dicha referencia. Por último se debe extender el método action_confirm para que el mismo no valide las facturas migradas.
Migración de pagos
Se aplica la misma lógica de facturas, la única diferencia es que migrar pagos es mas sencillo que migrar facturas debido a que el modelo account.payment es sencillo de migrar. Se debe aplicar la misma lógica para facturas. Se debe crear un nuevo campo para almacenar el movimiento contable original y el campo state debe ser marcado como posted (idealmente con SQL). Por último el método action_post para que no intente confirmar los movimientos migrados ya que los mismos darán error.
Migración de resumenes bancarios
Es similar a los pagos. Deben migrarse e indicar cual es el movimiento contable origen para cada una de las lineas de los resumenes. Y luego deshabilitar el boton de "Conciliar" para los resumenes migrados.
Cuenta corriente de clientes y proveedores
Basicamente la cuenta corriente de proveedores o de clientes es el saldo de las cuentas conciliables por cliente/proveedor. En el enfoque de la migración minimalista, migrar los saldos es más sencillo debido a que por cada factura de proveedor/cliente impaga o con saldo por pagar, se debe crear un movimiento contable en el nuevo sistema. Un ejemplo de como hacerlo lo encuentran en el siguiente script de xmlrpc.
Ahora si estamos migrando todos los movimientos contables el enfoque es diferente. Para ello se deben migrar las conciliaciones del sistema fuente y con las mismas conciliar los respectivos apuntes contables. Como se hace esto? Para ello se debe recorrer cada uno de los movimientos del model account.partial.reconcile y para cada una de las entradas se debe conciliar mediante el metodo reconcile los apuntes contables indicados en el campo debit_move_id y credit_move_id.
Luego los saldos de la cuenta corriente se pueden controlar con un módulo como account_debt_management.
Resumiendo
En el presente articulo no cubrimos aspectos como migración de cheques, recibos y retenciones debido a que son aspectos propios de la localización argentina. Pero si cubrimos los aspectos basicos que es la migración de los movimientos contables. Como podran ver no es sencillo, y para llevarlo a cabo es necesario contar en el equipo con un desarrollador senior de Odoo. Migrar no es un proceso que se logre importando archivos CSV o Excel. Menos la contabilidad. Espero con este artículo haber brindado un poco más de luz a ciertos aspectos escondidos del proceso de migración de la contabilidad de Odoo.
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.