diff --git a/content/applications/finance/accounting/reporting/overview.rst b/content/applications/finance/accounting/reporting/overview.rst index 498738972..42a63e4ab 100644 --- a/content/applications/finance/accounting/reporting/overview.rst +++ b/content/applications/finance/accounting/reporting/overview.rst @@ -8,4 +8,5 @@ Overview :titlesonly: overview/main_reports - overview/customize \ No newline at end of file + overview/customize + overview/data_inalterability \ No newline at end of file diff --git a/content/applications/finance/accounting/reporting/overview/data_inalterability.rst b/content/applications/finance/accounting/reporting/overview/data_inalterability.rst new file mode 100644 index 000000000..e53fcde21 --- /dev/null +++ b/content/applications/finance/accounting/reporting/overview/data_inalterability.rst @@ -0,0 +1,63 @@ +================================ +Data inalterability check report +================================ + +Tax authorities in some countries require companies to **prove their posted accounting entries are +inalterable**, meaning that once an entry has been posted, it can no longer be changed. + +To do so, Odoo can use the **SHA-256 algorithm** to create a unique fingerprint for each posted +entry. This fingerprint is called a hash. The hash is generated by taking an entry's essential data +(the values of the `date`, `journal_id`, `company_id`, `debit`, `credit`, `account_id`, and +`partner_id` fields), concatenating it, and inputting it to the SHA-256 hash function, which then +outputs a fixed size (256-bit) string of characters. The hash function is deterministic (:dfn:`the +same input always creates the same output`): any minor modification to the original data would +completely change the resulting hash. Consequently, the SHA-256 algorithm is often used, among +others, for data integrity verification purposes. + +In addition, the previous entry's hash is always added to the next entry to form a **hash chain**. +This is used to ensure a new entry is not added afterward between two posted entries, as doing so +would break the hash chain. + +.. note:: + Hashes generated by the SHA-256 algorithm are theoretically not unique, as there is a finite + number of possible values. However, this number is exceptionally high: 2²⁵⁶, which is a lot + bigger than the number of atoms in the known universe. This is why hashes are considered unique + in practice. + +.. _data-inalterability/lock: + +Lock posted entries with hash +============================= + +To start using the hashing function, go to :menuselection:`Accounting --> Configuration > Journals`. +Open the journal for which you want to activate the feature, go to the :guilabel:`Advanced Settings` +tab, and enable :guilabel:`Lock Posted Entries with Hash`. + +.. warning:: + Once you post an entry on a locked journal, you cannot disable the feature anymore, nor edit any + posted entry. + +.. _data-inalterability/report: + +Report download +=============== + +To download the data inalterability check report, go to :menuselection:`Accounting --> Configuration +--> Settings --> Reporting` and click on :guilabel:`Download the Data Inalterability Check Report`. + +The report's first section is an overview of all your journals and their configuration. Under the +inalterability check column, you can see whether or not a journal's posted entries are locked with +a hash (V) or not (X). The coverage column tells you when a journal's posted entries started being +locked. + +.. image:: data_inalterability/journal-overview.png + :align: center + :alt: Configuration report for two journals + +The second section gives you the result of the data consistency check for each hashed journal. You +can view the first hashed entry and its corresponding hash and the last hashed entry and its +corresponding hash. + +.. image:: data_inalterability/data-consistency-check.png + :align: center + :alt: Data consistency check report for a journal \ No newline at end of file diff --git a/content/applications/finance/accounting/reporting/overview/data_inalterability/data-consistency-check.png b/content/applications/finance/accounting/reporting/overview/data_inalterability/data-consistency-check.png new file mode 100644 index 000000000..bd3017b38 Binary files /dev/null and b/content/applications/finance/accounting/reporting/overview/data_inalterability/data-consistency-check.png differ diff --git a/content/applications/finance/accounting/reporting/overview/data_inalterability/journal-overview.png b/content/applications/finance/accounting/reporting/overview/data_inalterability/journal-overview.png new file mode 100644 index 000000000..316c943e2 Binary files /dev/null and b/content/applications/finance/accounting/reporting/overview/data_inalterability/journal-overview.png differ