Browse Source

[ADD] l10n_fr_tax_return module

16.0
RemiFr82 3 months ago
parent
commit
aab50a6d3e
  1. 6
      l10n_fr_tax_return/__init__.py
  2. 55
      l10n_fr_tax_return/__manifest__.py
  3. 342
      l10n_fr_tax_return/data/account_tax_return.xml
  4. 212
      l10n_fr_tax_return/i18n/fr.po
  5. 3
      l10n_fr_tax_return/models/__init__.py
  6. 10
      l10n_fr_tax_return/models/account_account.py
  7. 52
      l10n_fr_tax_return/models/account_tax_return.py
  8. 22
      l10n_fr_tax_return/models/account_tax_return_year.py
  9. 4
      l10n_fr_tax_return/security/ir.model.access.csv
  10. BIN
      l10n_fr_tax_return/static/description/icon.png
  11. 93
      l10n_fr_tax_return/static/description/icon.svg
  12. 22
      l10n_fr_tax_return/views/account_account.xml
  13. 67
      l10n_fr_tax_return/views/account_tax_return.xml
  14. 65
      l10n_fr_tax_return/views/account_tax_return_year.xml
  15. 1
      l10n_fr_tax_return/wizards/__init__.py
  16. 106
      l10n_fr_tax_return/wizards/tax_return_wizard.py
  17. 38
      l10n_fr_tax_return/wizards/tax_return_wizard.xml

6
l10n_fr_tax_return/__init__.py

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# from . import controllers
from . import models
from . import wizards
# from .hooks import pre_init_hook, post_init_hook, uninstall_hook

55
l10n_fr_tax_return/__manifest__.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
{
"name": "French tax return (2035)",
"version": "1.0.0",
"summary": "Computes lines for 2035 BNC declaration",
"description": """
Module description
""",
"author": "RemiFr82",
"contributors": "",
"maintainer": "RemiFr82",
"website": "https://remifr82.me",
"license": "LGPL-3",
"category": "",
# "price": 0,
# "currency": "EUR",
"application": False,
"installable": True,
"auto_install": False,
# "pre_init_hook": "",
# "post_init_hook": "",
# "uninstall_hook": "",
# "excludes": [],
# "external_dependencies": [],
"depends": [
"account",
"l10n_fr",
],
"data": [
# Base data
"data/account_tax_return.xml",
# Security
# 'security/res_groups.xml',
"security/ir.model.access.csv",
# 'security/ir_rule.xml',
# Views
"views/account_account.xml",
"views/account_tax_return.xml",
"views/account_tax_return_year.xml",
# Wizards
"wizards/tax_return_wizard.xml",
# Reports
# 'reports/report_templates.xml',
# 'reports/sql_view.xml',
],
"assets": {
# "reports/report_assets.xml"
},
"css": [],
"images": [],
"js": [],
"test": [],
"demo": [],
}

342
l10n_fr_tax_return/data/account_tax_return.xml

