数据不变性检查报告

一些国家的税务机关要求公司 证明其已公布的会计分录未被更改 ,这意味着分录一旦确定,就不能再更改。

为此,Odoo 借助 SHA-256 算法 为每个受保护的条目创建唯一的指纹。该指纹被称为哈希值(hash)。哈希值是通过提取条目的关键数据( namedatejournal_idcompany_iddebitcreditaccount_idpartner_id 字段的值),将其拼接在一起,并输入到 SHA-256 哈希函数中生成的,最终输出一个固定长度(256 位)的字符字符串。哈希函数是确定性的( 相同的输入总是生成相同的输出 ):对原始数据的任何细微修改都会完全改变生成的哈希值。因此,SHA-256 算法常被用于数据完整性验证等用途。

此外,上一个分录的哈希值总是会添加到下一个分录中,形成一个 哈希链 。这样做是为了确保不会在两个安全分录之间添加新分录,因为这样做会破坏哈希链。

注解

理论上,鉴于可能数值的数量有限,因此,SHA-256算法生成的散列并不是唯一的,但是,因为数量实在太大:2²⁵⁶,比已知宇宙的原子数量还要大得多,因此,散列在实践中被认为是唯一的。

不可篡改功能

在任何日记账上激活 使用哈希值保护已过账的分录 选项或使用 安全分录向导 ,即可启用不可篡改功能。

  • 日记账分录的窗体视图中添加了两个指示符。它们显示分录是否安全。

    • 已过账 状态旁边的 锁图标 )。

    • 其他信息 标签中添加 已保护 复选框。

  • 日记账分录和日记账项目列表视图中有一个 未保护 筛选器。可用于查找尚未加密的已过账日记账分录。

  • 会计 菜单中显示打开 安全条目向导 的选项。

使用哈希保护发布的分录

要在特定日记账上激活散列功能,请转到 会计 ‣ 配置 ‣ 日记账 。打开销售、采购或杂项日记账,转到 高级设置 选项卡,启用 使用哈希保护已过账的分录 。激活该功能的日记账称为 “限制”。

要计算一个分录的哈希值,Odoo 会检索链中的前置分录(即具有相同序列前缀的分录),并以连续方式从最后一个哈希条目哈希到要哈希的新分录。

警告

在受限日志中发布分录后,就不能再禁用该功能,也不能编辑任何安全分录。

安全分录向导

您也可以使用 安全分录 向导来保护截至特定日期的日记账中的 所有 日记账分录。

注解

该向导的运行与日记账设置和日记账类型无关。

要打开它,请激活 开发者模式 ,转到 会计 ‣ 会计 ,然后点击 安全分录 。如果激活了 不可更改功能 ,在调试模式外也可以看到。

要保护分录,请选择一个日期,并按 保护分录

警告

确保分录安全后,您就不能再编辑它们了。

注解

超过所选日期的分录可能会受到保护。这是可能的,因为哈希链对应于序列前缀,按序列号排序。

报告下载

要下载数据不变性检查报告,转到 会计‣配置‣设置‣报告 ,点击 download the data inalterability check report

报告的第一部分是包含哈希条目的所有日记账序列前缀的概览。在 限制 列,您可以看到日记账是否激活了 使用哈希值保护已过账分录 选项(V)(X)。 检查 列会告诉你是否所有分录都已正确散列。

Configuration report for two journals

第二部分给出了每个散列日记账序列前缀的更详细的数据一致性检查结果。您可以查看第一个散列分录及其对应的散列值,以及最后一个散列分录及其对应的散列值。

Data consistency check report for a journal