Skip to content

[IMP] accounting: update page with 18.0 updates on lock dates #13320

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 18.0
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 72 additions & 40 deletions content/applications/finance/accounting/reporting/year_end.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,59 +10,62 @@ informed decisions, and ensuring transparency in reporting.
Fiscal years
============

By default, the fiscal year is set to last 12 months and end on December 31st. However, its duration
and end date can vary due to cultural, administrative, and economic considerations.
By default, the fiscal year is set to last 12 months and ends on December 31st. However, its
duration and end date can vary due to cultural, administrative, and economic considerations.

To modify these values, go to :menuselection:`Accounting --> Configuration --> Settings`. Under the
:guilabel:`Fiscal Periods` section, change the :guilabel:`Last Day` field if necessary.

If the period lasts *more* than or *less* than 12 months, enable :guilabel:`Fiscal Years` and
:guilabel:`Save`. Go back to the :guilabel:`Fiscal Periods` section and click :guilabel:`➜ Fiscal
Years`. From there, click :guilabel:`Create`, give it a :guilabel:`Name`, and both a
:guilabel:`Save`. Go back to the :guilabel:`Fiscal Periods` section and click :icon:`oi-arrow-right`
:guilabel:`Fiscal Years`. Then, click :guilabel:`New`, give it a :guilabel:`Name` and both a
:guilabel:`Start Date` and :guilabel:`End Date`.

.. note::
Once the set fiscal period is over, Odoo automatically reverts to the default periodicity, taking
into account the value specified in the :guilabel:`Last Day` field.
Once the set fiscal period is over, Odoo automatically reverts to the default periodicity,
considering the value specified in the :guilabel:`Last Day` field.

.. _year-end/checklist:

Year-end checklist
==================

.. _year-end/before-closure:

Before closure
--------------

Before closing a fiscal year, ensure first everything is accurate and up-to-date:
Before closing a fiscal year, ensure that everything is accurate and up-to-date:

- Make sure all bank accounts are fully :doc:`reconciled <../bank/reconciliation>` up to year-end,
and confirm that the ending book balances match the bank statement balances.
- Verify that all :doc:`customer invoices <../customer_invoices>` have been entered and
approved and that there are no draft invoices.
- Confirm that all :doc:`vendor bills <../vendor_bills>` have been entered and agreed upon.
- Validate all :doc:`expenses <../../expenses>`, ensuring their accuracy.
- Corroborate that all :doc:`received payments <../payments>` have been encoded and recorded
accurately.
- Verify that all :doc:`customer invoices <../customer_invoices>` have been created and
confirmed and that there are no draft invoices.
- Confirm that all :doc:`vendor bills <../vendor_bills>` have been created and confirmed.
- Ensure the accuracy of all :doc:`expenses <../../expenses>` and validate them.
- Check that all :doc:`received payments <../payments>` have been encoded and confirmed.
- Close all :ref:`suspense accounts <accounting/bank/suspense>`.
- Book all :doc:`depreciation <../vendor_bills/assets>` and :doc:`deferred revenue
<../customer_invoices/deferred_revenues>` entries.

.. _year-end/closing-a-fiscal-year:

Closing a fiscal year
---------------------

Then, to close the fiscal year:

- Run a :ref:`tax report <accounting/reporting/tax-report>`, and verify that all tax information is
correct.
- Run a :ref:`tax return report <accounting/reporting/tax-report>`, and verify that all tax
information is correct.
- Reconcile all accounts on the :ref:`balance sheet <accounting/reporting/balance-sheet>`:

- Update the bank balances in Odoo according to the actual balances found on the bank statements.
- Reconcile all transactions in the cash and bank accounts by running the :ref:`aged receivables
<accounting/reporting/aged-receivable>` and :ref:`aged payables
<accounting/reporting/aged-payable>` reports.
- Audit all accounts, being sure to fully understand all transactions and their nature, making
sure to include loans and fixed assets.
- Optionally, :ref:`match payments <accounting/payments/auto-reconcile-tool>` to validate any open
- Audit all accounts, fully understanding all transactions and their nature, including :doc:`loans
<../bank/loans>` and :doc:`fixed assets <../vendor_bills/assets>`.
- Optionally, :ref:`match payments <accounting/payments/payments-matching>` to validate any open
vendor bills and customer invoices with their payments. While this step is optional, it could
assist the year-end closing process if all outstanding payments and invoices are reconciled,
potentially finding errors or mistakes in the system.
Expand All @@ -76,40 +79,69 @@ Next, the accountant likely verifies balance sheet items and book entries for:
- tax adjustments,
- etc.