@ -0,0 +1,342 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- <data> -->
<!-- Revenue lines -->
<record id="atr_line_ag" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AG</field>
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_af" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AF</field>
<field name="add_line_id" ref="atr_line_ag" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_ad" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AD</field>
<field name="add_line_id" ref="atr_line_ag" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_ae" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AE</field>
<field name="add_line_id" ref="atr_line_ag" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_ac" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AC</field>
<field name="sub_line_id" ref="atr_line_ad" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_ab" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AB</field>
<field name="sub_line_id" ref="atr_line_ad" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_aa" model="account.tax.return" forcecreate="0">
<field name="name">Ligne AA</field>
<field name="add_line_id" ref="atr_line_ad" />
<field name="is_sum_line" eval="True" />
<field name="line_type">credit</field>
</record>
<!-- Expenses lines -->
<record id="atr_line_br" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BR</field>
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bp" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BP</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bn" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BN</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bm" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BM</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bk" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BK</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bt" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BT</field>
<field name="add_line_id" ref="atr_line_bk" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bu" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BU</field>
<field name="add_line_id" ref="atr_line_bk" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bz" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BZ</field>
<field name="add_line_id" ref="atr_line_bk" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bj" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BJ</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bh" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BH</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bg" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BG</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bf" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BF</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bv" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BV</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bs" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BS</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_jy" model="account.tax.return" forcecreate="0">
<field name="name">Ligne JY</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bd" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BD</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bc" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BC</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_bb" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BB</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<record id="atr_line_ba" model="account.tax.return" forcecreate="0">
<field name="name">Ligne BA</field>
<field name="add_line_id" ref="atr_line_br" />
<field name="is_sum_line" eval="True" />
</record>
<!-- Numbered lines -->
<record id="atr_line_1" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 1</field>
<field name="add_line_id" ref="atr_line_aa" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_2" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 2</field>
<field name="add_line_id" ref="atr_line_ab" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_3" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 3</field>
<field name="add_line_id" ref="atr_line_ac" />
<field name="line_type">credit</field>
</record>
<!-- <record id="atr_line_4" model="account.tax.return" forcecreate="0" >
<field name="name">Ligne 4</field>
<field name="line_type">credit</field>
</record> -->
<record id="atr_line_5" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 5</field>
<field name="add_line_id" ref="atr_line_ae" />
<field name="line_type">credit</field>
</record>
<record id="atr_line_6" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 6</field>
<field name="add_line_id" ref="atr_line_af" />
<field name="line_type">credit</field>
</record>
<!-- <record id="atr_line_7" model="account.tax.return" forcecreate="0" >
<field name="name">Ligne 7</field>
<field name="line_type">credit</field>
</record> -->
<record id="atr_line_8" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 8</field>
<field name="add_line_id" ref="atr_line_ba" />
</record>
<record id="atr_line_9" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 9</field>
<field name="add_line_id" ref="atr_line_bb" />
</record>
<record id="atr_line_10" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 10</field>
<field name="add_line_id" ref="atr_line_bc" />
</record>
<record id="atr_line_11" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 11</field>
<field name="add_line_id" ref="atr_line_bd" />
</record>
<record id="atr_line_12" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 12</field>
<field name="add_line_id" ref="atr_line_jy" />
</record>
<record id="atr_line_13" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 13</field>
<field name="add_line_id" ref="atr_line_bs" />
</record>
<record id="atr_line_14" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 14</field>
<field name="add_line_id" ref="atr_line_bv" />
</record>
<record id="atr_line_15" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 15</field>
<field name="add_line_id" ref="atr_line_bf" />
</record>
<record id="atr_line_16" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 16</field>
<field name="add_line_id" ref="atr_line_bg" />
</record>
<record id="atr_line_17" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 17</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_18" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 18</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_19" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 19</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_20" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 20</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_21" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 21</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_22" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 22</field>
<field name="add_line_id" ref="atr_line_bh" />
</record>
<record id="atr_line_23" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 23</field>
<field name="add_line_id" ref="atr_line_bj" />
</record>
<record id="atr_line_24" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 24</field>
<field name="add_line_id" ref="atr_line_bj" />
</record>
<!-- <record id="atr_line_25" model="account.tax.return" forcecreate="0" >
<field name="name">Ligne 25</field>
</record> -->
<record id="atr_line_26" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 26</field>
<field name="add_line_id" ref="atr_line_bm" />
</record>
<record id="atr_line_27" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 27</field>
<field name="add_line_id" ref="atr_line_bm" />
</record>
<record id="atr_line_28" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 28</field>
<field name="add_line_id" ref="atr_line_bm" />
</record>
<record id="atr_line_29" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 29</field>
<field name="add_line_id" ref="atr_line_bm" />
</record>
<record id="atr_line_30" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 30</field>
<field name="add_line_id" ref="atr_line_bm" />
</record>
<record id="atr_line_31" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 31</field>
<field name="add_line_id" ref="atr_line_bn" />
</record>
<record id="atr_line_32" model="account.tax.return" forcecreate="0">
<field name="name">Ligne 32</field>
<field name="add_line_id" ref="atr_line_bp" />
</record>
<!-- <record id="atr_line_33" model="account.tax.return" forcecreate="0" >
<field name="name">Ligne 33</field>
</record> -->
</data>
</odoo>

