Skip to content

[IMP] accounting: (multi) companies, branches & accountant access info #14015

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: saas-18.1
Choose a base branch
from
Open
Show file tree
Hide file tree
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
6 changes: 3 additions & 3 deletions content/applications/essentials/property_fields.rst
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,12 @@ models. Once set, the property is shared by all records that are linked to the s
Candidate
- :ref:`Job position <job-position/create-job-position>`

:ref:`Company <companies/manage>`
:ref:`Company <general/companies/company>`

:ref:`Company <companies/manage>`
:ref:`Company <general/companies/company>`
* - :guilabel:`Repairs`
- :ref:`Repair order <repairs/repair_orders/repair>`
- :ref:`Company <companies/manage>`
- :ref:`Company <general/companies/company>`
* - :guilabel:`Sales` / etc.
- Product
- Category
176 changes: 134 additions & 42 deletions content/applications/finance/accounting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
Accounting and Invoicing
========================

**Odoo Invoicing** is a standalone invoicing app to create invoices, send them to your customers,
and manage payments.

**Odoo Accounting** is a full featured accounting app. Accountant productivity is at the core of its
development with features such as AI-powered invoice recognition, synchronization with your bank
accounts, smart matching suggestions, etc.
Odoo Invoicing is a standalone app designed to create invoices, send them to customers, and manage
payments. It also handles flows involving vendor bills. On the other hand, the Accounting app is a
comprehensive accounting solution that allows the same actions and includes additional features such
as standard financial reports, bank reconciliation, budgets, asset management, and more.

.. seealso::
`Odoo Tutorials: Accounting <https://www.odoo.com/slides/accounting-19>`_
Expand Down Expand Up @@ -52,6 +50,8 @@ accounts, smart matching suggestions, etc.

Reporting, declarations, and analytic accounting

.. _accounting/double-entry-booking:

Double-entry bookkeeping
========================

Expand All @@ -66,6 +66,8 @@ always balance.
.. seealso::
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`

.. _accounting/accrual-cash:

Accrual and cash basis
======================

Expand All @@ -81,14 +83,18 @@ expense either when the transaction occurs (accrual basis) or when the payment i
Multi-company
=============

Several companies can be managed within the same database. Each company has its :doc:`chart of
accounts <accounting/get_started/chart_of_accounts>`, but it is possible to share accounts
between them for scenarios in which such a configuration would be required. Users can then
access several companies but only work on a single company's accounting at a time.
:doc:`Multiple companies <../general/companies/multi_company>` can be managed within the same
database. Each company has its own :doc:`chart of accounts
<accounting/get_started/chart_of_accounts>`, but :ref:`accounts can be shared
<consolidation_account_mapping>`, which is useful when viewing consolidation reports. Users can view
records and reports from multiple companies simultaneously but can only work on a single company's
accounting at a time.

.. seealso::
- :ref:`Shared Accounts Feature <coa_shared_accounts>`
- :doc:`Consolidation <accounting/get_started/consolidation>`
- :doc:`Multi-company </applications/general/companies/multi_company>`
- :ref:`Inter-company transactions <general/multi-company/inter-company-transactions>`

.. _accounting/multi-currency:

Multi-currency environment
==========================
Expand All @@ -102,32 +108,80 @@ gains and losses after reconciling the journal items.
.. seealso::
:doc:`Manage a bank in a foreign currency <accounting/bank/foreign_currency>`

Branch management
=================
.. _accounting/branches:

Branches
========

Parent :doc:`companies </applications/general/companies>` and their :ref:`branches
<general/companies/branches>` can be managed within a single database, operating under shared
accounting and reporting rules, including the following:

- The parent company’s :doc:`chart of accounts <accounting/get_started/chart_of_accounts>`,
:doc:`main currency <accounting/get_started/multi_currency>`, and :doc:`taxes <accounting/taxes>`
apply to all branches.
- Branches can manage their own dedicated journals and related records.
- The parent company manages a common :ref:`fiscal period <year-end/fiscal-years>`, so its
:ref:`lock and closing dates <year-end/lock-everything-date>` apply across all branches. However,
branches may set earlier lock dates if needed.
- The parent company can access all :doc:`reports <accounting/reporting>`, :doc:`invoices
<accounting/customer_invoices>`, :doc:`bills <accounting/vendor_bills>`, etc., from its branches,
while each branch can only view its own data.

.. note::
The :doc:`Fiscal localization <fiscal_localizations>` package is set on the parent company.

.. warning::
Adding a branch to a company enables :doc:`multi-company functions
<../general/companies/multi_company>`.

For more information, refer to `Odoo's pricing page <https://www.odoo.com/pricing-plan>`_ or
contact your Odoo account manager.

.. _accounting/branch/reporting:

Reporting
---------

The parent company consolidates accounting operations from all branches, providing a centralized
view of :doc:`financial reports <accounting/reporting>`, such as profit and loss or balance sheets.

.. _accounting/branch/vat:

VAT
---

