Reporte de comprobación de inalterabilidad de datos

Las autoridades fiscales de algunos países exigen que las empresas demuestren que sus asientos contables registrados son inalterables, es decir, que no es posible modificarlos después de protegerlos.

Para ello, Odoo usa el algoritmo SHA-256 para crear una huella digital única denominada hash para cada asiento. El hash se genera con los datos más importantes del asiento (los valores correspondientes a nombre, fecha, journal_id, company_id, débito, crédito, account_id y partner_id), los concatena e introduce en la función hash SHA-256 que genera una cadena de caracteres de tamaño fijo (256 bits). La función hash es determinista (la misma entrada siempre crea los mismos resultados): cualquier modificación en los datos originales, por más mínima que sea, cambiaría por completo el hash resultante. Por este motivo el algoritmo SHA-256 se utiliza con frecuencia para verificar la integridad de los datos.

Además, el hash del asiento anterior siempre se agrega al siguiente asiento para formar una cadena de hashes. Esta se utiliza para garantizar que no se agregue un nuevo asiento después de dos asientos protegidos, pues se rompería la cadena.

Nota

En teoría, los hash generados por el algoritmo SHA-256 no son únicos, ya que existe un número finito de valores posibles. Sin embargo, este número es muy alto: 2²⁵⁶, es mayor que el número de átomos en el universo conocido. Por eso los hash se consideran «únicos».

Funciones de inalterabilidad

Es posible habilitar las funciones de inalterabilidad al activar la opción Proteger asientos publicados con hash en cualquier diario o con el asistente para proteger asientos.

  • La vista del formulario del asiento contable cuenta con dos indicadores, estos muestran si el asiento está protegido o no.

    • Un ícono o (candado) junto al estado Registrado.

    • La casilla Asegurado en la pestaña Otra información.

  • Las vistas de lista de los asientos y apuntes contables cuentan con el filtro No protegido, este es útil para encontrar asientos contables registrados que aún no están protegidos.

  • La opción para abrir el asistente para proteger asientos aparece en el menú Contabilidad.

Proteger asientos registrados con hash

Para activar la función de hash en un diario específico, vaya a Contabilidad ‣ Configuración > Diarios, abra un diario de ventas, compras o varios, vaya a la pestaña Ajustes avanzados y habilite la opción Proteger asientos publicados con hash. Los diarios que tienen la función habilitada se denominan como «restringidos».

Para calcular el hash de un asiento, Odoo recupera los asientos antecesores de la cadena (es decir, los asientos con el mismo prefijo de secuencia) y agrega los hashes de forma continua desde el último asiento con hash hasta el nuevo asiento con hash.

Advertencia

Una vez que registre un asiento en un diario restringido no podrá deshabilitar la función ni editar ningún asiento protegido.

Asistente para proteger asientos

También puede usar el asistente para proteger asientos para proteger todos los asientos contables, en todos los diarios, hasta una fecha en específico.

Nota

El asistente funciona de manera independiente a los ajustes del diario y los tipos de diario.

Para abrirlo, habilite el modo de desarrollador, vaya a Contabilidad ‣ Contabilidad y haga clic en Proteger asientos. Si las funciones de inalterabilidad están activadas, también aparecerá fuera del modo de solución de errores.

Para proteger los asientos solo seleccione la fecha hasta la que deben estarlo y presione Proteger asientos.

Advertencia

Ya no podrá editar los asientos luego de protegerlos.

Nota

Es posible que los asientos anteriores a la fecha seleccionada estén protegidos, pues la cadena de hash corresponde al prefijo de secuencia ordenado por número de secuencia.

Descargar reporte

Para descargar el reporte de comprobación de la inalterabilidad de los datos, vaya a Contabilidad ‣ Configuración ‣ Ajustes ‣ Reportes y haga clic en Descargar el reporte de comprobación de la inalterabilidad de los datos.

La primera sección del reporte es un resumen de todos los prefijos de secuencia de diario que incluyen asientos con hash. En la columna Restringido puede ver si la opción Proteger asientos registrados con hash del diario está activada (V) o no (X). La columna Verificación le indica si todos los asientos cuentan con un hash.

Reporte de configuración de dos diarios

La segunda sección proporciona un resultado más detallado de la comprobación de consistencia de datos para todos los prefijos de secuencia del diario con hash. Puede ver el primer y último asiento con hash, así como los hashes correspondientes a ambos.

Reporte de comprobación de consistencia de los datos de un diario