212
l10n_fr_tax_return/i18n/fr.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_fr_tax_return
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0+e-20230613\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-21 11:13+0000\n"
"PO-Revision-Date: 2024-09-21 11:13+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: l10n_fr_tax_return
#: model:ir.model,name:l10n_fr_tax_return.model_account_account
msgid "Account"
msgstr "Compte"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__account_ids
msgid "Accounts to sum"
msgstr "Comptes à sommer"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__add_line_id
msgid "Added to line"
msgstr "Ajoutée à la ligne"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__amount
msgid "Amount"
msgstr ""
#. module: l10n_fr_tax_return
#: model_terms:ir.ui.view,arch_db:l10n_fr_tax_return.tax_return_wizard_view_form
msgid "Cancel"
msgstr "Annuler"
#. module: l10n_fr_tax_return
#: model_terms:ir.ui.view,arch_db:l10n_fr_tax_return.tax_return_wizard_view_form
msgid "Compute year tax return lines"
msgstr "Calculer les lignes pour l'année"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__create_uid
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__create_uid
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__create_date
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__create_date
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__create_date
msgid "Created on"
msgstr "Créé le"
#. module: l10n_fr_tax_return
#. odoo-python
#: code:addons/l10n_fr_tax_return/models/account_tax_return.py:0
#: model:ir.model.fields.selection,name:l10n_fr_tax_return.selection__account_tax_return__line_type__credit
#: model:ir.model.fields.selection,name:l10n_fr_tax_return.selection__account_tax_return_year__line_type__credit
#, python-format
msgid "Credit"
msgstr "Crédit"
#. module: l10n_fr_tax_return
#. odoo-python
#: code:addons/l10n_fr_tax_return/models/account_tax_return.py:0
#: model:ir.model.fields.selection,name:l10n_fr_tax_return.selection__account_tax_return__line_type__debit
#: model:ir.model.fields.selection,name:l10n_fr_tax_return.selection__account_tax_return_year__line_type__debit
#, python-format
msgid "Debit"
msgstr "Débit"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__display_name
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__display_name
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__display_name
msgid "Display Name"
msgstr "Nom à afficher"
#. module: l10n_fr_tax_return
#: model_terms:ir.ui.view,arch_db:l10n_fr_tax_return.account_tax_return_year_view_search
msgid "Group By"
msgstr "Regrouper par"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__id
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__id
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__id
msgid "ID"
msgstr ""
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return____last_update
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year____last_update
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__write_uid
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__write_uid
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__write_date
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__write_date
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__line_id
msgid "Line"
msgstr "Ligne"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__line_type
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__line_type
msgid "Line Type"
msgstr "Type de ligne"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__sum_line_ids
msgid "Lines to add"
msgstr "Lignes à ajouter"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__ded_line_ids
msgid "Lines to substract"
msgstr "Lignes à soustraire"
#. module: l10n_fr_tax_return
#. odoo-python
#: code:addons/l10n_fr_tax_return/wizards/tax_return_wizard.py:0
#, python-format
msgid ""
"Please set a year in the past and after you started your odoo accounting."
msgstr ""
"Merci de renseigner une année postérieure au début de la comptabilité Odoo."
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__name
msgid "Reference"
msgstr "Référence"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__sub_line_id
msgid "Substracted from line"
msgstr "Déduite de la ligne"
#. module: l10n_fr_tax_return
#: model:ir.ui.menu,name:l10n_fr_tax_return.tax_return_wizard_menu
msgid "Tax return compute"
msgstr "Calcul des lignes"
#. module: l10n_fr_tax_return
#: model:ir.model,name:l10n_fr_tax_return.model_account_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_account__tax_return_id
msgid "Tax return line"
msgstr "Lignes de déclaration"
#. module: l10n_fr_tax_return
#: model:ir.model,name:l10n_fr_tax_return.model_account_tax_return_year
msgid "Tax return line year"
msgstr "Valeurs des lignes"
#. module: l10n_fr_tax_return
#: model:ir.ui.menu,name:l10n_fr_tax_return.account_tax_return_menu
msgid "Tax return lines"
msgstr "Lignes de déclaration"
#. module: l10n_fr_tax_return
#: model:ir.model,name:l10n_fr_tax_return.model_tax_return_wizard
msgid "Tax return wizard"
msgstr "Calcul des lignes de déclaration"
#. module: l10n_fr_tax_return
#: model:ir.actions.act_window,name:l10n_fr_tax_return.account_tax_return_action
#: model:ir.actions.act_window,name:l10n_fr_tax_return.account_tax_return_year_action
msgid "Tax returns"
msgstr "Lignes de déclaration"
#. module: l10n_fr_tax_return
#: model:ir.actions.act_window,name:l10n_fr_tax_return.tax_return_wizard_action
msgid "Tax returns compute"
msgstr ""
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return__is_sum_line
msgid "This line is a sum of other lines"
msgstr "Cette ligne est une somme d'autres lignes"
#. module: l10n_fr_tax_return
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_account_tax_return_year__name
#: model:ir.model.fields,field_description:l10n_fr_tax_return.field_tax_return_wizard__name
#: model_terms:ir.ui.view,arch_db:l10n_fr_tax_return.account_tax_return_year_view_search
msgid "Year"
msgstr "Année"
#. module: l10n_fr_tax_return
#: model:ir.ui.menu,name:l10n_fr_tax_return.account_tax_return_year_menu
msgid "Year tax return lines"
msgstr "Lignes par année"

