Informe de comprobación de inalterabilidad de datos

Las autoridades fiscales de algunos países exigen a las empresas que demuestren que sus asientos contables confirmados no han sido alterados, lo que significa que, una vez asegurado un asiento, ya no se puede modificar.

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 añade al siguiente asiento para formar una cadena de hash. Esto se utiliza para garantizar que no se añada un nuevo asiento posteriormente entre dos asientos asegurados, ya que hacerlo rompería la cadena de hash.

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

Las funciones de inalterabilidad se pueden habilitar activando la opción asegurar asientos confirmados con hash en cualquier diario o mediante el asistente para asegurar asientos.

  • Se añaden dos indicadores a la vista de formulario del asiento contable. Estos muestran si el asiento está asegurado o no.

    • Un icono o (icono de candado) junto al estado Contabilizado.

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

  • Hay un filtro No asegurado disponible en las vistas de lista de los asientos contables y los apuntes contables. Se puede utilizar para encontrar asientos contables confirmados que aún no están asegurados.

  • La opción para abrir el asistente para asegurar asientos se muestra en el menú Contabilidad.

Asegurar asientos confirmados 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, de compras o varios, vaya a la pestaña Ajustes avanzados y active Asegurar asientos confirmados con hash. Los diarios para los que se activa esta función se denominan «restringidos».

Para calcular el hash de un asiento, Odoo recupera los asientos predecesores de la cadena (es decir, los asientos con el mismo prefijo de secuencia) y los calcula de forma continua desde el último asiento con hash hasta el nuevo asiento que se debe calcular.

Advertencia

Una vez que confirma un asiento en un diario restringido, ya no puede desactivar la función ni editar ningún asiento asegurado.

Asistente para asegurar asientos

También puede utilizar el asistente Asegurar asientos para asegurar todos los asientos contables, en todos los diarios, hasta una fecha específica.

Nota

El asistente funciona de forma independiente de la configuración y los tipos de diario.

Para abrirlo, active el modo de desarrollador, vaya a Contabilidad ‣ Contabilidad y haga clic en Asegurar asientos. Si las funciones de inalterabilidad están activadas, también estará visible fuera del modo de depuración.

Para asegurar los asientos, seleccione una fecha hasta la cual se deben asegurar todos los asientos y pulse Asegurar asientos.

Advertencia

Después de asegurar los asientos, ya no podrá editarlos.

Nota

Puede ocurrir que se aseguren asientos posteriores a la fecha seleccionada. Esto es posible porque la cadena de hash corresponde al prefijo de secuencia, ordenado por número de secuencia.

Descargar informe

Para generar el informe de verificación de inalterabilidad de los datos, active el modo desarrollador, vaya a Ajustes ‣ Técnico ‣ Acciones: Acciones de servidor y ejecute Data Inalterability Check. El informe se genera en PDF para la empresa actual.

La primera sección del informe es una vista general de todos los prefijos de secuencia de diario que contienen asientos con hash. En la columna Restringido, puede ver si un diario tiene la opción asegurar asientos confirmados con hash activada (V) o no (X). La columna Comprobar indica si todos los asientos tienen el hash correcto.

screenshot: accounting-data-inalterability-overview
menu
(report) Data Inalterability Check, first section
shows
The overview table of the data inalterability check report, listing the journal sequence prefixes with the "Restricted" and "Check" columns.
highlight
The "Restricted" and "Check" columns (red frame).
data
Two journals, one restricted and correctly hashed, one not restricted.
module
account
notes
PDF output, crop to the table.

La segunda sección ofrece un resultado más detallado de la comprobación de coherencia de datos para cada prefijo de secuencia de diario con hash. Puede ver el primer asiento con hash y su hash correspondiente, así como el último asiento con hash y su hash correspondiente.

screenshot: accounting-data-inalterability-consistency
menu
(report) Data Inalterability Check, second section
shows
The detailed consistency result for one hashed journal sequence prefix, with the first and last hashed entries and their hashes.
highlight
The first and last entry rows (red frame).
data
Journal prefix INV/2026/ with a verified hash chain.
module
account
notes
PDF output, crop to the section.