Each company and branch must be configured with its own legal information, including a VAT number
when applicable. Depending on the structure, branches may share the parent company's VAT number or
have their own, resulting in a common or separate :doc:`VAT return
<accounting/reporting/tax_returns>`.

This flexible setup allows users to generate individual reports and tax returns for each entity if
needed.

Multiple branches can be managed thanks to multi-company hierarchies. This allows to post journal
entries on each branch as well as setting up a common lock date managed by the main company.
.. _accounting/international-standards:

International standards
=======================

Odoo Accounting supports more than 70 countries. It provides the central standards and mechanisms
common to all nations, and thanks to country-specific modules, local requirements are fulfilled.
Fiscal positions exist to address regional specificities like the chart of accounts, taxes, or any
other requirements.
Odoo Accounting supports over 100 countries and provides standardized features and mechanisms
applicable across all regions. Country-specific modules are included to comply with local accounting
regulations. :doc:`Fiscal localizations <fiscal_localizations>` handle regional requirements, such
as charts of accounts, taxes, or any other legal obligations.

.. seealso::
:doc:`Fiscal localization packages <fiscal_localizations>`
.. _accounting/accounts-receivable-payable:

Accounts receivable and payable
===============================

By default, there is a single account for the account receivable entries and one for the account
payable entries. As transactions are linked to your **contacts**, you can run a report per customer,
vendor, or supplier.
By default, one account is designated for accounts receivable entries and another for accounts
payable entries. As transactions are linked to **contacts**, it is possible to run a report per
customer, vendor, or supplier.

The **Partner Ledger** report displays the balance of customers and suppliers. To access it, go to
:menuselection:`Accounting --> Reporting --> Partner Ledger`.

The **Partner Ledger** report displays the balance of your customers and suppliers. It is available
by going to :menuselection:`Accounting --> Reporting --> Partner Ledger`.
.. _accounting/reporting:

Reporting
=========
Expand All @@ -144,15 +198,17 @@ real-time:
| +----------------------------------+
| | Cash flow statement |
| +----------------------------------+
| | Tax report |
| | Executive summary |
| +----------------------------------+
| | Tax return |
| +----------------------------------+
| | EC sales list |
+------------+----------------------------------+
| Audit | General ledger |
| +----------------------------------+
| | Trial balance |
| +----------------------------------+
| | Journal report |
| | Journal audit |
| +----------------------------------+
| | Intrastat report |
| +----------------------------------+
Expand All @@ -166,13 +222,23 @@ real-time:
+------------+----------------------------------+
| Management | Invoice analysis |
| +----------------------------------+
| | Analytic report |
| +----------------------------------+
| | Audit trail |
| +----------------------------------+
| | Budget report |
| +----------------------------------+
| | Unrealized currency gains/losses |
| +----------------------------------+
| | Deferred revenue |
| +----------------------------------+
| | Deferred expense |
| +----------------------------------+
| | Depreciation schedule |
| +----------------------------------+
| | Disallowed expenses |
| +----------------------------------+
| | Budget analysis |
| | Loans analysis |
| +----------------------------------+
| | Product margins |
| +----------------------------------+
Expand All @@ -182,31 +248,32 @@ real-time:
.. tip::
:doc:`Create and customize reports <accounting/reporting/customize>` with Odoo's report engine.

Tax report
----------
.. _accounting/tax-report:

Odoo computes all accounting transactions for the specific tax period and uses these totals to
calculate the tax obligation.
Tax return
----------

.. important::
Once the tax report has been generated for a period, Odoo locks it and prevents the creation of
new journal entries involving VAT. Any correction to customer invoices or vendor bills has to
be recorded in the next period.
In the :ref:`Tax return <tax-returns/report>`, Odoo computes all accounting transactions for the
specific tax period and uses these totals to calculate the tax obligation.

.. note::
Depending on the country's localization, an XML version of the tax report can be generated to be
uploaded to the VAT platform of the relevant taxation authority.

.. _accounting/bank-synchronization:

Bank synchronization
====================

The bank synchronization system directly connects with your bank institution to automatically
import all transactions into your database. It gives an overview of your cash flow without logging
The bank synchronization system directly connects with banking institutions to automatically
import all transactions into the database. It gives an overview of the cash flow without logging
into an online banking system or waiting for paper bank statements.

.. seealso::
:doc:`Bank synchronization <accounting/bank/bank_synchronization>`

.. _accounting/inventory-valuation:

Inventory valuation
===================

Expand All @@ -217,6 +284,8 @@ available methods are standard price, average price, :abbr:`LIFO (Last-In, First
.. seealso::
:doc:`../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config`

.. _accounting/retained-earnings:

Retained earnings
=================

Expand All @@ -227,20 +296,43 @@ and loss balance is automatically reported on the balance sheet report.
.. seealso::
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`

.. _fiduciaries:
.. _accounting/fiduciaries:

Fiduciaries
===========