3
l10n_fr_tax_return/models/__init__.py

@ -0,0 +1,3 @@
from . import account_account
from . import account_tax_return
from . import account_tax_return_year

10
l10n_fr_tax_return/models/account_account.py

@ -0,0 +1,10 @@
from odoo import models, fields
class AccountAccount(models.Model):
_inherit = "account.account"
tax_return_id = fields.Many2one(
comodel_name="account.tax.return",
string="Tax return line",
)

52
l10n_fr_tax_return/models/account_tax_return.py

@ -0,0 +1,52 @@
from odoo import models, fields, _
class AccountTaxReturn(models.Model):
_name = "account.tax.return"
_description = "Tax return line"
_order = "line_type, name, id"
name = fields.Char(string="Reference")
account_ids = fields.One2many(
comodel_name="account.account",
inverse_name="tax_return_id",
string="Accounts to sum",
)
line_type = fields.Selection(
selection=[
("credit", _("Credit")),
("debit", _("Debit")),
],
required=True,
default="debit",
)
# Sum between lines
add_line_id = fields.Many2one(
comodel_name="account.tax.return",
string="Added to line",
)
sub_line_id = fields.Many2one(
comodel_name="account.tax.return",
string="Substracted from line",
)
is_sum_line = fields.Boolean(string="This line is a sum of other lines")
sum_line_ids = fields.One2many(
comodel_name="account.tax.return",
inverse_name="add_line_id",
string="Lines to add",
)
ded_line_ids = fields.One2many(
comodel_name="account.tax.return",
inverse_name="sub_line_id",
string="Lines to substract",
)
def compute_value(self, move_lines=[]):
self.ensure_one()
if not self.is_sum_line:
if self.line_type == "credit":
return sum(move_lines.mapped(lambda aml: aml.credit - aml.debit))
else:
return sum(move_lines.mapped(lambda aml: aml.debit - aml.credit))
else:
return 0.0

22
l10n_fr_tax_return/models/account_tax_return_year.py

@ -0,0 +1,22 @@
from odoo import models, fields
class AccountTaxReturnYear(models.Model):
_name = "account.tax.return.year"
_description = "Tax return line year"
_order = "name desc, line_id, id"
name = fields.Char(string="Year", size=4)
line_id = fields.Many2one(
comodel_name="account.tax.return",
string="Line",
required=True,
ondelete="cascade",
)
line_type = fields.Selection(
related="line_id.line_type",
)
amount = fields.Float(
string="Amount",
digits="Product Price",
)

4
l10n_fr_tax_return/security/ir.model.access.csv

@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_tax_return_group_account_readonly,Account readonly account.tax.return,model_account_tax_return,account.group_account_readonly,1,1,1,1
access_account_tax_return_year_group_account_readonly,Account readonly account.tax.return.year,model_account_tax_return_year,account.group_account_readonly,1,1,1,1
access_tax_return_wizard_group_account_readonly,Account readonly tax.return.wizard,model_tax_return_wizard,base.group_user,1,1,1,1

BIN
l10n_fr_tax_return/static/description/icon.png

After

Width: 1539  |  Height: 1771  |  Size: 182 KiB

