[IMP] accounting: add FEC import section to l10n/france
task-id 2573140 closes odoo/documentation#1435 Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
This commit is contained in:
parent
f3b5f8aec9
commit
69f198e612
@ -2,44 +2,364 @@
|
||||
France
|
||||
======
|
||||
|
||||
FEC
|
||||
===
|
||||
.. _france/fec:
|
||||
|
||||
If you have installed the French Accounting, you will be able to download the FEC.
|
||||
For this, go in :menuselection:`Accounting --> Reporting --> France --> FEC`.
|
||||
FEC - Fichier des Écritures Comptables
|
||||
======================================
|
||||
|
||||
An FEC :dfn:`Fichier des Écritures Comptables` audit file contains all the accounting data and entries
|
||||
recorded in all the accounting journals for a financial year. The entries in the file must be
|
||||
arranged in chronological order.
|
||||
|
||||
Since January 1st, 2014, every French company is required to produce and transmit this file upon
|
||||
request by the tax authorities for audit purposes.
|
||||
|
||||
FEC Import
|
||||
----------
|
||||
|
||||
To make the onboarding of new users easier, Odoo Enterprise's French :doc:`fiscal localization
|
||||
<../overview/fiscal_localization_packages>` includes the **FEC Import** feature (module name:
|
||||
``l10n_fr_fec_import``), which enables the import of existing FEC files from older software.
|
||||
|
||||
To enable this feature, go to :menuselection:`Accounting --> Configuration --> Settings -->
|
||||
Accounting Import`, enable **FEC Import**, and *Save*.
|
||||
|
||||
Next, go to :menuselection:`Accounting --> Configuration --> FEC Import`, upload your FEC file, and
|
||||
click on *Import*.
|
||||
|
||||
.. note::
|
||||
|
||||
| Importing FEC files from different year takes no particular action or computation.
|
||||
| Should multiple files contain any "Reports à Nouveaux" (RAN) with the starting balance of the
|
||||
year, you might need to cancel those entries in the User Interface. Odoo makes those entries
|
||||
(RAN) useless.
|
||||
|
||||
File formats
|
||||
~~~~~~~~~~~~
|
||||
|
||||
FEC files can only be in CSV format, as the XML format is not supported.
|
||||
|
||||
.. note::
|
||||
|
||||
The FEC CSV file has a plain text format representing a data table, with the first line being a
|
||||
header and defining the list of fields for each entry, and each following line representing one
|
||||
accounting entry, in no predetermined order.
|
||||
|
||||
Our module expects the files to meet the following technical specifications:
|
||||
|
||||
- **Encoding**: UTF-8, UTF-8-SIG and iso8859_15.
|
||||
- **Separator**: any of these: `;` or `|` or `,` or `TAB`.
|
||||
- **Line terminators**: both CR+LF (`\\r\\n`) and LF (`\\n`) character groups are supported.
|
||||
- **Date format**: `%Y%m%d`
|
||||
|
||||
Fields description and use
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| # | Field name | Description | Use | Format |
|
||||
+====+===============+======================================+===================================+=================+
|
||||
| 01 | JournalCode | Journal Code | `journal.code` and `journal.name` | Alphanumeric |
|
||||
| | | | if `JournalLib` is not provided | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 02 | JournalLib | Journal Label | `journal.name` | Alphanumeric |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 03 | EcritureNum | Numbering specific to each journal | `move.name` | Alphanumeric |
|
||||
| | | sequence number of the entry | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 04 | EcritureDate | Accounting entry Date | `move.date` | Date (yyyyMMdd) |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 05 | CompteNum | Account Number | `account.code` | Alphanumeric |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 06 | CompteLib | Account Label | `account.name` | Alphanumeric |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 07 | CompAuxNum | Secondary account Number | `partner.ref` | Alphanumeric |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 08 | CompAuxLib | Secondary account Label | `partner.name` | Alphanumeric |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 09 | PieceRef | Document Reference | `move.ref` and `move.name` | Alphanumeric |
|
||||
| | | | if `EcritureNum` is not provided | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 10 | PieceDate | Document Date | `move.date` | Date (yyyyMMdd) |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 11 | EcritureLib | Account entry Label | `move_line.name` | Alphanumeric |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 12 | Debit | Debit amount | `move_line.debit` | Float |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 13 | Credit | Credit amount | `move_line.credit` | Float |
|
||||
| | | (Field name "Crédit" is not allowed) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 14 | EcritureLet | Accounting entry cross reference | `move_line.fec_matching_number` | Alphanumeric |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 15 | DateLet | Accounting entry date | unused | Date (yyyyMMdd) |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 16 | ValidDate | Accounting entry validation date | unused | Date (yyyyMMdd) |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 17 | Montantdevise | Currency amount | `move_line.amount_currency` | Float |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 18 | Idevise | Currency identifier | `currency.name` | Alphanumeric |
|
||||
| | | (accepts null) | | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
|
||||
These two fields can be found in place of the others in the sence above.
|
||||
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 12 | Montant | Amount | `move_line.debit` | Float |
|
||||
| | | | or `move_line.credit` | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
| 13 | Sens | Can be "C" for Credit | determines `move_line.debit` | Char |
|
||||
| | | or "D" for Debit | or `move_line.credit` | |
|
||||
+----+---------------+--------------------------------------+-----------------------------------+-----------------+
|
||||
|
||||
Implementation details
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following accounting entities are imported from the FEC files: **Accounts, Journals, Partners**,
|
||||
and **Moves**.
|
||||
|
||||
Our module determines the encoding, the line-terminator character, and the separator that are used
|
||||
in the file.
|
||||
|
||||
A check is then performed to see if every line has the correct number of fields corresponding to the
|
||||
header.
|
||||
|
||||
If the check passes, then the file is read in full, kept in memory, and scanned. Accounting entities
|
||||
are imported one type at a time, in the following order.
|
||||
|
||||
Accounts
|
||||
********
|
||||
|
||||
Every accounting entry is related to an account, which should be determined by the field
|
||||
`CompteNum`.
|
||||
|
||||
Code matching
|
||||
*************
|
||||
|
||||
Should a similar account code already be present in the system, the existing one is used instead of
|
||||
creating a new one.
|
||||
|
||||
Accounts in Odoo generally have a number of digits that are default for the fiscal localization. As
|
||||
the FEC module is related to the French localization, the default number of relevant digits is 6.
|
||||
|
||||
This means that the account codes the trailing zeroes are right-trimmed, and that the comparison
|
||||
between the account codes in the FEC file and the ones already existing in Odoo is performed only on
|
||||
the first six digits of the codes.
|
||||
|
||||
.. admonition:: Example
|
||||
|
||||
The account code `65800000` in the file is matched against an existing `658000` account in
|
||||
Odoo, and that account is used instead of creating a new one.
|
||||
|
||||
Reconcilable flag
|
||||
*****************
|
||||
|
||||
An account is technically flagged as *reconcilable* if the first line in which it appears has the
|
||||
`EcritureLet` field filled out, as this flag means that the accounting entry is going to be
|
||||
reconciled with another one.
|
||||
|
||||
.. note::
|
||||
|
||||
In case the line somehow has this field not filled out, but the entry still has to be reconciled
|
||||
with a payment that hasn't yet been recorded, this isn't a problem anyway; the account is
|
||||
flagged as reconcilable as soon as the import of the move lines requires it.
|
||||
|
||||
Account type and Templates matching
|
||||
***********************************
|
||||
|
||||
As the **type** of the account is not specified in the FEC format, **new** accounts are created
|
||||
with the default type *Current Assets* and then, at the end of the import process, they are
|
||||
matched against the installed Chart of Account templates. Also, the *reconcile* flag is also
|
||||
computed this way.
|
||||
|
||||
The match is done with the left-most digits, starting by using all digits, then 3, then 2.
|
||||
|
||||
.. admonition:: Example
|
||||
|
||||
+------------+------------+-----------------+---------------------+---------------------+
|
||||
| Name | Code | Full comparison | 3-digits comparison | 2-digits comparison |
|
||||
+============+============+=================+=====================+=====================+
|
||||
| Template | `400000` | `400000` | `400` | `40` |
|
||||
+------------+------------+-----------------+---------------------+---------------------+
|
||||
| CompteNum | `40100000` | `40100000` | `401` | `40` |
|
||||
+------------+------------+-----------------+---------------------+---------------------+
|
||||
| **Result** | | | | Match **found** |
|
||||
+------------+------------+-----------------+---------------------+---------------------+
|
||||
|
||||
The type of the account is then flagged as *payable* and *reconcilable* as per the account template.
|
||||
|
||||
Journals
|
||||
********
|
||||
|
||||
Journals are also checked against those already existing in Odoo to avoid duplicates, also in the
|
||||
case of multiple FEC files imports.
|
||||
|
||||
Should a similar journal code already be present in the system, the existing one is used instead of
|
||||
creating a new one.
|
||||
|
||||
New journals have their name prefixed by the string ``FEC-``.
|
||||
|
||||
.. admonition:: Example
|
||||
|
||||
`ACHATS` -> `FEC-ACHATS`
|
||||
|
||||
The journals are *not* archived, the user is entitled to handle them as he wishes.
|
||||
|
||||
Journal type determination
|
||||
**************************
|
||||
|
||||
The journal type is also not specified in the format (as per the accounts) and therefore it is
|
||||
at first created with the default type `general`.
|
||||
|
||||
At the end of the import process, the type is determined as per these rules regarding related
|
||||
moves and accounts:
|
||||
|
||||
- | `bank`: Moves in these journals always have a line (debit or credit) impacting a
|
||||
liquidity account.
|
||||
| `cash` / `bank` can be interchanged, so `bank` is set everywhere when this condition is met.
|
||||
- | `sale`: Moves in these journals mostly have debit lines on receivable accounts and
|
||||
credit lines on tax income accounts.
|
||||
| Sale refund journal items are debit/credit inverted.
|
||||
- | `purchase`: Moves in these journals mostly have credit lines on payable accounts and
|
||||
debit lines on expense accounts.
|
||||
| Purchase refund journal items are debit/credit inverted.
|
||||
- | `general`: for everything else.
|
||||
|
||||
.. note::
|
||||
|
||||
- A minimum of three moves is necessary for journal type identification.
|
||||
- A threshold of 70% of moves must correspond to a criteria for a journal type to be determined.
|
||||
|
||||
.. admonition:: Example
|
||||
|
||||
Suppose we are analyzing the moves that share a certain `journal_id`
|
||||
|
||||
+------------------------------------------------------------+-------+------------+
|
||||
| Moves | Count | Percentage |
|
||||
+============================================================+=======+============+
|
||||
| that have a sale account line and no purchase account line | 0 | 0 |
|
||||
+------------------------------------------------------------+-------+------------+
|
||||
| that have a purchase account line and no sale account line | 1 | 25% |
|
||||
+------------------------------------------------------------+-------+------------+
|
||||
| that have a liquidity account line | 3 | **75%** |
|
||||
+------------------------------------------------------------+-------+------------+
|
||||
| **Total** | 4 | 100% |
|
||||
+------------------------------------------------------------+-------+------------+
|
||||
|
||||
The journal `type` would be `bank`, because the bank moves percentage (75%)
|
||||
exceeds the threshold (70%).
|
||||
|
||||
Partners
|
||||
********
|
||||
|
||||
Each partner keeps its `Reference` from the field `CompAuxNum`.
|
||||
|
||||
.. note::
|
||||
|
||||
These fields are searchable, in line with former FEC imports on the accounting expert's side for
|
||||
fiscal/audit purposes.
|
||||
|
||||
.. tip::
|
||||
If you do not see the submenu **FEC**, go in **Apps** and search for the module
|
||||
called **France-FEC** and verify if it is well installed.
|
||||
|
||||
Users can merge partners with the Data Cleaning App, where Vendors and Customers or similar
|
||||
partner entries may be merged by the user, with assistance from the system that groups them by
|
||||
similar entries.
|
||||
|
||||
Moves
|
||||
*****
|
||||
|
||||
Entries are immediately posted and reconciled after submission, using the `EcritureLet` field to
|
||||
do the matching between the entries themselves.
|
||||
|
||||
The `EcritureNum` field represents the name of the moves. We noticed that sometimes it may not be
|
||||
filled out. In this case, the field `PieceRef` is used.
|
||||
|
||||
Rounding issues
|
||||
***************
|
||||
|
||||
There is a rounding tolerance with a currency-related precision on debit and credit (i.e., 0.01 for
|
||||
EUR). Under this tolerance, a new line is added to the move, named *Import rounding difference*,
|
||||
targeting the accounts:
|
||||
|
||||
- `658000` Charges diverses de gestion courante, for added debits
|
||||
- `758000` Produits divers de gestion courante, for added credits
|
||||
|
||||
Missing move name
|
||||
*****************
|
||||
|
||||
Should the `EcritureNum` not be filled out, it may also happen that the `PieceRef` field is also
|
||||
not suited to determine the move name (it may be used as an accounting move line reference) leaving
|
||||
no way to actually find which lines are to be grouped in a single move, and effectively impeding the
|
||||
creation of balanced moves.
|
||||
|
||||
One last attempt is made, grouping all lines from the same journal and date (`JournalLib`,
|
||||
`EcritureDate`). Should this grouping generate balanced moves (sum(credit) - sum(debit) = 0), then
|
||||
each different combination of journal and date creates a new move.
|
||||
|
||||
.. admonition:: Example
|
||||
|
||||
`ACH` + `2021/05/01` --> new move on journal `ACH` with name `20210501`.
|
||||
|
||||
Should this attempt fail, the user is prompted an error message with all the move lines that are
|
||||
supposedly unbalanced.
|
||||
|
||||
Partner information
|
||||
*******************
|
||||
|
||||
If a line has the partner information specified, the information is copied to the accounting move
|
||||
itself if the targeted Journal is of type *payable* or *receivable*.
|
||||
|
||||
Export
|
||||
------
|
||||
|
||||
If you have installed the French :doc:`fiscal localization
|
||||
<../overview/fiscal_localization_packages>`, you should be able to download the FEC. To do so, go to
|
||||
:menuselection:`Accounting --> Reporting --> France --> FEC`.
|
||||
|
||||
.. tip::
|
||||
|
||||
If you do not see the submenu **FEC**, go to :menuselection:`Apps`, remove the *Apps* filter,
|
||||
then search for the module named **France-FEC** and make sure it is installed.
|
||||
|
||||
.. seealso::
|
||||
|
||||
- `Official Technical Specification (fr)
|
||||
<https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000027804775>`_
|
||||
- `Test-Compta-Demat (Official FEC Testing tool)
|
||||
<https://github.com/DGFiP/Test-Compta-Demat>`_
|
||||
|
||||
French Accounting Reports
|
||||
=========================
|
||||
|
||||
If you have installed the French Accounting, you will have access to some accounting reports specific to France:
|
||||
If you have installed the French Accounting, you will have access to some accounting reports
|
||||
specific to France:
|
||||
|
||||
- Bilan comptable
|
||||
- Compte de résultats
|
||||
- Plan de Taxes France
|
||||
- Plan de Taxes France
|
||||
|
||||
Get the VAT anti-fraud certification with Odoo
|
||||
==============================================
|
||||
|
||||
As of January 1st 2018, a new anti-fraud legislation comes into effect
|
||||
in France and DOM-TOM. This new legislation stipulates certain criteria
|
||||
concerning the inalterability, security, storage and archiving of sales data.
|
||||
These legal requirements are implemented in Odoo, version 9 onward,
|
||||
As of January 1st 2018, a new anti-fraud legislation comes into effect
|
||||
in France and DOM-TOM. This new legislation stipulates certain criteria
|
||||
concerning the inalterability, security, storage and archiving of sales data.
|
||||
These legal requirements are implemented in Odoo, version 9 onward,
|
||||
through a module and a certificate of conformity to download.
|
||||
|
||||
Is my company required to use an anti-fraud software?
|
||||
-----------------------------------------------------
|
||||
Is my company required to use anti-fraud software?
|
||||
--------------------------------------------------
|
||||
|
||||
Your company is required to use an anti-fraud cash register software like
|
||||
Your company is required to use an anti-fraud cash register software like
|
||||
Odoo (CGI art. 286, I. 3° bis) if:
|
||||
|
||||
* You are taxable (not VAT exempt) in France or any DOM-TOM,
|
||||
* Some of your customers are private individuals (B2C).
|
||||
- You are taxable (not VAT exempt) in France or any DOM-TOM,
|
||||
- Some of your customers are private individuals (B2C).
|
||||
|
||||
This rule applies to any company size. Auto-entrepreneurs are exempted from
|
||||
This rule applies to any company size. Auto-entrepreneurs are exempted from
|
||||
VAT and therefore are not affected.
|
||||
|
||||
Get certified with Odoo
|
||||
@ -47,135 +367,143 @@ Get certified with Odoo
|
||||
|
||||
Getting compliant with Odoo is very easy.
|
||||
|
||||
Your company is requested by the tax administration to deliver a certificate
|
||||
of conformity testifying that your software complies with the anti-fraud
|
||||
legislation. This certificate is granted by Odoo SA to Odoo Enterprise users
|
||||
Your company is requested by the tax administration to deliver a certificate
|
||||
of conformity testifying that your software complies with the anti-fraud
|
||||
legislation. This certificate is granted by Odoo SA to Odoo Enterprise users
|
||||
`here <https://www.odoo.com/my/contract/french-certification/>`_.
|
||||
If you use Odoo Community, you should :doc:`upgrade to Odoo Enterprise
|
||||
</administration/maintain/enterprise>` or contact your Odoo service provider.
|
||||
|
||||
In case of non-conformity, your company risks a fine of €7,500.
|
||||
|
||||
To get the certification just follow the following steps:
|
||||
To get the certification, just follow the following steps:
|
||||
|
||||
* If you use **Odoo Point of Sale**, :ref:`install <general/install>` the **France - VAT Anti-Fraud
|
||||
- If you use **Odoo Point of Sale**, :ref:`install <general/install>` the **France - VAT Anti-Fraud
|
||||
Certification for Point of Sale (CGI 286 I-3 bis)** module by going to :menuselection:`Apps`,
|
||||
removing the *Apps* filter, then searching for *l10n_fr_pos_cert*, and installing the module.
|
||||
|
||||
* Make sure a country is set on your company, otherwise your entries won’t be
|
||||
- Make sure a country is set on your company, otherwise your entries won’t be
|
||||
encrypted for the inalterability check. To edit your company’s data,
|
||||
go to :menuselection:`Settings --> Users & Companies --> Companies`.
|
||||
Select a country from the list; Do not create a new country.
|
||||
* Download the mandatory certificate of conformity delivered by Odoo SA `here <https://www.odoo.com/my/contract/french-certification/>`__.
|
||||
- Download the mandatory certificate of conformity delivered by Odoo SA `here <https://www.odoo.com/my/contract/french-certification/>`__.
|
||||
|
||||
.. note::
|
||||
* To install the module in any system created before
|
||||
December 18th 2017, you should update the modules list.
|
||||
To do so, activate the :ref:`developer mode <developer-mode>`.
|
||||
Then go to the *Apps* menu and press *Update Modules List* in the top-menu.
|
||||
* In case you run Odoo on-premise, you need to update your installation
|
||||
and restart your server beforehand.
|
||||
* If you have installed the initial version of the anti-fraud module
|
||||
(prior to December 18th 2017), you need to update it.
|
||||
The module's name was *France - Accounting - Certified CGI 286 I-3 bis*.
|
||||
After an update of the modules list, search for
|
||||
the updated module in *Apps*, select it and click *Upgrade*.
|
||||
Finally, make sure the following module *l10n_fr_sale_closing*
|
||||
is installed.
|
||||
|
||||
- To install the module in any system created before
|
||||
December 18th 2017, you should update the modules list.
|
||||
To do so, activate the :ref:`developer mode <developer-mode>`.
|
||||
Then go to the *Apps* menu and press *Update Modules List* in the top-menu.
|
||||
- In case you run Odoo on-premise, you need to update your installation
|
||||
and restart your server beforehand.
|
||||
- If you have installed the initial version of the anti-fraud module
|
||||
(prior to December 18th 2017), you need to update it.
|
||||
The module's name was *France - Accounting - Certified CGI 286 I-3 bis*.
|
||||
After an update of the modules list, search for
|
||||
the updated module in *Apps*, select it and click *Upgrade*.
|
||||
Finally, make sure the following module *l10n_fr_sale_closing*
|
||||
is installed.
|
||||
|
||||
Anti-fraud features
|
||||
-------------------
|
||||
|
||||
The anti-fraud module introduces the following features:
|
||||
|
||||
* **Inalterability**: deactivation of all the ways to cancel or modify
|
||||
- **Inalterability**: deactivation of all the ways to cancel or modify
|
||||
key data of POS orders, invoices and journal entries;
|
||||
* **Security**: chaining algorithm to verify the inalterability;
|
||||
* **Storage**: automatic sales closings with computation of both period
|
||||
- **Security**: chaining algorithm to verify the inalterability;
|
||||
- **Storage**: automatic sales closings with computation of both period
|
||||
and cumulative totals (daily, monthly, annually).
|
||||
|
||||
Inalterability
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
All the possible ways to cancel and modify key data of paid POS orders,
|
||||
confirmed invoices and journal entries are deactivated,
|
||||
if the company is located in France or in any DOM-TOM.
|
||||
All the possible ways to cancel and modify key data of paid POS orders,
|
||||
confirmed invoices and journal entries are deactivated,
|
||||
if the company is located in France or in any DOM-TOM.
|
||||
|
||||
.. note:: If you run a multi-companies environment, only the documents of
|
||||
such companies are impacted.
|
||||
.. note::
|
||||
|
||||
If you run a multi-companies environment, only the documents of such companies are impacted.
|
||||
|
||||
Security
|
||||
~~~~~~~~
|
||||
|
||||
To ensure the inalterability, every order or journal entry is encrypted
|
||||
upon validation.
|
||||
This number (or hash) is calculated from the key data of the document as
|
||||
To ensure inalterability, every order or journal entry is encrypted
|
||||
upon validation.
|
||||
This number (or hash) is calculated from the key data of the document as
|
||||
well as from the hash of the precedent documents.
|
||||
|
||||
The module introduces an interface to test the data inalterability.
|
||||
If any information is modified on a document after its validation,
|
||||
the test will fail. The algorithm recomputes all the hashes and compares them
|
||||
against the initial ones. In case of failure, the system points out the first
|
||||
The module introduces an interface to test the data inalterability.
|
||||
If any information is modified on a document after its validation,
|
||||
the test will fail. The algorithm recomputes all the hashes and compares them
|
||||
against the initial ones. In case of failure, the system points out the first
|
||||
corrupted document recorded in the system.
|
||||
|
||||
Users with *Manager* access rights can launch the inalterability check.
|
||||
For POS orders, go to
|
||||
:menuselection:`Point of Sales --> Reporting --> French Statements`.
|
||||
For invoices or journal entries,
|
||||
Users with *Manager* access rights can launch the inalterability check.
|
||||
For POS orders, go to
|
||||
:menuselection:`Point of Sales --> Reporting --> French Statements`.
|
||||
For invoices or journal entries,
|
||||
go to :menuselection:`Invoicing/Accounting --> Reporting --> French Statements`.
|
||||
|
||||
Storage
|
||||
~~~~~~~
|
||||
|
||||
The system also processes automatic sales closings on a daily, monthly
|
||||
The system also processes automatic sales closings on a daily, monthly
|
||||
and annual basis.
|
||||
Such closings distinctly compute the sales total of the period as well as
|
||||
the cumulative grand totals from the very first sales entry recorded
|
||||
Such closings distinctly compute the sales total of the period as well as
|
||||
the cumulative grand totals from the very first sales entry recorded
|
||||
in the system.
|
||||
|
||||
Closings can be found in the *French Statements* menu of Point of Sale,
|
||||
Closings can be found in the *French Statements* menu of Point of Sale,
|
||||
Invoicing and Accounting apps.
|
||||
|
||||
.. note::
|
||||
* Closings compute the totals for journal entries of sales journals (Journal Type = Sales).
|
||||
|
||||
* For multi-companies environments, such closings are performed by company.
|
||||
- Closings compute the totals for journal entries of sales journals (Journal Type = Sales).
|
||||
|
||||
* POS orders are posted as journal entries at the closing of the POS session.
|
||||
Closing a POS session can be done anytime.
|
||||
To prompt users to do it on a daily basis, the module prevents from resuming
|
||||
a session opened more than 24 hours ago.
|
||||
Such a session must be closed before selling again.
|
||||
- For multi-companies environments, such closings are performed by company.
|
||||
|
||||
* A period’s total is computed from all the journal entries posted after the
|
||||
previous closing of the same type, regardless of their posting date.
|
||||
If you record a new sales transaction for a period already closed,
|
||||
it will be counted in the very next closing.
|
||||
- POS orders are posted as journal entries at the closing of the POS session.
|
||||
Closing a POS session can be done anytime.
|
||||
To prompt users to do it on a daily basis, the module prevents from resuming
|
||||
a session opened more than 24 hours ago.
|
||||
Such a session must be closed before selling again.
|
||||
|
||||
.. tip:: For test & audit purposes such closings can be manually generated in the
|
||||
:ref:`developer mode <developer-mode>`. Then go to :menuselection:`Settings -->
|
||||
Technical --> Automation --> Scheduled Actions`.
|
||||
- A period’s total is computed from all the journal entries posted after the
|
||||
previous closing of the same type, regardless of their posting date.
|
||||
If you record a new sales transaction for a period already closed,
|
||||
it will be counted in the very next closing.
|
||||
|
||||
.. tip::
|
||||
|
||||
- For test & audit purposes such closings can be manually generated in the
|
||||
:ref:`developer mode <developer-mode>`.
|
||||
- Then go to :menuselection:`Settings --> Technical --> Automation --> Scheduled Actions`.
|
||||
|
||||
Responsibilities
|
||||
----------------
|
||||
|
||||
Do not uninstall the module! If you do so, the hashes will be reset and none
|
||||
Do not uninstall the module! If you do so, the hashes will be reset and none
|
||||
of your past data will be longer guaranteed as being inalterable.
|
||||
|
||||
Users remain responsible for their Odoo instance and must use it with
|
||||
due diligence. It is not permitted to modify the source code which guarantees
|
||||
Users remain responsible for their Odoo instance and must use it with
|
||||
due diligence. It is not permitted to modify the source code which guarantees
|
||||
the inalterability of data.
|
||||
|
||||
Odoo absolves itself of all and any responsibility in case of changes
|
||||
in the module’s functions caused by 3rd party applications not certified by Odoo.
|
||||
|
||||
Odoo absolves itself of all and any responsibility in case of changes
|
||||
in the module’s functions caused by 3rd party applications not certified by Odoo.
|
||||
|
||||
More Information
|
||||
----------------
|
||||
|
||||
You will find more information about this legislation in the official documents:
|
||||
You can find more information about this legislation in the following official documents.
|
||||
|
||||
* `Frequently Asked Questions <https://www.economie.gouv.fr/files/files/directions_services/dgfip/controle_fiscal/actualites_reponses/logiciels_de_caisse.pdf>`_
|
||||
* `Official Statement <http://bofip.impots.gouv.fr/bofip/10691-PGP.html?identifiant=BOI-TVA-DECLA-30-10-30-20160803>`_
|
||||
* `Item 88 of Finance Law 2016 <https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=JORFARTI000031732968&categorieLien=id&cidTexte=JORFTEXT000031732865>`_
|
||||
.. seealso::
|
||||
|
||||
- `Frequently Asked Questions
|
||||
<https://www.economie.gouv.fr/files/files/directions_services/dgfip/controle_fiscal/actualites_reponses/logiciels_de_caisse.pdf>`_
|
||||
- `Official Statement
|
||||
<http://bofip.impots.gouv.fr/bofip/10691-PGP.html?identifiant=BOI-TVA-DECLA-30-10-30-20160803>`_
|
||||
- `Item 88 of Finance Law 2016
|
||||
<https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=JORFARTI000031732968&categorieLien=id&cidTexte=JORFTEXT000031732865>`_
|
||||
|
Loading…
Reference in New Issue
Block a user