If the accountant is going through the year-end audit, they may want to have paper copies of all
balance sheet items (such as loans, bank accounts, prepayments, sales tax statements, etc.) to
compare these with the balances in Odoo.
During the year-end audit, the accountant may print paper copies of all balance sheet items (e.g.,
loans, bank accounts, prepayments, sales tax statements) to compare them against the balances
recorded in Odoo.

.. tip::
During this process, it is good practice to set a :guilabel:`Journal Entries Lock Date` to the
last day (inclusive) of the preceding fiscal year by going to :menuselection:`Accounting -->
Accounting --> Lock Dates`. This way, the accountant can be confident that nobody changes the
transactions while auditing the books. Users from the *accountant* access group can still create
and modify entries.
As part of this process, setting a :ref:`Lock Everyone <year-end/lock-everyone-date>` date to the
last day (inclusive) of the preceding fiscal year is good practice. This ensures that no journal
entries are modified during the audit. Users with *administrator* access rights can still create
and edit entries.

.. _year-end/lock-everyone-date:

Lock everyone date
~~~~~~~~~~~~~~~~~~

Setting a :guilabel:`Lock Everyone` date prevents journal entries from being posted before this
date, instead changing the Accounting Date until after the lock date.

To set a :guilabel:`Lock Everyone` date, go to :menuselection:`Accounting --> Accounting --> Lock
Dates`. In the :guilabel:`Lock Journal Entries` window, set the :guilabel:`Lock Everyone` date and
:guilabel:`Save`.

.. note::
It's possible to create an exception so users with the :guilabel:`Administrator` access rights
can still change this date after it’s set. To do so:

#. After setting the :guilabel:`Lock Everyone` date, reopen the :guilabel:`Lock Journal Entries`
window and remove the :guilabel:`Lock Everyone` date.
#. An :guilabel:`Exception` banner allows this exception to be set as :guilabel:`For me` or
:guilabel:`For everyone` and for how long this exception should last.
#. A :guilabel:`Reason` for this exception can be added.
#. All of this information is logged in the chatter of the :doc:`company record
</applications/general/companies>`.

.. _year-end/current-year-earnings:

Current year's earnings
~~~~~~~~~~~~~~~~~~~~~~~

Odoo uses a unique account type called **current year's earnings** to display the amount difference
between the **income** and **expenses** accounts.
Odoo uses a unique account type called **current year's earnings** to display the difference
between the **income** and **expense** accounts.

.. note::
The chart of accounts can only contain one account of this type. By default, it is a 999999
account named :guilabel:`Undistributed Profits/Losses`.

To allocate the current year's earnings, create a miscellaneous entry to book them to any equity
account. Once done, confirm whether or not the current year's earnings in the **balance sheet** is
correctly reporting a balance of zero. If that is the case, set an :guilabel:`All Users Lock Date`
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
Dates`.
To allocate the current year's earnings, create a new miscellaneous entry with a date set to the end
of the fiscal year to book them to any equity account.

Then, verify whether the current year's earnings on the **balance sheet** correctly show a zero
balance. If so, a :guilabel:`Hard Lock date` can be set to the last day of the fiscal year in
:menuselection:`Accounting --> Accounting --> Lock Dates`.

.. tip::
Install the :guilabel:`Irreversible Lock Date` (`account_lock`) module to make the :guilabel:`All
Users Lock Date` *irreversible* once set.
The :guilabel:`Hard Lock date` field is irreversible and is intended to ensure data
inalterability required to comply with accounting regulations in certain countries. If such
compliance is not applicable, setting this field may not be necessary. However, if required, the
date should only be set once it is confirmed to be correct, as it **cannot be changed or
overridden**, regardless of access level.

.. note::
A specific year-end closing entry is **optional** in order to close out the **profit and loss
statement**. The reports are created in real-time, meaning that the profit and loss statement
corresponds directly with the year-end date specified in Odoo. Therefore, any time the **income
statement** is generated, the beginning date corresponds with the beginning of the **fiscal
year** and all account balances should equal zero.
A specific year-end closing entry is **optional** to close out the **profit and loss statement**.
The reports are created in real-time, meaning that the profit and loss statement corresponds
directly with the year-end date specified in Odoo. Therefore, any time the **income statement**
is generated, the beginning date corresponds with the beginning of the **fiscal year**, and all
account balances should equal zero.