93
l10n_fr_tax_return/static/description/icon.svg

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2000 2000" style="enable-background:new 0 0 2000 2000;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{opacity:0.288;fill:#5BB4B9;enable-background:new ;}
.st2{fill:#714B67;stroke:#FFFFFF;stroke-width:2.5312;stroke-linejoin:round;stroke-miterlimit:84.375;}
.st3{fill:#00A09D;stroke:#FFFFFF;stroke-width:2.5312;stroke-linejoin:round;stroke-miterlimit:84.375;}
</style>
<g id="Calque_1_00000161600930838337179250000013767234669113973950_">
<g>
<g>
<g transform="translate(13 10)">
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-856.1276" y1="-992.6924" x2="-877.9248" y2="-975.3946" gradientTransform="matrix(43.9892 0 0 50.6251 39146.6719 50789.9492)">
<stop offset="0" style="stop-color:#81D9DD"/>
<stop offset="1" style="stop-color:#419CA1"/>
</linearGradient>
<path class="st0" d="M1747.1,540.7l-749.9-433c-6-3.4-13.3-3.4-19.3,0L228,540.7c-6,3.4-9.6,9.8-9.6,16.7v865.9
c0,6.9,3.7,13.3,9.6,16.7l749.9,433c3,1.7,6.3,2.6,9.6,2.6s6.6-0.8,9.6-2.6l749.9-433c6-3.4,9.6-9.8,9.6-16.7v-866
C1756.7,550.5,1753,544.1,1747.1,540.7z M256.8,1409V590.7l708.6,409.1l2.8,4.9V1823l-708.7-409.2L256.8,1409z M990.3,148.2
L1699,557.3L990.3,966.5h-5.6L276,557.3l708.7-409.1L990.3,148.2L990.3,148.2z M1006.8,1004.7l2.8-4.8l708.6-409.1V1409
l-2.8,4.8l-708.6,409.1L1006.8,1004.7L1006.8,1004.7z"/>
<rect x="970" y="870.2" class="st1" width="35" height="48.1"/>
<rect x="970" y="485.1" class="st1" width="35" height="48.1"/>
<rect x="970" y="774" class="st1" width="35" height="48.1"/>
<rect x="970" y="581.4" class="st1" width="35" height="48.1"/>
<rect x="970" y="196.3" class="st1" width="35" height="48.1"/>
<rect x="970" y="292.6" class="st1" width="35" height="48.1"/>
<rect x="970" y="388.9" class="st1" width="35" height="48.1"/>
<rect x="970" y="677.7" class="st1" width="35" height="48.1"/>
<rect x="703.4" y="1109.5" transform="matrix(0.8661 -0.4999 0.4999 0.8661 -465.9773 514.5881)" class="st1" width="48.1" height="35"/>
<rect x="620.2" y="1157.7" transform="matrix(0.8661 -0.4999 0.4999 0.8661 -501.1965 479.4498)" class="st1" width="48.1" height="35"/>
<rect x="536.7" y="1205.8" transform="matrix(0.8659 -0.5002 0.5002 0.8659 -536.6949 444.5481)" class="st1" width="48.2" height="35"/>
<rect x="870.1" y="1013.3" transform="matrix(0.8662 -0.4996 0.4996 0.8662 -395.3831 584.6333)" class="st1" width="48.1" height="35"/>
<rect x="786.8" y="1061.3" transform="matrix(0.8659 -0.5002 0.5002 0.8659 -430.897 550.2667)" class="st1" width="48.2" height="35"/>
<rect x="286.6" y="1350.2" transform="matrix(0.8659 -0.5002 0.5002 0.8659 -642.4768 338.7787)" class="st1" width="48.1" height="35"/>
<rect x="453.3" y="1253.8" transform="matrix(0.866 -0.5 0.5 0.866 -571.7071 408.9949)" class="st1" width="48.1" height="35"/>
<rect x="370.1" y="1302.1" transform="matrix(0.8661 -0.4999 0.4999 0.8661 -606.8809 373.7628)" class="st1" width="48.1" height="35"/>
<rect x="1307.6" y="1145.5" transform="matrix(0.5 -0.866 0.866 0.5 -350.2617 1732.3198)" class="st1" width="35" height="48.1"/>
<rect x="1141" y="1049.1" transform="matrix(0.5001 -0.866 0.866 0.5001 -350.2007 1539.6794)" class="st1" width="35" height="48.1"/>
<rect x="1224.4" y="1097.2" transform="matrix(0.4996 -0.8663 0.8663 0.4996 -349.8225 1636.8931)" class="st1" width="35" height="48.1"/>
<rect x="1638.3" y="1342.1" transform="matrix(0.5004 -0.8658 0.8658 0.5004 -349.8787 2112.7935)" class="st1" width="35" height="35"/>
<rect x="1057.5" y="1001" transform="matrix(0.5003 -0.8658 0.8658 0.5003 -350.4254 1443.0403)" class="st1" width="35" height="48.2"/>
<rect x="1474.3" y="1241.7" transform="matrix(0.5003 -0.8658 0.8658 0.5003 -350.5846 1924.1418)" class="st1" width="35" height="48.2"/>
<rect x="1557.8" y="1289.8" transform="matrix(0.5 -0.866 0.866 0.5 -350.1897 2021.1473)" class="st1" width="35" height="48.1"/>
<rect x="1391.1" y="1193.6" transform="matrix(0.4997 -0.8662 0.8662 0.4997 -349.9747 1829.327)" class="st1" width="35" height="48.1"/>
</g>
</g>
</g>
</g>
<g id="odoo">
<path class="st2" d="M993.2,439.3c-303.8,0-550,246.2-550,550s246.2,550,550,550s550-246.2,550-550S1297,439.3,993.2,439.3z
M993.2,659.3c182.3,0,330,147.7,330,330s-147.7,330-330,330s-330-147.7-330-330S811,659.3,993.2,659.3z"/>
</g>
<g id="kayak">
<path class="st3" d="M609.8,957.9c-0.4,14.4,11.8,59.8,23.4,86.8c33.6,75.8,69.2,108.4,220.1,201.6
c98.9,60.7,128.1,86.2,151.7,130.9c9.2,17,18.8,40,22,51.1l6,20.3v-44.8c0.8-103.6-28.8-138.3-193.3-229.7
c-39.6-21.8-88-51-107.3-64.7c-55.2-39.6-95.4-88.1-115.8-141c0,0-6.7-16.2-6.7-16.2L609.8,957.9z"/>
<path class="st3" d="M1179.5,540c-5.6,5.6-17.4,11.1-35.1,16.4c-15.4,4.6-35.2,9-59.3,13.2c-151.7,26.3-191.7,46.6-191.7,97.3
c0,13.3,6,27.7,29.6,71.8c16.4,30.3,32.4,65.1,36,77.3c10.4,37.7,12,87.3,4.8,149.8c-3.6,31.4-6.8,63.6-7.6,72.1l-0.8,14.8
l-56.8-27.7c-81.6-40.3-115.7-61.4-148.1-91.4c-54.8-50.7-76-114.7-64.8-197.5c8.8-68.1,35.2-132.8,70.8-173.1l18.4-21.1l-16,11.8
c-68,49.9-109.7,147.2-109.7,257.4c0,84.7,28.4,150.9,88,206c32.4,30,61.6,47.3,140.9,83.6c38,17.8,79.6,38.8,92.8,47
c44.8,29.2,84.4,82.5,98.1,132.4l7.2,26.3l4.8-58.4c2.8-32.5,6.8-67.3,8.8-77.3c2-10.4,7.2-40.3,11.2-66.6
c10.4-65.1,30.8-112.1,58.4-134.3c25.6-21.1,38.4-14.8,63.6,31.4c22,40.7,38,54.7,74.8,65.1c4.4,1.5,8,13.3,13.2,46.6
c6.4,39.9,6.8,50.7,2.4,96.5c-6,61.8-3.6,120.6,6,146.1c10.4,28.1,27.6,51,56.8,74.3l26,21.5l-2.4-38.8
c-6.4-85.1-18-150.2-38.4-208.2c-6.8-18.5-16.4-61-22.4-94.7c-15.6-92.1-51.6-255.2-67.6-306.3c-22.4-71.8-53.6-138.2-90.4-192.6
c-4.9-7.1-17.3-25.2-17.3-25.2s5.9-7.4,9.3-12.6c3.9-4.8,9.7-15.2,12.5-23.7c2.7-8.3,1.7-18,1.7-18S1183.5,535.9,1179.5,540z
M1177.1,619.2c36.4,59.2,61.2,128.3,86,240.8c19.2,88,31.2,150.2,29.2,152.4c-4.4,3.7-19.2-25.9-29.2-58.1
c-12.8-41.8-21.2-58.1-37.2-72.9c-18-17-37.6-23.7-88-30.7c-58.8-8.1-74-15.2-113.7-52.5c-42.4-39.9-59.6-64.7-62-88.4
c-3.6-33.7,9.6-43.6,81.2-62.5c48.4-12.9,71.6-23.3,96.1-42.5c8.8-7,17.8-13.8,17.8-13.8S1167.5,604,1177.1,619.2z"/>
<path class="st3" d="M1130.6,658.7c0,6.7-4.7,23.2-9.1,33.5c-6.4,14.8-8,27.4-8,61.4c0,34-1.6,45.1-6.8,53.6
c-4,5.9-13.2,14.4-13.2,14.4s22.4,3.7,44.4-6.7c52-24.4,55.6-74.3,9.6-139.8c-11-15.6-16.9-20.8-16.9-20.8
S1130.6,654.5,1130.6,658.7z"/>
</g>
</svg>

22
l10n_fr_tax_return/views/account_account.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_account_list_inherit_tax_return" model="ir.ui.view">
<field name="name">account.account.view.list.inherit</field>
<field name="model">account.account</field>
<field name="inherit_id" ref="account.view_account_list" />
<field name="arch" type="xml">
<field name="group_id" position="after">
<field name="tax_return_id" options="{'no_quick_create':1}" />
</field>
</field>
</record>
<menuitem
id="account_reports_fr_2035_menu"
name="Déclaration 2035"
parent="account.menu_finance_reports"
sequence="6"
groups="account.group_account_readonly" />
</odoo>

67
l10n_fr_tax_return/views/account_tax_return.xml

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_tax_return_view_form" model="ir.ui.view">
<field name="name">account.tax.return.view.form</field>
<field name="model">account.tax.return</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group name="left">
<field name="name" />
<field name="account_ids" widget="many2many_tags" options="{'no_create':1}" />
<field name="line_type" widget="radio" options="{'horizontal':true}" />
</group>
<group name="right">
<field name="add_line_id" attrs="{'invisible': [('sub_line_id','!=',False)]}" />
<field name="sub_line_id" attrs="{'invisible': [('add_line_id','!=',False)]}" />
<field name="is_sum_line" />
<field name="sum_line_ids" attrs="{'invisible': [('is_sum_line','!=',True)]}" widget="many2many_tags" />
<field name="ded_line_ids" attrs="{'invisible': [('is_sum_line','!=',True)]}" widget="many2many_tags" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="account_tax_return_view_tree" model="ir.ui.view">
<field name="name">account.tax.return.view.tree</field>
<field name="model">account.tax.return</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="account_ids" widget="many2many_tags" />
<field name="line_type" />
<field name="is_sum_line" />
</tree>
</field>
</record>
<record id="account_tax_return_view_search" model="ir.ui.view">
<field name="name">account.tax.return.view.search</field>
<field name="model">account.tax.return</field>
<field name="arch" type="xml">
<search>
<field name="name" />
</search>
</field>
</record>
<record id="account_tax_return_action" model="ir.actions.act_window">
<field name="name">Tax returns</field>
<field name="res_model">account.tax.return</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<menuitem
id="account_tax_return_menu"
name="Tax return lines"
action="account_tax_return_action"
parent="account_reports_fr_2035_menu"
sequence="10" />
</odoo>

65
l10n_fr_tax_return/views/account_tax_return_year.xml

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_tax_return_year_view_form" model="ir.ui.view">
<field name="name">account.tax.return.year.view.form</field>
<field name="model">account.tax.return.year</field>
<field name="arch" type="xml">
<form>
<sheet>
<group col="6">
<field name="name" />
<field name="line_id" options="{'no_create':1}" />
<field name="line_type" />
<field name="amount" />
</group>
</sheet>
</form>
</field>
</record>
<record id="account_tax_return_year_view_tree" model="ir.ui.view">
<field name="name">account.tax.return.year.view.tree</field>
<field name="model">account.tax.return.year</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="line_id" options="{'no_create':1}" />
<field name="line_type" />
<field name="amount" />
</tree>
</field>
</record>
<record id="account_tax_return_year_view_search" model="ir.ui.view">
<field name="name">account.tax.return.year.view.search</field>
<field name="model">account.tax.return.year</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="line_type" />
<separator />
<group expand="0" string="Group By">
<filter name="by_year" string="Year" context="{'group_by': 'name'}" />
<filter name="by_type" string="Line type" context="{'group_by': 'line_type'}" />
</group>
</search>
</field>
</record>
<record id="account_tax_return_year_action" model="ir.actions.act_window">
<field name="name">Tax returns</field>
<field name="res_model">account.tax.return.year</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{'search_deafault_by_year': 1}</field>
</record>
<menuitem
id="account_tax_return_year_menu"
name="Year tax return lines"
action="account_tax_return_year_action"
parent="account_reports_fr_2035_menu"
sequence="30" />
</odoo>

1
l10n_fr_tax_return/wizards/__init__.py

@ -0,0 +1 @@
from . import tax_return_wizard

106
l10n_fr_tax_return/wizards/tax_return_wizard.py

@ -0,0 +1,106 @@
import logging
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
_logger = logging.getLogger(__name__)
class TaxReturnWizard(models.TransientModel):
_name = "tax.return.wizard"
_description = "Tax return wizard"
name = fields.Char(string="Year", size=4)
# is_date_ok = fields.Boolean(string="Year ok", compute="_check_year")
def _check_year(self):
self.ensure_one()
if not self.name.isdigit() or int(self.name) >= fields.Date.today().year:
raise ValidationError(
_(
"Please set a year in the past and after you started your odoo accounting."
)
)
# return {
# "value": {
# "name": "",
# },
# "warning": {
# "title": _("Wrong year !"),
# "massage": _(
# "Please set a year in the past and after you started your odoo accounting."
# ),
# },
# }
def execute(self):
self._check_year()
start = fields.Date.to_date("{}-01-01".format(self.name))
stop = fields.Date.to_date("{}-12-31".format(self.name))
AML = self.env["account.move.line"]
ATR = self.env["account.tax.return"]
ATRY = self.env["account.tax.return.year"]
# Reset year lines if already created
ATRY.search([("name", "=", self.name)]).unlink()
atr_lines = ATR.search([])
atr_sum_lines = atr_lines.filtered("is_sum_line")
accounts = atr_lines.mapped("account_ids")
year_amls = AML.search(
[
("date", ">=", start),
("date", "<=", stop),
("account_id", "in", accounts.ids),
("parent_state", "=", "posted"),
]
)
base_vals_list = []
for line in atr_lines - atr_sum_lines:
base_vals_list.append(
{
"name": self.name,
"line_id": line.id,
"amount": line.compute_value(
year_amls.filtered(
lambda aml: aml.account_id.id in line.account_ids.ids
)
),
}
)
year_atry = ATRY.create(base_vals_list)
while atr_sum_lines:
summed_lines = ATR
for line in atr_sum_lines.filtered(
lambda atr: atr.id
not in (atr.mapped("add_line_id") | atr.mapped("sub_line_id")).ids
):
new_vals = {
"name": self.name,
"line_id": line.id,
"amount": (
sum(
year_atry.filtered(
lambda atry: atry.line_id.id in line.sum_line_ids.ids
).mapped("amount")
)
or 0.0
)
- (
sum(
year_atry.filtered(
lambda atry: atry.line_id.id in line.ded_line_ids.ids
).mapped("amount")
)
or 0.0
),
}
year_atry |= ATRY.create([new_vals])
summed_lines |= line
atr_sum_lines -= summed_lines
action = self.env.ref(
"l10n_fr_tax_return.account_tax_return_year_action"
).read()[0]
action.update(
{
"context": {"search_default_name": self.name},
}
)
return action

38
l10n_fr_tax_return/wizards/tax_return_wizard.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="tax_return_wizard_view_form" model="ir.ui.view">
<field name="name">tax.return.wizard.view.form</field>
<field name="model">tax.return.wizard</field>
<field name="arch" type="xml">
<form>
<group col="4">
<field name="name" />
<!-- <field name="is_date_ok" invisible="1" /> -->
</group>
<footer>
<button string="Compute year tax return lines" name="execute" type="object" class="oe_highlight"
data-hotkey="q" />
<button string="Cancel" class="btn btn-secondary" special="cancel" data-hotkey="z" />
</footer>
</form>
</field>
</record>
<record id="tax_return_wizard_action" model="ir.actions.act_window">
<field name="name">Tax returns compute</field>
<field name="res_model">tax.return.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<menuitem
id="tax_return_wizard_menu"
name="Tax return compute"
action="tax_return_wizard_action"
parent="account_reports_fr_2035_menu"
sequence="20" />
</odoo>
Loading…
Cancel
Save