The :guilabel:`Accounting Firms` mode can be activated by going to :menuselection:`Accounting -->
Configuration --> Settings --> Accounting Firms mode`. When enabled:
Configuration --> Settings`. When enabled:

- The document's sequence becomes editable on all documents;
- The :guilabel:`Total (tax incl.)` field appears to speed up and control the encoding by automating
line creation with the right account and tax;
- :guilabel:`Invoice Date` and :guilabel:`Bill Date` are pre-filled when encoding a transaction.
- A :guilabel:`Quick encoding` option is available for customer invoices and vendor bills.

.. _accounting/accountant-access-rights:

Accountant access rights
========================

To grant access to the company's accountant, :ref:`add the accountant as a new user
<users/add-individual>` and configure the appropriate :doc:`access rights
<../general/users/access_rights>` in the :guilabel:`Accounting` section to enable access to the
company's financial data:

- :guilabel:`Accounting`: Select :guilabel:`Accountant`.
- :guilabel:`Bank`: Allow bank account validation.

.. Note::
Adding an accountant as a new user in :doc:`Odoo Online <../../administration/odoo_online>` is
free if the accountant has an Odoo account registered with the same email address as the one
listed for the company user. However, :doc:`Odoo.sh <../../administration/odoo_sh>` and
:doc:`Odoo On-premise <../../administration/on_premise>` may involve extra charges for each
additional user. For more pricing information, see
`Odoo's pricing <https://www.odoo.com/pricing-plan>`_.

For a multi-company environment, set the appropriate :ref:`access <users/multi-companies>`.

.. toctree::
:titlesonly:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ information:
- :guilabel:`Reference`: Include a reference to make the account easier to find if needed.
- :guilabel:`Plan`: Link the :guilabel:`Analytic Account` to an :ref:`analytic plan
<accounting/analytic_accounting/analytic_plans>`.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/multi_company>` environment,
select the company using the analytic account. To make the analytic account accessible to all
companies, leave the field empty.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/companies/multi_company>`
environment, select the company using the analytic account. To make the analytic account
accessible to all companies, leave the field empty.
- :guilabel:`Currency`: Update the currency of the analytic account if needed.

Then, the :doc:`budget <budget>` information can be filled in.
Expand Down Expand Up @@ -65,11 +65,11 @@ the following fields:
- :guilabel:`Financial Accounts Prefixes`: Enter the prefix(es) of the account(s) to which the plan
applies.
- :guilabel:`Product Category`: Choose the product category to which the plan applies.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/multi_company>` environment,
select the company using the plan. To make the analytic plan accessible to all companies, leave
the field empty.
- :guilabel:`Applicability`: Define how the plan is applied when creating a new journal entry. The
applicability set here always overrides the default applicability.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/companies/multi_company>`
environment, select the company using the plan. To make the analytic plan accessible to all
companies, leave the field empty.

Two smart buttons are available:

Expand Down Expand Up @@ -154,9 +154,9 @@ to apply automatically:
partner.
- :guilabel:`Product`: Apply the distribution model only to journal items involving a specific
product.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/multi_company>` environment,
apply the distribution model only to journal items involving a specific company. To apply it
across all companies, leave the field empty.
- :guilabel:`Company`: In a :doc:`multi-company </applications/general/companies/multi_company>`
environment, apply the distribution model only to journal items involving a specific company. To
apply it across all companies, leave the field empty.
- :guilabel:`Analytic Distribution`: :ref:`Analytic distribution
<accounting/analytic_accounting/analytic-distribution>` that will be applied when the above
conditions are met.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,15 @@ paid or refunded.
entry. This safety mechanism can prevent some fiscal errors, but it is advised to lock your tax
date manually before, as described above.

.. important::
- Once the tax report for a period has been generated but not yet posted, additional invoices or
bills from that same period can still be posted and included in the closing entry. To do so,
click :icon:`oi-arrow-right` :guilabel:`Refresh` in the :guilabel:`Proposition of tax closing
journal entry`, or click :guilabel:`Closing Entry` again from the tax report.
- After the tax report has been posted for a period, Odoo locks the period and prevents the
creation of new journal entries involving VAT. Any corrections to customer invoices or vendor
bills must then be recorded in the following period.

.. seealso::
* :doc:`../taxes`
* :doc:`../get_started`
Expand Down
2 changes: 1 addition & 1 deletion content/applications/finance/accounting/taxes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Default taxes

**Default taxes** define which taxes are automatically selected when creating a new product. They
are also used to prefill the :guilabel:`Taxes` field when adding a new line on an invoice in
:ref:`Accounting Firms <fiduciaries>` mode.
:ref:`Accounting Firms <accounting/fiduciaries>` mode.

.. image:: taxes/default-configuration.png
:alt: Odoo fills out the Tax field automatically according to the Default Taxes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ information to complete the synchronization:
In a multi-company setup, the following configurations are required in Odoo:

- The user linked to the generated :ref:`API key <api/external_api/keys>` must have
:ref:`access <general/employee-access>` to the company intended for synchronization.
:ref:`access <general/companies/users>` to the company intended for synchronization.
- This company must also be set as the user's :guilabel:`Default Company`, as Teledec always
synchronizes with the user's default company.

Expand Down
Loading