From 19c689398bc9a1a0d8774745d2de6db567a2f752 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 26 Mar 2014 17:37:34 +0100 Subject: [PATCH 001/536] =?UTF-8?q?New=20module=20'l10n=5Ffr=5Fstate'=20to?= =?UTF-8?q?=20populate=20res=5Fcountry=5Fstate=20with=20french=20states,?= =?UTF-8?q?=20named=20'R=C3=A9gion'.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- l10n_fr_state/__init__.py | 6 + l10n_fr_state/__openerp__.py | 50 +++++ l10n_fr_state/data/res_country_state_data.yml | 178 ++++++++++++++++++ l10n_fr_state/i18n/fr.po | 82 ++++++++ l10n_fr_state/model/__init__.py | 6 + l10n_fr_state/model/res_country_state.py | 16 ++ l10n_fr_state/static/src/img/icon.png | Bin 0 -> 12803 bytes .../static/src/img/screenshots/1.png | Bin 0 -> 64302 bytes 8 files changed, 338 insertions(+) create mode 100755 l10n_fr_state/__init__.py create mode 100755 l10n_fr_state/__openerp__.py create mode 100644 l10n_fr_state/data/res_country_state_data.yml create mode 100644 l10n_fr_state/i18n/fr.po create mode 100755 l10n_fr_state/model/__init__.py create mode 100644 l10n_fr_state/model/res_country_state.py create mode 100644 l10n_fr_state/static/src/img/icon.png create mode 100644 l10n_fr_state/static/src/img/screenshots/1.png diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py new file mode 100755 index 000000000..a2a665b1b --- /dev/null +++ b/l10n_fr_state/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +from . import model diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py new file mode 100755 index 000000000..af4efc5b7 --- /dev/null +++ b/l10n_fr_state/__openerp__.py @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See Copyright and Licence Informations undermentioned. +################################################################################ +{ + 'name': 'French States (Région)', + 'version': '0.1', + 'category': 'base', + 'description': """ +Add French states data +====================== + +Feature: +-------- + * Populate the table res_country_state with the french states. (named 'Région') + +Technical information: +---------------------- + * Use 3166-2:FR codifications (more detail http://fr.wikipedia.org/wiki/ISO_3166-2:FR); + * Only populate inner states; (no Guyane, Mayotte, etc...) because there are in the res_country table; + * Change res_country_state.code size. (3 to 4); + +Copyright, Authors and Licence: +------------------------------- + * Copyright: 2013, Groupement Régional Alimentaire de Proximité; + * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); + * Licence: AGPL-3 (http://www.gnu.org/licenses/); + """, + 'author': 'GRAP', + 'website': 'http://www.grap.coop', + 'license': 'AGPL-3', + 'depends': [ + 'base', + ], + 'data': [ + 'data/res_country_state_data.yml', + ], + 'demo': [], + 'js': [], + 'css': [], + 'qweb': [], + 'images': [], + 'post_load': '', + 'application': False, + 'installable': True, + 'auto_install': False, + 'images': [ + 'static/src/img/screenshots/1.png' + ], +} diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml new file mode 100644 index 000000000..35e6ad739 --- /dev/null +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -0,0 +1,178 @@ +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_alsace0}: + code: FR-A + country_id: base.fr + name: Alsace + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_aquitaine0}: + code: FR-B + country_id: base.fr + name: Aquitaine + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_auvergne0}: + code: FR-C + country_id: base.fr + name: Auvergne + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_bourgogne0}: + code: FR-D + country_id: base.fr + name: Bourgogne + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_bretagne0}: + code: FR-E + country_id: base.fr + name: Bretagne + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_centre0}: + code: FR-F + country_id: base.fr + name: Centre + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_champagneardenne0}: + code: FR-G + country_id: base.fr + name: Champagne-Ardenne + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_corse0}: + code: FR-H + country_id: base.fr + name: Corse + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_franchecomte0}: + code: FR-I + country_id: base.fr + name: Franche-Comté + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_iledefrance0}: + code: FR-J + country_id: base.fr + name: Île-de-France + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_languedocroussillon0}: + code: FR-K + country_id: base.fr + name: Languedoc-Roussillon + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_limousin0}: + code: FR-L + country_id: base.fr + name: Limousin + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_lorraine0}: + code: FR-M + country_id: base.fr + name: Lorraine + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_midipyrenees0}: + code: FR-N + country_id: base.fr + name: Midi-Pyrénées + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_nordpasdecalais0}: + code: FR-O + country_id: base.fr + name: Nord-Pas-de-Calais + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_bassenormandie0}: + code: FR-P + country_id: base.fr + name: Basse-Normandie + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_hautenormandie0}: + code: FR-Q + country_id: base.fr + name: Haute-Normandie + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_paysdelaloire0}: + code: FR-R + country_id: base.fr + name: Pays de la Loire +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_picardie0}: + code: FR-S + country_id: base.fr + name: Picardie + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_poitoucharentes0}: + code: FR-T + country_id: base.fr + name: Poitou-Charentes + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_provencealpescotedazur0}: + code: FR-U + country_id: base.fr + name: Provence-Alpes-Côte d'Azur + +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_rhonealpes0}: + code: FR-V + country_id: base.fr + name: Rhône-Alpes diff --git a/l10n_fr_state/i18n/fr.po b/l10n_fr_state/i18n/fr.po new file mode 100644 index 000000000..d99712c36 --- /dev/null +++ b/l10n_fr_state/i18n/fr.po @@ -0,0 +1,82 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * l10n_fr_state +# * base +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-03-26 16:08+0000\n" +"PO-Revision-Date: 2014-03-26 16:08+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_state +#: code:_description:0 +#: model:ir.model,name:l10n_fr_state.model_res_country_state +#, python-format +msgid "Country state" +msgstr "Région" + +#. module: base +#: field:res.country.state,name:0 +msgid "State Name" +msgstr "Nom de la région" + +#. module: base +#: field:res.country.state,code:0 +msgid "State Code" +msgstr "Code de la région" + +#. module: base +#: model:ir.module.module,shortdesc:base.module_l10n_fr_state +msgid "French States (Région)" +msgstr "Régions Françaises" + +#. module: base +#: model:ir.module.module,description:base.module_l10n_fr_state +msgid "\n" +"Add French states data\n" +"======================\n" +"\n" +"Feature:\n" +"--------\n" +" * Populate the table res_country_state with the french states. (named 'Région')\n" +"\n" +"Technical information:\n" +"----------------------\n" +" * Use 3166-2:FR codifications (more detail http://fr.wikipedia.org/wiki/ISO_3166-2:FR);\n" +" * Only populate inner states; (no Guyane, Mayotte, etc...) because there are in the res_country table;\n" +" * Change res_country_state.code size. (3 to 4);\n" +"\n" +"Copyright, Authors and Licence:\n" +"-------------------------------\n" +" * Copyright: 2013, Groupement Régional Alimentaire de Proximité;\n" +" * Author: Sylvain LE GAL (https://twitter.com/legalsylvain);\n" +" * Licence: AGPL-3 (http://www.gnu.org/licenses/);\n" +" " +msgstr "\n" +"Ajoute les régions françaises en base de données\n" +"================================================\n" +"\n" +"Caractéristique :\n" +"----------------\n" +" * Remplit la table 'res_country_state' avec les régions françaises ;\n" +"\n" +"Informations techniques :\n" +"-------------------------\n" +" * Utilise la codification 3166-2:FR (plus de détail sur http://fr.wikipedia.org/wiki/ISO_3166-2:FR) ;\n" +" * Ne remplit que les régions métropolitaines (pas la Guyane, ni Mayotte, etc...) car ces régions sont déjà présentes dans la table 'res_country' ;\n" +" * Modifie la taille du champs 'res_country_state.code'. (de 3 à 4 caractères) ;\n" +"\n" +"Copyright, Auteurs et Licence:\n" +"------------------------------\n" +" * Copyright : 2013, Groupement Régional Alimentaire de Proximité ;\n" +" * Auteur : Sylvain LE GAL (https://twitter.com/legalsylvain) ;\n" +" * Licence : AGPL-3 (http://www.gnu.org/licenses/) ;\n" +" " diff --git a/l10n_fr_state/model/__init__.py b/l10n_fr_state/model/__init__.py new file mode 100755 index 000000000..8e1922fb4 --- /dev/null +++ b/l10n_fr_state/model/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +from . import res_country_state diff --git a/l10n_fr_state/model/res_country_state.py b/l10n_fr_state/model/res_country_state.py new file mode 100644 index 000000000..10aa50441 --- /dev/null +++ b/l10n_fr_state/model/res_country_state.py @@ -0,0 +1,16 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +from openerp.osv import fields +from openerp.osv.orm import Model + +class res_country_state(Model): + _inherit = 'res.country.state' + + _columns = { + 'code': fields.char('State Code', size=4, required=True, + help='The state code in max. four chars.', + ), + } diff --git a/l10n_fr_state/static/src/img/icon.png b/l10n_fr_state/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..805f2cb42d9c4af97ccbe2fa016e0700ca42b8f1 GIT binary patch literal 12803 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̙HU(VKaWxl{}*&j&I_NQ%H%cSy(}5 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 ME2Sh^D{cb%KYcQ7zW@LL literal 0 HcmV?d00001 diff --git a/l10n_fr_state/static/src/img/screenshots/1.png b/l10n_fr_state/static/src/img/screenshots/1.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd757c7c698547ed45d112088d1a2db72772ca0 GIT binary patch literal 64302 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 ulQsR{1u3pSuWog_J06aUxkMN literal 0 HcmV?d00001 From ddfe49b17f00c969dc632daf48bfc6a48608a6d9 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 26 Mar 2014 18:11:11 +0100 Subject: [PATCH 002/536] pot file. --- l10n_fr_state/i18n/l10n_fr_state.pot | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 l10n_fr_state/i18n/l10n_fr_state.pot diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot new file mode 100644 index 000000000..53140547c --- /dev/null +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -0,0 +1,16 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * l10n_fr_state +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-03-26 17:09+0000\n" +"PO-Revision-Date: 2014-03-26 17:09+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" From 0f6dbfdc5736d2d3d2d2e8c67f9d5b49ee6ffaa3 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 26 Mar 2014 18:15:34 +0100 Subject: [PATCH 003/536] remove useless translation. --- l10n_fr_state/i18n/fr.po | 7 ------- 1 file changed, 7 deletions(-) diff --git a/l10n_fr_state/i18n/fr.po b/l10n_fr_state/i18n/fr.po index d99712c36..127d23bfe 100644 --- a/l10n_fr_state/i18n/fr.po +++ b/l10n_fr_state/i18n/fr.po @@ -16,13 +16,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: l10n_fr_state -#: code:_description:0 -#: model:ir.model,name:l10n_fr_state.model_res_country_state -#, python-format -msgid "Country state" -msgstr "Région" - #. module: base #: field:res.country.state,name:0 msgid "State Name" From f35f46852f6f31a1fcf281a08a6cf00087a3a668 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 31 Mar 2014 10:42:01 +0200 Subject: [PATCH 004/536] Pep8 and licences. --- l10n_fr_state/__init__.py | 23 +++++++-- l10n_fr_state/__openerp__.py | 48 ++++++++++++------- l10n_fr_state/data/res_country_state_data.yml | 23 +++++++-- l10n_fr_state/i18n/fr.po | 21 ++++++++ l10n_fr_state/i18n/l10n_fr_state.pot | 21 ++++++++ l10n_fr_state/model/__init__.py | 23 +++++++-- l10n_fr_state/model/res_country_state.py | 30 +++++++++--- 7 files changed, 156 insertions(+), 33 deletions(-) diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py index a2a665b1b..c2b4f1f69 100755 --- a/l10n_fr_state/__init__.py +++ b/l10n_fr_state/__init__.py @@ -1,6 +1,23 @@ # -*- encoding: utf-8 -*- -################################################################################ -# See __openerp__.py file for Copyright and Licence Informations. -################################################################################ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## from . import model diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index af4efc5b7..458bd5b32 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -1,14 +1,33 @@ # -*- encoding: utf-8 -*- -################################################################################ -# See Copyright and Licence Informations undermentioned. -################################################################################ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + { 'name': 'French States (Région)', + 'summary': "Populate Database with French States (Région)", 'version': '0.1', 'category': 'base', 'description': """ -Add French states data -====================== +Populate Database with French States (Région) +============================================= Feature: -------- @@ -22,7 +41,7 @@ Copyright, Authors and Licence: ------------------------------- - * Copyright: 2013, Groupement Régional Alimentaire de Proximité; + * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité; * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); * Licence: AGPL-3 (http://www.gnu.org/licenses/); """, @@ -31,20 +50,13 @@ 'license': 'AGPL-3', 'depends': [ 'base', - ], + ], 'data': [ - 'data/res_country_state_data.yml', - ], - 'demo': [], - 'js': [], - 'css': [], - 'qweb': [], - 'images': [], - 'post_load': '', - 'application': False, + 'data/res_country_state_data.yml', + ], 'installable': True, 'auto_install': False, 'images': [ - 'static/src/img/screenshots/1.png' - ], + 'static/src/img/screenshots/1.png' + ], } diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index 35e6ad739..8239c1eb2 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -1,6 +1,23 @@ -################################################################################ -# See __openerp__.py file for Copyright and Licence Informations. -################################################################################ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## - Creating a res.country.state record diff --git a/l10n_fr_state/i18n/fr.po b/l10n_fr_state/i18n/fr.po index 127d23bfe..e4cc00270 100644 --- a/l10n_fr_state/i18n/fr.po +++ b/l10n_fr_state/i18n/fr.po @@ -1,3 +1,24 @@ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + # Translation of OpenERP Server. # This file contains the translation of the following modules: # * l10n_fr_state diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot index 53140547c..f3da48a0b 100644 --- a/l10n_fr_state/i18n/l10n_fr_state.pot +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -1,3 +1,24 @@ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + # Translation of OpenERP Server. # This file contains the translation of the following modules: # * l10n_fr_state diff --git a/l10n_fr_state/model/__init__.py b/l10n_fr_state/model/__init__.py index 8e1922fb4..5fc903300 100755 --- a/l10n_fr_state/model/__init__.py +++ b/l10n_fr_state/model/__init__.py @@ -1,6 +1,23 @@ # -*- encoding: utf-8 -*- -################################################################################ -# See __openerp__.py file for Copyright and Licence Informations. -################################################################################ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## from . import res_country_state diff --git a/l10n_fr_state/model/res_country_state.py b/l10n_fr_state/model/res_country_state.py index 10aa50441..d2a76dd0b 100644 --- a/l10n_fr_state/model/res_country_state.py +++ b/l10n_fr_state/model/res_country_state.py @@ -1,16 +1,34 @@ # -*- encoding: utf-8 -*- -################################################################################ -# See __openerp__.py file for Copyright and Licence Informations. -################################################################################ +############################################################################## +# +# l10n FR States module for OpenERP +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## from openerp.osv import fields from openerp.osv.orm import Model + class res_country_state(Model): _inherit = 'res.country.state' _columns = { - 'code': fields.char('State Code', size=4, required=True, - help='The state code in max. four chars.', - ), + 'code': fields.char( + 'State Code', size=4, required=True, + help='The state code in max. four chars.',), } From a27bdf8b7ef85b336223b40db93e09877ffebff1 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 31 Mar 2014 10:46:11 +0200 Subject: [PATCH 005/536] Pep8. --- l10n_fr_state/__openerp__.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 458bd5b32..420e9ca9b 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -22,7 +22,7 @@ { 'name': 'French States (Région)', - 'summary': "Populate Database with French States (Région)", + 'summary': 'Populate Database with French States (Région)', 'version': '0.1', 'category': 'base', 'description': """ @@ -31,12 +31,15 @@ Feature: -------- - * Populate the table res_country_state with the french states. (named 'Région') + * Populate the table res_country_state with the french states. """ + """(named 'Région') Technical information: ---------------------- - * Use 3166-2:FR codifications (more detail http://fr.wikipedia.org/wiki/ISO_3166-2:FR); - * Only populate inner states; (no Guyane, Mayotte, etc...) because there are in the res_country table; + * Use 3166-2:FR codifications (more detail """ + """http://fr.wikipedia.org/wiki/ISO_3166-2:FR); + * Only populate inner states; (no Guyane, Mayotte, etc...) because """ + """there are in the res_country table; * Change res_country_state.code size. (3 to 4); Copyright, Authors and Licence: From 1611e49ae4edab61877efe437cb8eae35625afb9 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 31 Mar 2014 12:58:10 +0200 Subject: [PATCH 006/536] change xml_id for res_country_state, removing useless autogenerated '0' at the end of the name; [REF] minor translation changes; --- l10n_fr_state/__openerp__.py | 3 +- l10n_fr_state/data/res_country_state_data.yml | 44 +++++++++---------- l10n_fr_state/i18n/fr.po | 34 +++++++++----- l10n_fr_state/i18n/l10n_fr_state.pot | 2 +- 4 files changed, 46 insertions(+), 37 deletions(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 420e9ca9b..07c290901 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -46,8 +46,7 @@ ------------------------------- * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité; * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); - * Licence: AGPL-3 (http://www.gnu.org/licenses/); - """, + * Licence: AGPL-3 (http://www.gnu.org/licenses/);""", 'author': 'GRAP', 'website': 'http://www.grap.coop', 'license': 'AGPL-3', diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index 8239c1eb2..bfe2ab1b2 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -22,7 +22,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_alsace0}: + !record {model: res.country.state, id: res_country_state_alsace}: code: FR-A country_id: base.fr name: Alsace @@ -30,7 +30,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_aquitaine0}: + !record {model: res.country.state, id: res_country_state_aquitaine}: code: FR-B country_id: base.fr name: Aquitaine @@ -38,7 +38,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_auvergne0}: + !record {model: res.country.state, id: res_country_state_auvergne}: code: FR-C country_id: base.fr name: Auvergne @@ -46,7 +46,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_bourgogne0}: + !record {model: res.country.state, id: res_country_state_bourgogne}: code: FR-D country_id: base.fr name: Bourgogne @@ -54,7 +54,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_bretagne0}: + !record {model: res.country.state, id: res_country_state_bretagne}: code: FR-E country_id: base.fr name: Bretagne @@ -62,7 +62,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_centre0}: + !record {model: res.country.state, id: res_country_state_centre}: code: FR-F country_id: base.fr name: Centre @@ -70,7 +70,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_champagneardenne0}: + !record {model: res.country.state, id: res_country_state_champagneardenne}: code: FR-G country_id: base.fr name: Champagne-Ardenne @@ -78,7 +78,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_corse0}: + !record {model: res.country.state, id: res_country_state_corse}: code: FR-H country_id: base.fr name: Corse @@ -86,7 +86,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_franchecomte0}: + !record {model: res.country.state, id: res_country_state_franchecomte}: code: FR-I country_id: base.fr name: Franche-Comté @@ -94,7 +94,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_iledefrance0}: + !record {model: res.country.state, id: res_country_state_iledefrance}: code: FR-J country_id: base.fr name: Île-de-France @@ -102,7 +102,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_languedocroussillon0}: + !record {model: res.country.state, id: res_country_state_languedocroussillon}: code: FR-K country_id: base.fr name: Languedoc-Roussillon @@ -110,7 +110,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_limousin0}: + !record {model: res.country.state, id: res_country_state_limousin}: code: FR-L country_id: base.fr name: Limousin @@ -118,7 +118,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_lorraine0}: + !record {model: res.country.state, id: res_country_state_lorraine}: code: FR-M country_id: base.fr name: Lorraine @@ -126,7 +126,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_midipyrenees0}: + !record {model: res.country.state, id: res_country_state_midipyrenees}: code: FR-N country_id: base.fr name: Midi-Pyrénées @@ -134,7 +134,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_nordpasdecalais0}: + !record {model: res.country.state, id: res_country_state_nordpasdecalais}: code: FR-O country_id: base.fr name: Nord-Pas-de-Calais @@ -142,7 +142,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_bassenormandie0}: + !record {model: res.country.state, id: res_country_state_bassenormandie}: code: FR-P country_id: base.fr name: Basse-Normandie @@ -150,7 +150,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_hautenormandie0}: + !record {model: res.country.state, id: res_country_state_hautenormandie}: code: FR-Q country_id: base.fr name: Haute-Normandie @@ -158,14 +158,14 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_paysdelaloire0}: + !record {model: res.country.state, id: res_country_state_paysdelaloire}: code: FR-R country_id: base.fr name: Pays de la Loire - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_picardie0}: + !record {model: res.country.state, id: res_country_state_picardie}: code: FR-S country_id: base.fr name: Picardie @@ -173,7 +173,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_poitoucharentes0}: + !record {model: res.country.state, id: res_country_state_poitoucharentes}: code: FR-T country_id: base.fr name: Poitou-Charentes @@ -181,7 +181,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_provencealpescotedazur0}: + !record {model: res.country.state, id: res_country_state_provencealpescotedazur}: code: FR-U country_id: base.fr name: Provence-Alpes-Côte d'Azur @@ -189,7 +189,7 @@ - Creating a res.country.state record - - !record {model: res.country.state, id: res_country_state_rhonealpes0}: + !record {model: res.country.state, id: res_country_state_rhonealpes}: code: FR-V country_id: base.fr name: Rhône-Alpes diff --git a/l10n_fr_state/i18n/fr.po b/l10n_fr_state/i18n/fr.po index e4cc00270..f9fec7856 100644 --- a/l10n_fr_state/i18n/fr.po +++ b/l10n_fr_state/i18n/fr.po @@ -18,12 +18,12 @@ # along with this program. If not, see . # ############################################################################## - # Translation of OpenERP Server. # This file contains the translation of the following modules: # * l10n_fr_state # * base # + msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" @@ -37,6 +37,13 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: l10n_fr_state +#: code:_description:0 +#: model:ir.model,name:l10n_fr_state.model_res_country_state +#, python-format +msgid "Country state" +msgstr "Région" + #. module: base #: field:res.country.state,name:0 msgid "State Name" @@ -52,11 +59,16 @@ msgstr "Code de la région" msgid "French States (Région)" msgstr "Régions Françaises" +#. module: base +#: model:ir.module.module,summary:base.module_l10n_fr_state +msgid "Populate Database with French States (Région)" +msgstr "Remplit la base de données avec les régions françaises" + #. module: base #: model:ir.module.module,description:base.module_l10n_fr_state msgid "\n" -"Add French states data\n" -"======================\n" +"Populate Database with French States (Région)\n" +"=============================================\n" "\n" "Feature:\n" "--------\n" @@ -70,17 +82,16 @@ msgid "\n" "\n" "Copyright, Authors and Licence:\n" "-------------------------------\n" -" * Copyright: 2013, Groupement Régional Alimentaire de Proximité;\n" +" * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité;\n" " * Author: Sylvain LE GAL (https://twitter.com/legalsylvain);\n" -" * Licence: AGPL-3 (http://www.gnu.org/licenses/);\n" -" " +" * Licence: AGPL-3 (http://www.gnu.org/licenses/);" msgstr "\n" -"Ajoute les régions françaises en base de données\n" -"================================================\n" +"Remplit la base de données avec les régions françaises\n" +"======================================================\n" "\n" "Caractéristique :\n" -"----------------\n" -" * Remplit la table 'res_country_state' avec les régions françaises ;\n" +"-----------------\n" +" * Remplit la table 'res_country_state' avec les régions françaises\n" "\n" "Informations techniques :\n" "-------------------------\n" @@ -92,5 +103,4 @@ msgstr "\n" "------------------------------\n" " * Copyright : 2013, Groupement Régional Alimentaire de Proximité ;\n" " * Auteur : Sylvain LE GAL (https://twitter.com/legalsylvain) ;\n" -" * Licence : AGPL-3 (http://www.gnu.org/licenses/) ;\n" -" " +" * Licence : AGPL-3 (http://www.gnu.org/licenses/) ;" diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot index f3da48a0b..ca0e89595 100644 --- a/l10n_fr_state/i18n/l10n_fr_state.pot +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -18,11 +18,11 @@ # along with this program. If not, see . # ############################################################################## - # Translation of OpenERP Server. # This file contains the translation of the following modules: # * l10n_fr_state # + msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" From 44ab2daa72472e43c9e73d71acbab7d2d67f91c4 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 14 Apr 2014 20:25:50 +0200 Subject: [PATCH 007/536] french country code size is now 1. (before 4, because there was a prefix 'FR-'); [REF] country code size are now unchanged; --- l10n_fr_state/__init__.py | 2 - l10n_fr_state/__openerp__.py | 3 +- l10n_fr_state/data/res_country_state_data.yml | 44 +++++++++---------- l10n_fr_state/model/__init__.py | 23 ---------- l10n_fr_state/model/res_country_state.py | 34 -------------- 5 files changed, 23 insertions(+), 83 deletions(-) delete mode 100755 l10n_fr_state/model/__init__.py delete mode 100644 l10n_fr_state/model/res_country_state.py diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py index c2b4f1f69..f85d38b03 100755 --- a/l10n_fr_state/__init__.py +++ b/l10n_fr_state/__init__.py @@ -19,5 +19,3 @@ # along with this program. If not, see . # ############################################################################## - -from . import model diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 07c290901..38ac6c4ba 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -36,11 +36,10 @@ Technical information: ---------------------- - * Use 3166-2:FR codifications (more detail """ + * Use 3166-2:FR codifications without country prefix (more detail """ """http://fr.wikipedia.org/wiki/ISO_3166-2:FR); * Only populate inner states; (no Guyane, Mayotte, etc...) because """ """there are in the res_country table; - * Change res_country_state.code size. (3 to 4); Copyright, Authors and Licence: ------------------------------- diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index bfe2ab1b2..c5d00ebec 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -23,7 +23,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_alsace}: - code: FR-A + code: A country_id: base.fr name: Alsace @@ -31,7 +31,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_aquitaine}: - code: FR-B + code: B country_id: base.fr name: Aquitaine @@ -39,7 +39,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_auvergne}: - code: FR-C + code: C country_id: base.fr name: Auvergne @@ -47,7 +47,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bourgogne}: - code: FR-D + code: D country_id: base.fr name: Bourgogne @@ -55,7 +55,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bretagne}: - code: FR-E + code: E country_id: base.fr name: Bretagne @@ -63,7 +63,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_centre}: - code: FR-F + code: F country_id: base.fr name: Centre @@ -71,7 +71,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_champagneardenne}: - code: FR-G + code: G country_id: base.fr name: Champagne-Ardenne @@ -79,7 +79,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_corse}: - code: FR-H + code: H country_id: base.fr name: Corse @@ -87,7 +87,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_franchecomte}: - code: FR-I + code: I country_id: base.fr name: Franche-Comté @@ -95,7 +95,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_iledefrance}: - code: FR-J + code: J country_id: base.fr name: Île-de-France @@ -103,7 +103,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_languedocroussillon}: - code: FR-K + code: K country_id: base.fr name: Languedoc-Roussillon @@ -111,7 +111,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_limousin}: - code: FR-L + code: L country_id: base.fr name: Limousin @@ -119,7 +119,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_lorraine}: - code: FR-M + code: M country_id: base.fr name: Lorraine @@ -127,7 +127,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_midipyrenees}: - code: FR-N + code: N country_id: base.fr name: Midi-Pyrénées @@ -135,7 +135,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_nordpasdecalais}: - code: FR-O + code: O country_id: base.fr name: Nord-Pas-de-Calais @@ -143,7 +143,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bassenormandie}: - code: FR-P + code: P country_id: base.fr name: Basse-Normandie @@ -151,7 +151,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_hautenormandie}: - code: FR-Q + code: Q country_id: base.fr name: Haute-Normandie @@ -159,14 +159,14 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_paysdelaloire}: - code: FR-R + code: R country_id: base.fr name: Pays de la Loire - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_picardie}: - code: FR-S + code: S country_id: base.fr name: Picardie @@ -174,7 +174,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_poitoucharentes}: - code: FR-T + code: T country_id: base.fr name: Poitou-Charentes @@ -182,7 +182,7 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_provencealpescotedazur}: - code: FR-U + code: U country_id: base.fr name: Provence-Alpes-Côte d'Azur @@ -190,6 +190,6 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_rhonealpes}: - code: FR-V + code: V country_id: base.fr name: Rhône-Alpes diff --git a/l10n_fr_state/model/__init__.py b/l10n_fr_state/model/__init__.py deleted file mode 100755 index 5fc903300..000000000 --- a/l10n_fr_state/model/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# l10n FR States module for OpenERP -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from . import res_country_state diff --git a/l10n_fr_state/model/res_country_state.py b/l10n_fr_state/model/res_country_state.py deleted file mode 100644 index d2a76dd0b..000000000 --- a/l10n_fr_state/model/res_country_state.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# l10n FR States module for OpenERP -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp.osv import fields -from openerp.osv.orm import Model - - -class res_country_state(Model): - _inherit = 'res.country.state' - - _columns = { - 'code': fields.char( - 'State Code', size=4, required=True, - help='The state code in max. four chars.',), - } From 386201af7eeec750e7400e554ed985d753d0a41d Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Mon, 2 Mar 2015 17:25:22 +0100 Subject: [PATCH 008/536] Add OCA as author of OCA addons In order to get visibility on https://www.odoo.com/apps the OCA board has decided to add the OCA as author of all the addons maintained as part of the association. --- l10n_fr_state/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 38ac6c4ba..5ca291e25 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -46,7 +46,7 @@ * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité; * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); * Licence: AGPL-3 (http://www.gnu.org/licenses/);""", - 'author': 'GRAP', + 'author': "GRAP,Odoo Community Association (OCA)", 'website': 'http://www.grap.coop', 'license': 'AGPL-3', 'depends': [ From c6f20ad1f4932c63a42dee9adacd076659c763a2 Mon Sep 17 00:00:00 2001 From: Yannick Vaucher Date: Tue, 3 Mar 2015 13:32:35 +0100 Subject: [PATCH 009/536] Move module icon in static/description --- .../static/{src/img => description}/icon.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename l10n_fr_state/static/{src/img => description}/icon.png (100%) diff --git a/l10n_fr_state/static/src/img/icon.png b/l10n_fr_state/static/description/icon.png similarity index 100% rename from l10n_fr_state/static/src/img/icon.png rename to l10n_fr_state/static/description/icon.png From 42421aae2a6d115f99cad5a19f918091e5305142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 9 Oct 2015 10:00:34 +0200 Subject: [PATCH 010/536] prefix versions with 8.0 --- l10n_fr_state/__openerp__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 5ca291e25..05b5416f2 100755 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -23,8 +23,8 @@ { 'name': 'French States (Région)', 'summary': 'Populate Database with French States (Région)', - 'version': '0.1', - 'category': 'base', + 'version': '8.0.0.1.0', + 'category': 'French Localization', 'description': """ Populate Database with French States (Région) ============================================= From b98962127f70c5932f2e4626f983e84c3080d342 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 14 Oct 2015 02:27:16 +0200 Subject: [PATCH 011/536] Make modules uninstallable --- l10n_fr_state/__openerp__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 l10n_fr_state/__openerp__.py diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py old mode 100755 new mode 100644 From 6831b0f7cfca4810ef7d3c3c0524a2dfa38f7ff5 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 18 Oct 2015 11:09:07 +0200 Subject: [PATCH 012/536] Port l10n_fr_department, l10n_fr_state and l10n_fr_tax_sale_ttc to v9 --- l10n_fr_state/__init__.py | 22 +--------------------- l10n_fr_state/__openerp__.py | 9 ++++----- 2 files changed, 5 insertions(+), 26 deletions(-) mode change 100755 => 100644 l10n_fr_state/__init__.py diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py old mode 100755 new mode 100644 index f85d38b03..40a96afc6 --- a/l10n_fr_state/__init__.py +++ b/l10n_fr_state/__init__.py @@ -1,21 +1 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# l10n FR States module for OpenERP -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 05b5416f2..0751eb26c 100644 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -1,7 +1,7 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- ############################################################################## # -# l10n FR States module for OpenERP +# l10n FR States module for Odoo # Copyright (C) 2013-2014 GRAP (http://www.grap.coop) # @author Sylvain LE GAL (https://twitter.com/legalsylvain) # @@ -23,7 +23,7 @@ { 'name': 'French States (Région)', 'summary': 'Populate Database with French States (Région)', - 'version': '8.0.0.1.0', + 'version': '9.0.0.1.0', 'category': 'French Localization', 'description': """ Populate Database with French States (Région) @@ -55,9 +55,8 @@ 'data': [ 'data/res_country_state_data.yml', ], - 'installable': True, - 'auto_install': False, 'images': [ 'static/src/img/screenshots/1.png' ], + 'installable': True, } From 04d5378b0cb069ec64b36bbb6873f33393bb89f2 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 8 Jul 2016 00:03:44 +0200 Subject: [PATCH 013/536] Migration to new region organisation dated 01/01/2016 and to new region names --- l10n_fr_state/__openerp__.py | 38 ++---- l10n_fr_state/data/res_country_state_data.yml | 114 ++++-------------- .../migrations/9.0.0.1.1/post-migration.py | 27 +++++ .../migrations/9.0.0.1.1/pre-migration.py | 62 ++++++++++ 4 files changed, 118 insertions(+), 123 deletions(-) create mode 100644 l10n_fr_state/migrations/9.0.0.1.1/post-migration.py create mode 100644 l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 0751eb26c..101f6976e 100644 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -1,29 +1,11 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# l10n FR States module for Odoo -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# © 2013-2016 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'French States (Région)', 'summary': 'Populate Database with French States (Région)', - 'version': '9.0.0.1.0', + 'version': '9.0.0.1.1', 'category': 'French Localization', 'description': """ Populate Database with French States (Région) @@ -46,17 +28,11 @@ * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité; * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); * Licence: AGPL-3 (http://www.gnu.org/licenses/);""", - 'author': "GRAP,Odoo Community Association (OCA)", + 'author': "GRAP,Akretion,Odoo Community Association (OCA)", 'website': 'http://www.grap.coop', 'license': 'AGPL-3', - 'depends': [ - 'base', - ], - 'data': [ - 'data/res_country_state_data.yml', - ], - 'images': [ - 'static/src/img/screenshots/1.png' - ], + 'depends': ['base'], + 'data': ['data/res_country_state_data.yml'], + 'images': ['static/src/img/screenshots/1.png'], 'installable': True, } diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index c5d00ebec..fd443fa9a 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- ############################################################################## # # l10n FR States module for OpenERP @@ -23,39 +24,39 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_alsace}: - code: A + code: 44 country_id: base.fr - name: Alsace + name: Grand Est # ex Alsace-Champagne-Ardenne-Lorraine - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_aquitaine}: - code: B + code: 75 country_id: base.fr - name: Aquitaine + name: Nouvelle Aquitaine # ex Aquitaine-Limousin-Poitou-Charentes - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_auvergne}: - code: C + code: 84 country_id: base.fr - name: Auvergne + name: Auvergne-Rhône-Alpes - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bourgogne}: - code: D + code: 27 country_id: base.fr - name: Bourgogne + name: Bourgogne-Franche-Comté - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bretagne}: - code: E + code: 53 country_id: base.fr name: Bretagne @@ -63,39 +64,23 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_centre}: - code: F + code: 24 country_id: base.fr - name: Centre - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_champagneardenne}: - code: G - country_id: base.fr - name: Champagne-Ardenne + name: Centre-Val de Loire - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_corse}: - code: H + code: 94 country_id: base.fr name: Corse -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_franchecomte}: - code: I - country_id: base.fr - name: Franche-Comté - - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_iledefrance}: - code: J + code: 11 country_id: base.fr name: Île-de-France @@ -103,93 +88,38 @@ Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_languedocroussillon}: - code: K - country_id: base.fr - name: Languedoc-Roussillon - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_limousin}: - code: L - country_id: base.fr - name: Limousin - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_lorraine}: - code: M - country_id: base.fr - name: Lorraine - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_midipyrenees}: - code: N + code: 76 country_id: base.fr - name: Midi-Pyrénées + name: Occitanie # ex Languedoc-Roussillon-Midi-Pyrénées - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_nordpasdecalais}: - code: O + code: 32 country_id: base.fr - name: Nord-Pas-de-Calais + name: Hauts-de-France # ex Nord-Pas-de-Calais-Picardie - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_bassenormandie}: - code: P + code: 28 country_id: base.fr - name: Basse-Normandie - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_hautenormandie}: - code: Q - country_id: base.fr - name: Haute-Normandie + name: Normandie - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_paysdelaloire}: - code: R + code: 52 country_id: base.fr name: Pays de la Loire -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_picardie}: - code: S - country_id: base.fr - name: Picardie - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_poitoucharentes}: - code: T - country_id: base.fr - name: Poitou-Charentes - Creating a res.country.state record - !record {model: res.country.state, id: res_country_state_provencealpescotedazur}: - code: U + code: 93 country_id: base.fr name: Provence-Alpes-Côte d'Azur - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_rhonealpes}: - code: V - country_id: base.fr - name: Rhône-Alpes diff --git a/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py new file mode 100644 index 000000000..baa8a3362 --- /dev/null +++ b/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import pooler, SUPERUSER_ID + + +def migrate(cr, version): + if not version: + return + + pool = pooler.get_pool(cr.dbname) + imdo = pool['ir.model.data'] + rcso = pool['res.country.state'] + # key : region XMLID - value : new name + new_names = { + 'res_country_state_alsace': u'Grand Est', + 'res_country_state_aquitaine': u'Nouvelle Aquitaine', + 'res_country_state_languedocroussillon': u'Occitanie', + 'res_country_state_nordpasdecalais': u'Hauts-de-France', + } + + for xmlid, new_name in new_names.iteritems(): + state_id = imdo.xmlid_to_res_id( + cr, SUPERUSER_ID, 'l10n_fr_state.' + xmlid) + if state_id: + rcso.write(cr, SUPERUSER_ID, state_id, {'name': new_name}) diff --git a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py new file mode 100644 index 000000000..dd7669501 --- /dev/null +++ b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +def migrate(cr, version): + print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx version=", version + if not version: + return + + # key : source region XMLID - value : destination region XMLID + new_region_map = { + 'res_country_state_rhonealpes': 'res_country_state_auvergne', + 'res_country_state_champagneardenne': 'res_country_state_alsace', + 'res_country_state_lorraine': 'res_country_state_alsace', + 'res_country_state_limousin': 'res_country_state_aquitaine', + 'res_country_state_poitoucharentes': 'res_country_state_aquitaine', + 'res_country_state_franchecomte': 'res_country_state_bourgogne', + 'res_country_state_midipyrenees': + 'res_country_state_languedocroussillon', + 'res_country_state_picardie': 'res_country_state_nordpasdecalais', + 'res_country_state_hautenormandie': 'res_country_state_bassenormandie', + } + + # same as new_region_map but with IDs instead of XMLIDs + new_region_map_id = {} + + for src, dest in new_region_map.iteritems(): + cr.execute(""" + SELECT res_id from ir_model_data where model='res.country.state' + AND module='l10n_fr_state' AND name=%s + """, (src, )) + res_src_id = cr.fetchall() + cr.execute(""" + SELECT res_id from ir_model_data where model='res.country.state' + AND module='l10n_fr_state' AND name=%s + """, (dest, )) + res_dest_id = cr.fetchall() + if res_src_id and res_dest_id: + new_region_map_id[res_src_id[0][0]] = res_dest_id[0][0] + + for src_id, dest_id in new_region_map_id.iteritems(): + cr.execute(""" + UPDATE res_partner set state_id=%s where state_id=%s + """, (dest_id, src_id)) + + cr.execute(""" + SELECT id from ir_model where model='res.country.department' + """) + dpt = cr.fetchall() + if dpt: + cr.execute(""" + UPDATE res_country_department set state_id=%s where state_id=%s + """, (dest_id, src_id)) + + cr.execute(""" + SELECT id from ir_model where model='res.better.zip' + """) + bzip = cr.fetchall() + if bzip: + cr.execute(""" + UPDATE res_better_zip set state_id=%s where state_id=%s + """, (dest_id, src_id)) From 3a640797a5cc66f2b968c7e9d8e30e2a2321e3ba Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 8 Jul 2016 00:06:51 +0200 Subject: [PATCH 014/536] Remove debug print --- l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py | 1 - 1 file changed, 1 deletion(-) diff --git a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py index dd7669501..567376e59 100644 --- a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py +++ b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py @@ -3,7 +3,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). def migrate(cr, version): - print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx version=", version if not version: return From 2cf92c42c11baa7cff2a7ab98aa38825047f53a2 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 8 Jul 2016 12:02:02 +0200 Subject: [PATCH 015/536] PEP8 fix --- l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py index 567376e59..0c0b1c140 100644 --- a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py +++ b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py @@ -2,6 +2,7 @@ # © 2015-2016 Akretion (Alexis de Lattre ) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + def migrate(cr, version): if not version: return From 6e1c656e1ba8b1efe1e722335906e426cd75bd18 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 19 Jul 2016 10:57:05 +0200 Subject: [PATCH 016/536] Update description and move it to README.rst --- l10n_fr_state/__openerp__.py | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 101f6976e..1b10cd998 100644 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -1,33 +1,13 @@ # -*- coding: utf-8 -*- # © 2013-2016 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) +# © 2015-2016 Akretion (Alexis de Lattre ) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'French States (Région)', - 'summary': 'Populate Database with French States (Région)', + 'name': 'French States (Régions)', + 'summary': 'Populate Database with French States (Régions)', 'version': '9.0.0.1.1', 'category': 'French Localization', - 'description': """ -Populate Database with French States (Région) -============================================= - -Feature: --------- - * Populate the table res_country_state with the french states. """ - """(named 'Région') - -Technical information: ----------------------- - * Use 3166-2:FR codifications without country prefix (more detail """ - """http://fr.wikipedia.org/wiki/ISO_3166-2:FR); - * Only populate inner states; (no Guyane, Mayotte, etc...) because """ - """there are in the res_country table; - -Copyright, Authors and Licence: -------------------------------- - * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité; - * Author: Sylvain LE GAL (https://twitter.com/legalsylvain); - * Licence: AGPL-3 (http://www.gnu.org/licenses/);""", 'author': "GRAP,Akretion,Odoo Community Association (OCA)", 'website': 'http://www.grap.coop', 'license': 'AGPL-3', From 6ec68e2b8ad09ec6ac708d3f9eebdb809f6bfb15 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 21 Jul 2016 12:54:29 +0200 Subject: [PATCH 017/536] Add overseas regions and departments --- l10n_fr_state/data/res_country_state_data.yml | 57 ++++++++++++------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index fd443fa9a..079a29a27 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -1,24 +1,6 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# l10n FR States module for OpenERP -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# © 2013-2014 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) +# © 2016 Akretion (Alexis de Lattre ) - Creating a res.country.state record @@ -123,3 +105,38 @@ code: 93 country_id: base.fr name: Provence-Alpes-Côte d'Azur +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_guadeloupe}: + code: GP + country_id: base.gp + name: Guadeloupe +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_martinique}: + code: MQ + country_id: base.mq + name: Martinique +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_guyane}: + code: GF + country_id: base.gf + name: Guyane +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_reunion}: + code: RE + country_id: base.re + name: La Réunion +- + Creating a res.country.state record +- + !record {model: res.country.state, id: res_country_state_mayotte}: + code: YT + country_id: base.yt + name: Mayotte From 2722172b9fba91279be92ec543f2c68b7815a7ec Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 24 Jul 2016 10:55:22 +0200 Subject: [PATCH 018/536] FIX computed field department_id to make it work with overseas departments Add missing README.rst --- l10n_fr_state/README.rst | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 l10n_fr_state/README.rst diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst new file mode 100644 index 000000000..0e7a79e77 --- /dev/null +++ b/l10n_fr_state/README.rst @@ -0,0 +1,60 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +======================= +French States (Régions) +======================= + +This module populate the table *res_country_state* with the french +states (*Régions françaises*), including overseas states (in order to +have the full list of legal French Regions in the l10n_fr_state table). + +In the past, the module was using 3166-2:FR codifications +without country prefix (more detail on `Wikipedia +`_), but unfortunately it is +not the codification used by `geonames.org `_. +So, to be compatible with the OCA module *base_location_geonames_import* +which is available in the OCA project `partner-contact +`_, we switched to the +codification used by geonames. + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/121/9.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Sylvain LE GAL (`Twitter `_), GRAP (Groupement Régional Alimentaire de Proximité) +* Alexis de Lattre + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. From 94e5e06715da6db5d5f04a28edd88fa418d7b24e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 25 Jul 2016 12:04:02 +0200 Subject: [PATCH 019/536] Add module l10n_fr_department_oversea Convert YAML test to unittest Convert api.one to api.multi Remove country_id field in data/res_country_department_data.yml because it is a related field --- l10n_fr_state/README.rst | 15 ++++---- l10n_fr_state/data/res_country_state_data.yml | 35 ------------------- 2 files changed, 7 insertions(+), 43 deletions(-) diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst index 0e7a79e77..7832d47d9 100644 --- a/l10n_fr_state/README.rst +++ b/l10n_fr_state/README.rst @@ -7,17 +7,16 @@ French States (Régions) ======================= This module populate the table *res_country_state* with the french -states (*Régions françaises*), including overseas states (in order to -have the full list of legal French Regions in the l10n_fr_state table). +states (*Régions françaises*), but only the french states of mainland. +If you need the overseas states, please install the module +*l10n_fr_department_oversea*. In the past, the module was using 3166-2:FR codifications without country prefix (more detail on `Wikipedia -`_), but unfortunately it is -not the codification used by `geonames.org `_. -So, to be compatible with the OCA module *base_location_geonames_import* -which is available in the OCA project `partner-contact -`_, we switched to the -codification used by geonames. +`_), but unfortunately this +codification hasn't been updated since 2013, so we can't +use it with the new organisation of regions that was introduced on January 1st 2016. So we switched to +the INSEE codification, cf `Wikipedia (Codes_géographiques_de_la_France) `_ ; by the way, this codification is also used by `geonames.org `_. Usage ===== diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml index 079a29a27..126d4a5ed 100644 --- a/l10n_fr_state/data/res_country_state_data.yml +++ b/l10n_fr_state/data/res_country_state_data.yml @@ -105,38 +105,3 @@ code: 93 country_id: base.fr name: Provence-Alpes-Côte d'Azur -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_guadeloupe}: - code: GP - country_id: base.gp - name: Guadeloupe -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_martinique}: - code: MQ - country_id: base.mq - name: Martinique -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_guyane}: - code: GF - country_id: base.gf - name: Guyane -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_reunion}: - code: RE - country_id: base.re - name: La Réunion -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_mayotte}: - code: YT - country_id: base.yt - name: Mayotte From ddb8c03c73b27b4750a86cbeb581e35e116748c1 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 25 Jul 2016 13:08:16 +0200 Subject: [PATCH 020/536] PEP8 fix --- l10n_fr_state/__openerp__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 1b10cd998..60a7cb464 100644 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -4,8 +4,8 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'French States (Régions)', - 'summary': 'Populate Database with French States (Régions)', + 'name': u'French States (Régions)', + 'summary': u'Populate Database with French States (Régions)', 'version': '9.0.0.1.1', 'category': 'French Localization', 'author': "GRAP,Akretion,Odoo Community Association (OCA)", From fc61b03745a060485cc5298c9cbe679d2bd5dbbe Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 6 Oct 2016 14:54:33 +0200 Subject: [PATCH 021/536] Make modules uninstallable --- l10n_fr_state/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__openerp__.py index 60a7cb464..08e44179c 100644 --- a/l10n_fr_state/__openerp__.py +++ b/l10n_fr_state/__openerp__.py @@ -14,5 +14,5 @@ 'depends': ['base'], 'data': ['data/res_country_state_data.yml'], 'images': ['static/src/img/screenshots/1.png'], - 'installable': True, + 'installable': False, } From 6ae9ea650a772e3eefb7dc7885dc95c0c4aa87d5 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 6 Oct 2016 14:54:34 +0200 Subject: [PATCH 022/536] Rename manifest files --- l10n_fr_state/{__openerp__.py => __manifest__.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename l10n_fr_state/{__openerp__.py => __manifest__.py} (100%) diff --git a/l10n_fr_state/__openerp__.py b/l10n_fr_state/__manifest__.py similarity index 100% rename from l10n_fr_state/__openerp__.py rename to l10n_fr_state/__manifest__.py From a8e285f3b2cd41bd31529612cda68918ce8f8d2f Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 7 Oct 2016 00:14:27 +0200 Subject: [PATCH 023/536] Port l10n_fr_department, l10n_fr_department_oversea and l10n_fr_state to v10 --- l10n_fr_state/README.rst | 2 +- l10n_fr_state/__manifest__.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst index 7832d47d9..ee734a783 100644 --- a/l10n_fr_state/README.rst +++ b/l10n_fr_state/README.rst @@ -23,7 +23,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/121/9.0 + :target: https://runbot.odoo-community.org/runbot/121/10.0 Bug Tracker diff --git a/l10n_fr_state/__manifest__.py b/l10n_fr_state/__manifest__.py index 08e44179c..934d12445 100644 --- a/l10n_fr_state/__manifest__.py +++ b/l10n_fr_state/__manifest__.py @@ -6,7 +6,7 @@ { 'name': u'French States (Régions)', 'summary': u'Populate Database with French States (Régions)', - 'version': '9.0.0.1.1', + 'version': '10.0.0.1.1', 'category': 'French Localization', 'author': "GRAP,Akretion,Odoo Community Association (OCA)", 'website': 'http://www.grap.coop', @@ -14,5 +14,5 @@ 'depends': ['base'], 'data': ['data/res_country_state_data.yml'], 'images': ['static/src/img/screenshots/1.png'], - 'installable': False, + 'installable': True, } From 5065963a1babf2d158bb2fc4597c13594dc541f4 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 11 Oct 2016 15:10:17 +0200 Subject: [PATCH 024/536] Remove migration script of older versions Start with good version names --- l10n_fr_state/__manifest__.py | 2 +- .../migrations/9.0.0.1.1/post-migration.py | 27 -------- .../migrations/9.0.0.1.1/pre-migration.py | 62 ------------------- 3 files changed, 1 insertion(+), 90 deletions(-) delete mode 100644 l10n_fr_state/migrations/9.0.0.1.1/post-migration.py delete mode 100644 l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py diff --git a/l10n_fr_state/__manifest__.py b/l10n_fr_state/__manifest__.py index 934d12445..53ff2f495 100644 --- a/l10n_fr_state/__manifest__.py +++ b/l10n_fr_state/__manifest__.py @@ -6,7 +6,7 @@ { 'name': u'French States (Régions)', 'summary': u'Populate Database with French States (Régions)', - 'version': '10.0.0.1.1', + 'version': '10.0.1.0.0', 'category': 'French Localization', 'author': "GRAP,Akretion,Odoo Community Association (OCA)", 'website': 'http://www.grap.coop', diff --git a/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py deleted file mode 100644 index baa8a3362..000000000 --- a/l10n_fr_state/migrations/9.0.0.1.1/post-migration.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2016 Akretion (Alexis de Lattre ) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from openerp import pooler, SUPERUSER_ID - - -def migrate(cr, version): - if not version: - return - - pool = pooler.get_pool(cr.dbname) - imdo = pool['ir.model.data'] - rcso = pool['res.country.state'] - # key : region XMLID - value : new name - new_names = { - 'res_country_state_alsace': u'Grand Est', - 'res_country_state_aquitaine': u'Nouvelle Aquitaine', - 'res_country_state_languedocroussillon': u'Occitanie', - 'res_country_state_nordpasdecalais': u'Hauts-de-France', - } - - for xmlid, new_name in new_names.iteritems(): - state_id = imdo.xmlid_to_res_id( - cr, SUPERUSER_ID, 'l10n_fr_state.' + xmlid) - if state_id: - rcso.write(cr, SUPERUSER_ID, state_id, {'name': new_name}) diff --git a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py b/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py deleted file mode 100644 index 0c0b1c140..000000000 --- a/l10n_fr_state/migrations/9.0.0.1.1/pre-migration.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2015-2016 Akretion (Alexis de Lattre ) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - - -def migrate(cr, version): - if not version: - return - - # key : source region XMLID - value : destination region XMLID - new_region_map = { - 'res_country_state_rhonealpes': 'res_country_state_auvergne', - 'res_country_state_champagneardenne': 'res_country_state_alsace', - 'res_country_state_lorraine': 'res_country_state_alsace', - 'res_country_state_limousin': 'res_country_state_aquitaine', - 'res_country_state_poitoucharentes': 'res_country_state_aquitaine', - 'res_country_state_franchecomte': 'res_country_state_bourgogne', - 'res_country_state_midipyrenees': - 'res_country_state_languedocroussillon', - 'res_country_state_picardie': 'res_country_state_nordpasdecalais', - 'res_country_state_hautenormandie': 'res_country_state_bassenormandie', - } - - # same as new_region_map but with IDs instead of XMLIDs - new_region_map_id = {} - - for src, dest in new_region_map.iteritems(): - cr.execute(""" - SELECT res_id from ir_model_data where model='res.country.state' - AND module='l10n_fr_state' AND name=%s - """, (src, )) - res_src_id = cr.fetchall() - cr.execute(""" - SELECT res_id from ir_model_data where model='res.country.state' - AND module='l10n_fr_state' AND name=%s - """, (dest, )) - res_dest_id = cr.fetchall() - if res_src_id and res_dest_id: - new_region_map_id[res_src_id[0][0]] = res_dest_id[0][0] - - for src_id, dest_id in new_region_map_id.iteritems(): - cr.execute(""" - UPDATE res_partner set state_id=%s where state_id=%s - """, (dest_id, src_id)) - - cr.execute(""" - SELECT id from ir_model where model='res.country.department' - """) - dpt = cr.fetchall() - if dpt: - cr.execute(""" - UPDATE res_country_department set state_id=%s where state_id=%s - """, (dest_id, src_id)) - - cr.execute(""" - SELECT id from ir_model where model='res.better.zip' - """) - bzip = cr.fetchall() - if bzip: - cr.execute(""" - UPDATE res_better_zip set state_id=%s where state_id=%s - """, (dest_id, src_id)) From 690ada84d8649849843b92d6d1b8cd0a6d51d7bd Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 8 Mar 2017 15:35:03 +0100 Subject: [PATCH 025/536] Add pre_init_hook on l10n_fr_state to pre-create XML-IDs for existing French regions --- l10n_fr_state/__init__.py | 2 ++ l10n_fr_state/__manifest__.py | 1 + l10n_fr_state/pre_init_hook.py | 49 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 l10n_fr_state/pre_init_hook.py diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py index 40a96afc6..04aff0d71 100644 --- a/l10n_fr_state/__init__.py +++ b/l10n_fr_state/__init__.py @@ -1 +1,3 @@ # -*- coding: utf-8 -*- + +from .pre_init_hook import create_fr_state_xmlid diff --git a/l10n_fr_state/__manifest__.py b/l10n_fr_state/__manifest__.py index 53ff2f495..764925d9d 100644 --- a/l10n_fr_state/__manifest__.py +++ b/l10n_fr_state/__manifest__.py @@ -12,6 +12,7 @@ 'website': 'http://www.grap.coop', 'license': 'AGPL-3', 'depends': ['base'], + 'pre_init_hook': 'create_fr_state_xmlid', 'data': ['data/res_country_state_data.yml'], 'images': ['static/src/img/screenshots/1.png'], 'installable': True, diff --git a/l10n_fr_state/pre_init_hook.py b/l10n_fr_state/pre_init_hook.py new file mode 100644 index 000000000..4be2a5e69 --- /dev/null +++ b/l10n_fr_state/pre_init_hook.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, SUPERUSER_ID + +fr_states = { + 44: 'res_country_state_alsace', + 75: 'res_country_state_aquitaine', + 84: 'res_country_state_auvergne', + 27: 'res_country_state_bourgogne', + 53: 'res_country_state_bretagne', + 24: 'res_country_state_centre', + 94: 'res_country_state_corse', + 11: 'res_country_state_iledefrance', + 76: 'res_country_state_languedocroussillon', + 32: 'res_country_state_nordpasdecalais', + 28: 'res_country_state_bassenormandie', + 52: 'res_country_state_paysdelaloire', + 93: 'res_country_state_provencealpescotedazur', +} + +# This code is designed to avoid a problem in the following scenario: +# On a new database, the administrator executes these steps in this order: +# 1) installs base_location_geonames_import and run the geonames import wizard +# for France +# -> it creates all the French regions (without xmlid) +# 2) installs l10n_fr_state (directly or when installing the module +# for DEB l10n_fr_intrastat_product) +# -> it tries to create the French regions, but it fails due to the unicity +# constraint unique(country_id, code) of res.country.state. + + +def create_fr_state_xmlid(cr): + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + fr_country = env.ref('base.fr') + for region_code, xmlid in fr_states.iteritems(): + regions = env['res.country.state'].search([ + ('code', '=', region_code), + ('country_id', '=', fr_country.id)]) + if regions: + env['ir.model.data'].create({ + 'name': xmlid, + 'res_id': regions[0].id, + 'module': 'l10n_fr_state', + 'model': 'res.country.state', + }) + return From 523ee0e71789fa2687920882325dc1eba831b424 Mon Sep 17 00:00:00 2001 From: Nicolas JEUDY Date: Sat, 13 Jan 2018 16:33:56 +0100 Subject: [PATCH 026/536] l10n_fr_state: migrate to 11.0 --- l10n_fr_state/README.rst | 7 ++++++- l10n_fr_state/__init__.py | 2 -- l10n_fr_state/__manifest__.py | 11 +++++++---- l10n_fr_state/pre_init_hook.py | 5 ++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst index ee734a783..9aaddf0fd 100644 --- a/l10n_fr_state/README.rst +++ b/l10n_fr_state/README.rst @@ -23,8 +23,12 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/121/10.0 + :target: https://runbot.odoo-community.org/runbot/121/11.0 +Known issues / Roadmap +====================== + +* YML data should be migrated to XML Bug Tracker =========== @@ -42,6 +46,7 @@ Contributors * Sylvain LE GAL (`Twitter `_), GRAP (Groupement Régional Alimentaire de Proximité) * Alexis de Lattre +* Nicolas JEUDY Maintainer ---------- diff --git a/l10n_fr_state/__init__.py b/l10n_fr_state/__init__.py index 04aff0d71..c36b9b9c6 100644 --- a/l10n_fr_state/__init__.py +++ b/l10n_fr_state/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from .pre_init_hook import create_fr_state_xmlid diff --git a/l10n_fr_state/__manifest__.py b/l10n_fr_state/__manifest__.py index 764925d9d..fdc7ba6c9 100644 --- a/l10n_fr_state/__manifest__.py +++ b/l10n_fr_state/__manifest__.py @@ -4,11 +4,14 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': u'French States (Régions)', - 'summary': u'Populate Database with French States (Régions)', - 'version': '10.0.1.0.0', + 'name': 'French States (Régions)', + 'summary': 'Populate Database with French States (Régions)', + 'version': '11.0.1.0.0', 'category': 'French Localization', - 'author': "GRAP,Akretion,Odoo Community Association (OCA)", + 'author': 'GRAP, ' + 'Akretion, ' + 'Nicolas JEUDY, ' + 'Odoo Community Association (OCA)', 'website': 'http://www.grap.coop', 'license': 'AGPL-3', 'depends': ['base'], diff --git a/l10n_fr_state/pre_init_hook.py b/l10n_fr_state/pre_init_hook.py index 4be2a5e69..48c0d5c31 100644 --- a/l10n_fr_state/pre_init_hook.py +++ b/l10n_fr_state/pre_init_hook.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2017 Akretion (Alexis de Lattre ) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -35,7 +34,7 @@ def create_fr_state_xmlid(cr): with api.Environment.manage(): env = api.Environment(cr, SUPERUSER_ID, {}) fr_country = env.ref('base.fr') - for region_code, xmlid in fr_states.iteritems(): + for region_code, xmlid in fr_states.items(): regions = env['res.country.state'].search([ ('code', '=', region_code), ('country_id', '=', fr_country.id)]) @@ -45,5 +44,5 @@ def create_fr_state_xmlid(cr): 'res_id': regions[0].id, 'module': 'l10n_fr_state', 'model': 'res.country.state', - }) + }) return From a27c7c2e0e646d69a4ca187f88d5827e8b6ae586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Fri, 15 Jun 2018 23:22:12 +0200 Subject: [PATCH 027/536] remove obsolete .pot files [ci skip] --- l10n_fr_state/i18n/l10n_fr_state.pot | 37 ---------------------------- 1 file changed, 37 deletions(-) delete mode 100644 l10n_fr_state/i18n/l10n_fr_state.pot diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot deleted file mode 100644 index ca0e89595..000000000 --- a/l10n_fr_state/i18n/l10n_fr_state.pot +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################## -# -# l10n FR States module for OpenERP -# Copyright (C) 2013-2014 GRAP (http://www.grap.coop) -# @author Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * l10n_fr_state -# - -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-03-26 17:09+0000\n" -"PO-Revision-Date: 2014-03-26 17:09+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" From 76bb5c1f3e7a0639ee18d4a8e55188fdf24df581 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sat, 23 Jun 2018 13:23:27 +0000 Subject: [PATCH 028/536] Update l10n_fr_state.pot --- l10n_fr_state/i18n/fr.po | 130 +++++++++++++-------------- l10n_fr_state/i18n/l10n_fr_state.pot | 14 +++ 2 files changed, 77 insertions(+), 67 deletions(-) create mode 100644 l10n_fr_state/i18n/l10n_fr_state.pot diff --git a/l10n_fr_state/i18n/fr.po b/l10n_fr_state/i18n/fr.po index f9fec7856..c3b89b0c1 100644 --- a/l10n_fr_state/i18n/fr.po +++ b/l10n_fr_state/i18n/fr.po @@ -1,4 +1,4 @@ -############################################################################## +# ############################################################################# # # l10n FR States module for OpenERP # Copyright (C) 2013-2014 GRAP (http://www.grap.coop) @@ -17,13 +17,12 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # -############################################################################## +# ############################################################################# # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * l10n_fr_state -# * base +# * l10n_fr_state +# * base # - msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" @@ -32,75 +31,72 @@ msgstr "" "PO-Revision-Date: 2014-03-26 16:08+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: l10n_fr_state -#: code:_description:0 -#: model:ir.model,name:l10n_fr_state.model_res_country_state -#, python-format -msgid "Country state" -msgstr "Région" +#~ msgid "Country state" +#~ msgstr "Région" -#. module: base -#: field:res.country.state,name:0 -msgid "State Name" -msgstr "Nom de la région" +#~ msgid "State Name" +#~ msgstr "Nom de la région" -#. module: base -#: field:res.country.state,code:0 -msgid "State Code" -msgstr "Code de la région" +#~ msgid "State Code" +#~ msgstr "Code de la région" -#. module: base -#: model:ir.module.module,shortdesc:base.module_l10n_fr_state -msgid "French States (Région)" -msgstr "Régions Françaises" +#~ msgid "French States (Région)" +#~ msgstr "Régions Françaises" -#. module: base -#: model:ir.module.module,summary:base.module_l10n_fr_state -msgid "Populate Database with French States (Région)" -msgstr "Remplit la base de données avec les régions françaises" +#~ msgid "Populate Database with French States (Région)" +#~ msgstr "Remplit la base de données avec les régions françaises" -#. module: base -#: model:ir.module.module,description:base.module_l10n_fr_state -msgid "\n" -"Populate Database with French States (Région)\n" -"=============================================\n" -"\n" -"Feature:\n" -"--------\n" -" * Populate the table res_country_state with the french states. (named 'Région')\n" -"\n" -"Technical information:\n" -"----------------------\n" -" * Use 3166-2:FR codifications (more detail http://fr.wikipedia.org/wiki/ISO_3166-2:FR);\n" -" * Only populate inner states; (no Guyane, Mayotte, etc...) because there are in the res_country table;\n" -" * Change res_country_state.code size. (3 to 4);\n" -"\n" -"Copyright, Authors and Licence:\n" -"-------------------------------\n" -" * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de Proximité;\n" -" * Author: Sylvain LE GAL (https://twitter.com/legalsylvain);\n" -" * Licence: AGPL-3 (http://www.gnu.org/licenses/);" -msgstr "\n" -"Remplit la base de données avec les régions françaises\n" -"======================================================\n" -"\n" -"Caractéristique :\n" -"-----------------\n" -" * Remplit la table 'res_country_state' avec les régions françaises\n" -"\n" -"Informations techniques :\n" -"-------------------------\n" -" * Utilise la codification 3166-2:FR (plus de détail sur http://fr.wikipedia.org/wiki/ISO_3166-2:FR) ;\n" -" * Ne remplit que les régions métropolitaines (pas la Guyane, ni Mayotte, etc...) car ces régions sont déjà présentes dans la table 'res_country' ;\n" -" * Modifie la taille du champs 'res_country_state.code'. (de 3 à 4 caractères) ;\n" -"\n" -"Copyright, Auteurs et Licence:\n" -"------------------------------\n" -" * Copyright : 2013, Groupement Régional Alimentaire de Proximité ;\n" -" * Auteur : Sylvain LE GAL (https://twitter.com/legalsylvain) ;\n" -" * Licence : AGPL-3 (http://www.gnu.org/licenses/) ;" +#~ msgid "" +#~ "\n" +#~ "Populate Database with French States (Région)\n" +#~ "=============================================\n" +#~ "\n" +#~ "Feature:\n" +#~ "--------\n" +#~ " * Populate the table res_country_state with the french states. (named " +#~ "'Région')\n" +#~ "\n" +#~ "Technical information:\n" +#~ "----------------------\n" +#~ " * Use 3166-2:FR codifications (more detail http://fr.wikipedia.org/" +#~ "wiki/ISO_3166-2:FR);\n" +#~ " * Only populate inner states; (no Guyane, Mayotte, etc...) because " +#~ "there are in the res_country table;\n" +#~ " * Change res_country_state.code size. (3 to 4);\n" +#~ "\n" +#~ "Copyright, Authors and Licence:\n" +#~ "-------------------------------\n" +#~ " * Copyright: 2013-2014, GRAP, Groupement Régional Alimentaire de " +#~ "Proximité;\n" +#~ " * Author: Sylvain LE GAL (https://twitter.com/legalsylvain);\n" +#~ " * Licence: AGPL-3 (http://www.gnu.org/licenses/);" +#~ msgstr "" +#~ "\n" +#~ "Remplit la base de données avec les régions françaises\n" +#~ "======================================================\n" +#~ "\n" +#~ "Caractéristique :\n" +#~ "-----------------\n" +#~ " * Remplit la table 'res_country_state' avec les régions françaises\n" +#~ "\n" +#~ "Informations techniques :\n" +#~ "-------------------------\n" +#~ " * Utilise la codification 3166-2:FR (plus de détail sur http://fr." +#~ "wikipedia.org/wiki/ISO_3166-2:FR) ;\n" +#~ " * Ne remplit que les régions métropolitaines (pas la Guyane, ni " +#~ "Mayotte, etc...) car ces régions sont déjà présentes dans la table " +#~ "'res_country' ;\n" +#~ " * Modifie la taille du champs 'res_country_state.code'. (de 3 à 4 " +#~ "caractères) ;\n" +#~ "\n" +#~ "Copyright, Auteurs et Licence:\n" +#~ "------------------------------\n" +#~ " * Copyright : 2013, Groupement Régional Alimentaire de Proximité ;\n" +#~ " * Auteur : Sylvain LE GAL (https://twitter.com/legalsylvain) ;\n" +#~ " * Licence : AGPL-3 (http://www.gnu.org/licenses/) ;" diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot new file mode 100644 index 000000000..447d3bb3c --- /dev/null +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \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" + From 6e5bc18360e2ca291c160c27132980a500983a29 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 5 Oct 2018 11:15:11 +0200 Subject: [PATCH 029/536] [MIG] l10n_fr_department, l10n_fr_department_oversea, l10n_fr_state from v11 to v12 --- l10n_fr_state/README.rst | 64 ----------- l10n_fr_state/__manifest__.py | 9 +- l10n_fr_state/data/res_country_state.xml | 95 ++++++++++++++++ l10n_fr_state/data/res_country_state_data.yml | 107 ------------------ l10n_fr_state/pre_init_hook.py | 3 +- l10n_fr_state/readme/CONTRIBUTORS.rst | 3 + l10n_fr_state/readme/DESCRIPTION.rst | 11 ++ 7 files changed, 116 insertions(+), 176 deletions(-) delete mode 100644 l10n_fr_state/README.rst create mode 100644 l10n_fr_state/data/res_country_state.xml delete mode 100644 l10n_fr_state/data/res_country_state_data.yml create mode 100644 l10n_fr_state/readme/CONTRIBUTORS.rst create mode 100644 l10n_fr_state/readme/DESCRIPTION.rst diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst deleted file mode 100644 index 9aaddf0fd..000000000 --- a/l10n_fr_state/README.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -======================= -French States (Régions) -======================= - -This module populate the table *res_country_state* with the french -states (*Régions françaises*), but only the french states of mainland. -If you need the overseas states, please install the module -*l10n_fr_department_oversea*. - -In the past, the module was using 3166-2:FR codifications -without country prefix (more detail on `Wikipedia -`_), but unfortunately this -codification hasn't been updated since 2013, so we can't -use it with the new organisation of regions that was introduced on January 1st 2016. So we switched to -the INSEE codification, cf `Wikipedia (Codes_géographiques_de_la_France) `_ ; by the way, this codification is also used by `geonames.org `_. - -Usage -===== - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/121/11.0 - -Known issues / Roadmap -====================== - -* YML data should be migrated to XML - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smashing it by providing a detailed and welcomed feedback. - -Credits -======= - -Contributors ------------- - -* Sylvain LE GAL (`Twitter `_), GRAP (Groupement Régional Alimentaire de Proximité) -* Alexis de Lattre -* Nicolas JEUDY - -Maintainer ----------- - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -To contribute to this module, please visit https://odoo-community.org. diff --git a/l10n_fr_state/__manifest__.py b/l10n_fr_state/__manifest__.py index fdc7ba6c9..b084af9e9 100644 --- a/l10n_fr_state/__manifest__.py +++ b/l10n_fr_state/__manifest__.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- -# © 2013-2016 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) -# © 2015-2016 Akretion (Alexis de Lattre ) +# Copyright 2013-2018 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) +# Copyright 2015-2018 Akretion France +# @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'French States (Régions)', 'summary': 'Populate Database with French States (Régions)', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'French Localization', 'author': 'GRAP, ' 'Akretion, ' @@ -16,7 +17,7 @@ 'license': 'AGPL-3', 'depends': ['base'], 'pre_init_hook': 'create_fr_state_xmlid', - 'data': ['data/res_country_state_data.yml'], + 'data': ['data/res_country_state.xml'], 'images': ['static/src/img/screenshots/1.png'], 'installable': True, } diff --git a/l10n_fr_state/data/res_country_state.xml b/l10n_fr_state/data/res_country_state.xml new file mode 100644 index 000000000..1b7b8b63e --- /dev/null +++ b/l10n_fr_state/data/res_country_state.xml @@ -0,0 +1,95 @@ + + + + + + + + + Grand Est + 44 + + + + + + Nouvelle Aquitaine + 75 + + + + + Auvergne-Rhône-Alpes + 84 + + + + + Bourgogne-Franche-Comté + 27 + + + + + Bretagne + 53 + + + + + Centre-Val de Loire + 24 + + + + + Corse + 94 + + + + + Île-de-France + 11 + + + + + + Occitanie + 76 + + + + + + Hauts-de-France + 32 + + + + + Normandie + 28 + + + + + Pays de la Loire + 52 + + + + + Provence-Alpes-Côte d'Azur + 93 + + + + + diff --git a/l10n_fr_state/data/res_country_state_data.yml b/l10n_fr_state/data/res_country_state_data.yml deleted file mode 100644 index 126d4a5ed..000000000 --- a/l10n_fr_state/data/res_country_state_data.yml +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2013-2014 GRAP (Sylvain LE GAL https://twitter.com/legalsylvain) -# © 2016 Akretion (Alexis de Lattre ) - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_alsace}: - code: 44 - country_id: base.fr - name: Grand Est # ex Alsace-Champagne-Ardenne-Lorraine - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_aquitaine}: - code: 75 - country_id: base.fr - name: Nouvelle Aquitaine # ex Aquitaine-Limousin-Poitou-Charentes - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_auvergne}: - code: 84 - country_id: base.fr - name: Auvergne-Rhône-Alpes - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_bourgogne}: - code: 27 - country_id: base.fr - name: Bourgogne-Franche-Comté - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_bretagne}: - code: 53 - country_id: base.fr - name: Bretagne - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_centre}: - code: 24 - country_id: base.fr - name: Centre-Val de Loire - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_corse}: - code: 94 - country_id: base.fr - name: Corse - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_iledefrance}: - code: 11 - country_id: base.fr - name: Île-de-France - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_languedocroussillon}: - code: 76 - country_id: base.fr - name: Occitanie # ex Languedoc-Roussillon-Midi-Pyrénées - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_nordpasdecalais}: - code: 32 - country_id: base.fr - name: Hauts-de-France # ex Nord-Pas-de-Calais-Picardie - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_bassenormandie}: - code: 28 - country_id: base.fr - name: Normandie - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_paysdelaloire}: - code: 52 - country_id: base.fr - name: Pays de la Loire - -- - Creating a res.country.state record -- - !record {model: res.country.state, id: res_country_state_provencealpescotedazur}: - code: 93 - country_id: base.fr - name: Provence-Alpes-Côte d'Azur diff --git a/l10n_fr_state/pre_init_hook.py b/l10n_fr_state/pre_init_hook.py index 48c0d5c31..54350ea0f 100644 --- a/l10n_fr_state/pre_init_hook.py +++ b/l10n_fr_state/pre_init_hook.py @@ -1,4 +1,5 @@ -# © 2017 Akretion (Alexis de Lattre ) +# Copyright 2017-2018 Akretion France +# @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, SUPERUSER_ID diff --git a/l10n_fr_state/readme/CONTRIBUTORS.rst b/l10n_fr_state/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..b9bd37043 --- /dev/null +++ b/l10n_fr_state/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Sylvain LE GAL (`Twitter `_), GRAP (Groupement Régional Alimentaire de Proximité) +* Alexis de Lattre +* Nicolas JEUDY diff --git a/l10n_fr_state/readme/DESCRIPTION.rst b/l10n_fr_state/readme/DESCRIPTION.rst new file mode 100644 index 000000000..4198cf62c --- /dev/null +++ b/l10n_fr_state/readme/DESCRIPTION.rst @@ -0,0 +1,11 @@ +This module populate the table *res_country_state* with the french +states (*Régions françaises*), but only the french states of mainland. +If you need the overseas states, please install the module +*l10n_fr_department_oversea*. + +In the past, the module was using 3166-2:FR codifications +without country prefix (more detail on `Wikipedia +`_), but unfortunately this +codification hasn't been updated since 2013, so we can't +use it with the new organisation of regions that was introduced on January 1st 2016. So we switched to +the INSEE codification, cf `Wikipedia (Codes_géographiques_de_la_France) `_ ; by the way, this codification is also used by `geonames.org `_. From 2a599598252c81673fa96ac4c07926d55000e836 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 7 Nov 2018 10:24:02 +0000 Subject: [PATCH 030/536] [UPD] README.rst --- l10n_fr_state/README.rst | 87 ++++ l10n_fr_state/static/description/index.html | 431 ++++++++++++++++++++ 2 files changed, 518 insertions(+) create mode 100644 l10n_fr_state/README.rst create mode 100644 l10n_fr_state/static/description/index.html diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst new file mode 100644 index 000000000..38f1a138a --- /dev/null +++ b/l10n_fr_state/README.rst @@ -0,0 +1,87 @@ +======================= +French States (Régions) +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-france/tree/12.0/l10n_fr_state + :alt: OCA/l10n-france +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-france-12-0/l10n-france-12-0-l10n_fr_state + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/121/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module populate the table *res_country_state* with the french +states (*Régions françaises*), but only the french states of mainland. +If you need the overseas states, please install the module +*l10n_fr_department_oversea*. + +In the past, the module was using 3166-2:FR codifications +without country prefix (more detail on `Wikipedia +`_), but unfortunately this +codification hasn't been updated since 2013, so we can't +use it with the new organisation of regions that was introduced on January 1st 2016. So we switched to +the INSEE codification, cf `Wikipedia (Codes_géographiques_de_la_France) `_ ; by the way, this codification is also used by `geonames.org `_. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP +* Akretion +* Nicolas JEUDY + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (`Twitter `_), GRAP (Groupement Régional Alimentaire de Proximité) +* Alexis de Lattre +* Nicolas JEUDY + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/l10n-france `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_state/static/description/index.html b/l10n_fr_state/static/description/index.html new file mode 100644 index 000000000..87ee9f22a --- /dev/null +++ b/l10n_fr_state/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +French States (Régions) + + + +

+

French States (Régions)

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

This module populate the table res_country_state with the french +states (Régions françaises), but only the french states of mainland. +If you need the overseas states, please install the module +l10n_fr_department_oversea.

+

In the past, the module was using 3166-2:FR codifications +without country prefix (more detail on Wikipedia), but unfortunately this +codification hasn’t been updated since 2013, so we can’t +use it with the new organisation of regions that was introduced on January 1st 2016. So we switched to +the INSEE codification, cf Wikipedia (Codes_géographiques_de_la_France) ; by the way, this codification is also used by geonames.org.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
  • Akretion
  • +
  • Nicolas JEUDY
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 5921f9ee9ae98500459c3e37cca2b45f3ddd6db1 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 7 Nov 2018 10:36:05 +0000 Subject: [PATCH 031/536] [UPD] Update l10n_fr_state.pot --- l10n_fr_state/i18n/l10n_fr_state.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot index 447d3bb3c..d2e396f15 100644 --- a/l10n_fr_state/i18n/l10n_fr_state.pot +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" From 6e99778bc2ee566315ef33e73a4edbd8672c3935 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 03:01:30 +0000 Subject: [PATCH 032/536] [UPD] README.rst --- l10n_fr_state/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_state/static/description/index.html b/l10n_fr_state/static/description/index.html index 87ee9f22a..258684449 100644 --- a/l10n_fr_state/static/description/index.html +++ b/l10n_fr_state/static/description/index.html @@ -3,7 +3,7 @@ - + French States (Régions) + + +
+

French Localization - Check Social Security Number

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

With this module, the social security number of employees of French companies will be checked: if the length or checksum is wrong, an error message will be displayed.

+

Table of contents

+ +
+

Installation

+

This module require the Python stdnum library. To install it, run:

+
+pip3 install python-stdnum
+
+
+
+

Usage

+

Check that the country of the company is France. Go to the menu Employees > Employees, select an employee. In the tab Private Information, enter the French social security number in the field SSN No.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From fbe056980fc117c76b50405b2cc012d1afac151b Mon Sep 17 00:00:00 2001 From: oca-git-bot Date: Sun, 1 Nov 2020 15:58:10 +0100 Subject: [PATCH 065/536] [IMP] update dotfiles [ci skip] --- l10n_fr_hr_check_ssnid/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_hr_check_ssnid/__manifest__.py b/l10n_fr_hr_check_ssnid/__manifest__.py index 03d976351..d406a1e7e 100644 --- a/l10n_fr_hr_check_ssnid/__manifest__.py +++ b/l10n_fr_hr_check_ssnid/__manifest__.py @@ -9,7 +9,7 @@ "license": "AGPL-3", "summary": "Check validity of Social Security Numbers in French companies", "author": "Akretion,Odoo Community Association (OCA)", - "website": "https://github.com/OCA/l10n-france/", + "website": "https://github.com/OCA/l10n-france", "depends": ["hr"], "external_dependencies": {"python": ["stdnum"]}, "data": ["views/hr_employee.xml"], From 07b5f0c5bf78f81c7469c3ed9e3c710f6ec6e09b Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 10 Aug 2021 22:13:04 +0000 Subject: [PATCH 066/536] [UPD] Update l10n_fr_hr_check_ssnid.pot --- .../i18n/l10n_fr_hr_check_ssnid.pot | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot index 66ca31219..78993e3f3 100644 --- a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot +++ b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot @@ -1,26 +1,40 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * l10n_fr_hr_check_ssnid +# * l10n_fr_hr_check_ssnid # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\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_hr_check_ssnid +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__display_name +msgid "Display Name" +msgstr "" + #. module: l10n_fr_hr_check_ssnid #: model:ir.model,name:l10n_fr_hr_check_ssnid.model_hr_employee msgid "Employee" msgstr "" #. module: l10n_fr_hr_check_ssnid -#: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:27 +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__id +msgid "ID" +msgstr "" + +#. module: l10n_fr_hr_check_ssnid +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_fr_hr_check_ssnid +#: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, python-format msgid "The French Social Security Number '%s' is invalid. (%s)" msgstr "" - From 0b122f4bb043052c10ce123ae7bffce5b928919a Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Tue, 10 Aug 2021 22:17:19 +0000 Subject: [PATCH 067/536] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-france-14.0/l10n-france-14.0-l10n_fr_hr_check_ssnid Translate-URL: https://translation.odoo-community.org/projects/l10n-france-14-0/l10n-france-14-0-l10n_fr_hr_check_ssnid/ --- l10n_fr_hr_check_ssnid/i18n/fr.po | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/fr.po b/l10n_fr_hr_check_ssnid/i18n/fr.po index ca60576ee..ed05e34c1 100644 --- a/l10n_fr_hr_check_ssnid/i18n/fr.po +++ b/l10n_fr_hr_check_ssnid/i18n/fr.po @@ -18,13 +18,28 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#. module: l10n_fr_hr_check_ssnid +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__display_name +msgid "Display Name" +msgstr "" + #. module: l10n_fr_hr_check_ssnid #: model:ir.model,name:l10n_fr_hr_check_ssnid.model_hr_employee msgid "Employee" msgstr "Employé" #. module: l10n_fr_hr_check_ssnid -#: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:27 +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__id +msgid "ID" +msgstr "" + +#. module: l10n_fr_hr_check_ssnid +#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_fr_hr_check_ssnid +#: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, python-format msgid "The French Social Security Number '%s' is invalid. (%s)" msgstr "Le numéro de sécurité sociale '%s' est invalide. (%s)" From 71263971d81597a43a6b72a8fec710deff5faced Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 1 Sep 2021 22:51:51 +0200 Subject: [PATCH 068/536] Restore tests and remove Alpha status Unfuck the "Donald Trump" pull request: this is the real/serious work made by the anti-Donald Trump squad. --- l10n_fr_hr_check_ssnid/__manifest__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_fr_hr_check_ssnid/__manifest__.py b/l10n_fr_hr_check_ssnid/__manifest__.py index d406a1e7e..9912449e0 100644 --- a/l10n_fr_hr_check_ssnid/__manifest__.py +++ b/l10n_fr_hr_check_ssnid/__manifest__.py @@ -9,6 +9,7 @@ "license": "AGPL-3", "summary": "Check validity of Social Security Numbers in French companies", "author": "Akretion,Odoo Community Association (OCA)", + "maintainers": ["alexis-via"], "website": "https://github.com/OCA/l10n-france", "depends": ["hr"], "external_dependencies": {"python": ["stdnum"]}, From 73311239c381fbf4a26bd9cd1c999aca3c85be97 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 2 Sep 2021 12:13:44 +0000 Subject: [PATCH 069/536] [UPD] README.rst --- l10n_fr_hr_check_ssnid/README.rst | 8 ++++++++ l10n_fr_hr_check_ssnid/static/description/index.html | 2 ++ 2 files changed, 10 insertions(+) diff --git a/l10n_fr_hr_check_ssnid/README.rst b/l10n_fr_hr_check_ssnid/README.rst index 994c200be..629431c64 100644 --- a/l10n_fr_hr_check_ssnid/README.rst +++ b/l10n_fr_hr_check_ssnid/README.rst @@ -82,6 +82,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. +.. |maintainer-alexis-via| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-alexis-via| + This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_hr_check_ssnid/static/description/index.html b/l10n_fr_hr_check_ssnid/static/description/index.html index a63309f9d..cdbe6c07b 100644 --- a/l10n_fr_hr_check_ssnid/static/description/index.html +++ b/l10n_fr_hr_check_ssnid/static/description/index.html @@ -423,6 +423,8 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

+

Current maintainer:

+

alexis-via

This module is part of the OCA/l10n-france project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 3d54c90441b4a42303ad9d20f7ec14be9e364abc Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 2 Sep 2021 12:13:56 +0000 Subject: [PATCH 070/536] l10n_fr_hr_check_ssnid 14.0.1.0.1 --- l10n_fr_hr_check_ssnid/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_hr_check_ssnid/__manifest__.py b/l10n_fr_hr_check_ssnid/__manifest__.py index 9912449e0..65b43f2f8 100644 --- a/l10n_fr_hr_check_ssnid/__manifest__.py +++ b/l10n_fr_hr_check_ssnid/__manifest__.py @@ -4,7 +4,7 @@ { "name": "French Localization - Check Social Security Number", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "category": "Human Resources", "license": "AGPL-3", "summary": "Check validity of Social Security Numbers in French companies", From 8efc93b9c40f13dd9bf5f0b2b8e413d581113028 Mon Sep 17 00:00:00 2001 From: syera bonneaux Date: Fri, 21 Oct 2022 10:55:16 +0200 Subject: [PATCH 071/536] [MIG] l10n_fr_hr_check_ssnid: Migration to 16.0 --- l10n_fr_hr_check_ssnid/__manifest__.py | 3 ++- .../i18n/l10n_fr_hr_check_ssnid.pot | 21 ++++--------------- l10n_fr_hr_check_ssnid/models/hr_employee.py | 9 +++++--- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/__manifest__.py b/l10n_fr_hr_check_ssnid/__manifest__.py index 65b43f2f8..df3c21cbe 100644 --- a/l10n_fr_hr_check_ssnid/__manifest__.py +++ b/l10n_fr_hr_check_ssnid/__manifest__.py @@ -4,8 +4,9 @@ { "name": "French Localization - Check Social Security Number", - "version": "14.0.1.0.1", + "version": "16.0.1.0.0", "category": "Human Resources", + "development_status": "Mature", "license": "AGPL-3", "summary": "Check validity of Social Security Numbers in French companies", "author": "Akretion,Odoo Community Association (OCA)", diff --git a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot index 78993e3f3..ae1d9f4c4 100644 --- a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot +++ b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot @@ -4,8 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-21 08:47+0000\n" +"PO-Revision-Date: 2022-10-21 08:47+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -13,28 +15,13 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__display_name -msgid "Display Name" -msgstr "" - #. module: l10n_fr_hr_check_ssnid #: model:ir.model,name:l10n_fr_hr_check_ssnid.model_hr_employee msgid "Employee" msgstr "" -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__id -msgid "ID" -msgstr "" - -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee____last_update -msgid "Last Modified on" -msgstr "" - #. module: l10n_fr_hr_check_ssnid #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, python-format -msgid "The French Social Security Number '%s' is invalid. (%s)" +msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" msgstr "" diff --git a/l10n_fr_hr_check_ssnid/models/hr_employee.py b/l10n_fr_hr_check_ssnid/models/hr_employee.py index 3fec5c24d..ece6728bd 100644 --- a/l10n_fr_hr_check_ssnid/models/hr_employee.py +++ b/l10n_fr_hr_check_ssnid/models/hr_employee.py @@ -26,6 +26,9 @@ def france_ssnid_constrain(self): validate(empl.ssnid) except (InvalidFormat, InvalidLength, InvalidChecksum) as e: raise ValidationError( - _("The French Social Security Number '%s' is invalid. " "(%s)") - % (empl.ssnid, e) - ) + _( + "The French Social Security Number '%(ssnid)s' " + "is invalid. (%(e)s)" + ) + % {"ssnid": empl.ssnid, "e": e} + ) from e From 6a46ad573e1ecc1609dda38a726a5080cea0e25e Mon Sep 17 00:00:00 2001 From: syera bonneaux Date: Fri, 21 Oct 2022 11:43:15 +0200 Subject: [PATCH 072/536] [TRANS] l10n_fr_hr_check_ssnid: fr --- l10n_fr_hr_check_ssnid/i18n/fr.po | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/fr.po b/l10n_fr_hr_check_ssnid/i18n/fr.po index ed05e34c1..c8c60f2f8 100644 --- a/l10n_fr_hr_check_ssnid/i18n/fr.po +++ b/l10n_fr_hr_check_ssnid/i18n/fr.po @@ -8,38 +8,25 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-24 05:38+0000\n" -"PO-Revision-Date: 2018-03-24 05:38+0000\n" +"POT-Creation-Date: 2022-10-21 08:47+0000\n" +"PO-Revision-Date: 2022-10-21 11:38+0200\n" "Last-Translator: Quentin THEURET , 2018\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__display_name -msgid "Display Name" -msgstr "" +"X-Generator: Poedit 3.0.1\n" #. module: l10n_fr_hr_check_ssnid #: model:ir.model,name:l10n_fr_hr_check_ssnid.model_hr_employee msgid "Employee" msgstr "Employé" -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee__id -msgid "ID" -msgstr "" - -#. module: l10n_fr_hr_check_ssnid -#: model:ir.model.fields,field_description:l10n_fr_hr_check_ssnid.field_hr_employee____last_update -msgid "Last Modified on" -msgstr "" - #. module: l10n_fr_hr_check_ssnid #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 -#, python-format -msgid "The French Social Security Number '%s' is invalid. (%s)" -msgstr "Le numéro de sécurité sociale '%s' est invalide. (%s)" +#, fuzzy, python-format +#| msgid "The French Social Security Number '%s' is invalid. (%s)" +msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" +msgstr "Le numéro de sécurité sociale '%(ssnid)s' est invalide. (%(e)s)" From 246f789ac1494e3c442a2e2313ef53c7659256ce Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 3 Nov 2022 15:36:42 +0000 Subject: [PATCH 073/536] [UPD] Update l10n_fr_hr_check_ssnid.pot --- l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot | 2 -- 1 file changed, 2 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot index ae1d9f4c4..0b7161aca 100644 --- a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot +++ b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-21 08:47+0000\n" -"PO-Revision-Date: 2022-10-21 08:47+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" From a20a85d2299d100303ee62d6348c2cab83579d39 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 3 Nov 2022 15:39:16 +0000 Subject: [PATCH 074/536] [UPD] README.rst --- l10n_fr_hr_check_ssnid/README.rst | 14 +++++++------- .../static/description/index.html | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/README.rst b/l10n_fr_hr_check_ssnid/README.rst index 629431c64..04bbe31e4 100644 --- a/l10n_fr_hr_check_ssnid/README.rst +++ b/l10n_fr_hr_check_ssnid/README.rst @@ -7,20 +7,20 @@ French Localization - Check Social Security Number !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png :target: https://odoo-community.org/page/development-status - :alt: Beta + :alt: Mature .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-france/tree/14.0/l10n_fr_hr_check_ssnid + :target: https://github.com/OCA/l10n-france/tree/16.0/l10n_fr_hr_check_ssnid :alt: OCA/l10n-france .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-france-14-0/l10n-france-14-0-l10n_fr_hr_check_ssnid + :target: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_hr_check_ssnid :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/14.0 + :target: https://runbot.odoo-community.org/runbot/121/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -52,7 +52,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -90,6 +90,6 @@ Current `maintainer `__: |maintainer-alexis-via| -This module is part of the `OCA/l10n-france `_ project on GitHub. +This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_hr_check_ssnid/static/description/index.html b/l10n_fr_hr_check_ssnid/static/description/index.html index cdbe6c07b..23ba76b89 100644 --- a/l10n_fr_hr_check_ssnid/static/description/index.html +++ b/l10n_fr_hr_check_ssnid/static/description/index.html @@ -367,7 +367,7 @@

French Localization - Check Social Security Number

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

Mature License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

With this module, the social security number of employees of French companies will be checked: if the length or checksum is wrong, an error message will be displayed.

Table of contents

@@ -399,7 +399,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -425,7 +425,7 @@

Maintainers

promote its widespread use.

Current maintainer:

alexis-via

-

This module is part of the OCA/l10n-france project on GitHub.

+

This module is part of the OCA/l10n-france project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 31f2e96f7487a65870fbecdb674850c877741263 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 3 Nov 2022 19:29:52 +0000 Subject: [PATCH 075/536] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_hr_check_ssnid Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_hr_check_ssnid/ --- l10n_fr_hr_check_ssnid/i18n/fr.po | 1 - 1 file changed, 1 deletion(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/fr.po b/l10n_fr_hr_check_ssnid/i18n/fr.po index c8c60f2f8..b50d331a9 100644 --- a/l10n_fr_hr_check_ssnid/i18n/fr.po +++ b/l10n_fr_hr_check_ssnid/i18n/fr.po @@ -27,6 +27,5 @@ msgstr "Employé" #. module: l10n_fr_hr_check_ssnid #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, fuzzy, python-format -#| msgid "The French Social Security Number '%s' is invalid. (%s)" msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" msgstr "Le numéro de sécurité sociale '%(ssnid)s' est invalide. (%(e)s)" From f17a18b545f84b809ff7efbbf4b859a9e1ce0878 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 24 Nov 2022 09:01:32 +0000 Subject: [PATCH 076/536] [UPD] Update l10n_fr_hr_check_ssnid.pot --- l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot index 0b7161aca..6dab02527 100644 --- a/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot +++ b/l10n_fr_hr_check_ssnid/i18n/l10n_fr_hr_check_ssnid.pot @@ -19,6 +19,7 @@ msgid "Employee" msgstr "" #. module: l10n_fr_hr_check_ssnid +#. odoo-python #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, python-format msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" From 46a25a73ef34fbc61a3f47fc5e8443104b4e6de2 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 24 Nov 2022 09:04:07 +0000 Subject: [PATCH 077/536] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_hr_check_ssnid Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_hr_check_ssnid/ --- l10n_fr_hr_check_ssnid/i18n/fr.po | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_fr_hr_check_ssnid/i18n/fr.po b/l10n_fr_hr_check_ssnid/i18n/fr.po index b50d331a9..7933210eb 100644 --- a/l10n_fr_hr_check_ssnid/i18n/fr.po +++ b/l10n_fr_hr_check_ssnid/i18n/fr.po @@ -25,6 +25,7 @@ msgid "Employee" msgstr "Employé" #. module: l10n_fr_hr_check_ssnid +#. odoo-python #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 #, fuzzy, python-format msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" From 2ab25b26c2f12ffa4f064ff48c603da3c12dff91 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 20 Jun 2023 13:59:53 +0000 Subject: [PATCH 078/536] Translated using Weblate (French) Currently translated at 100.0% (2 of 2 strings) Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_hr_check_ssnid Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_hr_check_ssnid/fr/ --- l10n_fr_hr_check_ssnid/i18n/fr.po | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/i18n/fr.po b/l10n_fr_hr_check_ssnid/i18n/fr.po index 7933210eb..4de051d20 100644 --- a/l10n_fr_hr_check_ssnid/i18n/fr.po +++ b/l10n_fr_hr_check_ssnid/i18n/fr.po @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-10-21 08:47+0000\n" -"PO-Revision-Date: 2022-10-21 11:38+0200\n" -"Last-Translator: Quentin THEURET , 2018\n" +"PO-Revision-Date: 2023-06-20 16:08+0000\n" +"Last-Translator: Alexis de Lattre \n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" #. module: l10n_fr_hr_check_ssnid #: model:ir.model,name:l10n_fr_hr_check_ssnid.model_hr_employee @@ -27,6 +27,7 @@ msgstr "Employé" #. module: l10n_fr_hr_check_ssnid #. odoo-python #: code:addons/l10n_fr_hr_check_ssnid/models/hr_employee.py:0 -#, fuzzy, python-format +#, python-format msgid "The French Social Security Number '%(ssnid)s' is invalid. (%(e)s)" -msgstr "Le numéro de sécurité sociale '%(ssnid)s' est invalide. (%(e)s)" +msgstr "" +"Le numéro de sécurité sociale français '%(ssnid)s' est invalide. (%(e)s)" From 5245a3f50157ffec409e1c6ab73f613fe85f5ec5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 13:34:52 +0000 Subject: [PATCH 079/536] [UPD] README.rst --- l10n_fr_hr_check_ssnid/README.rst | 15 ++++--- .../static/description/index.html | 44 ++++++++++--------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/l10n_fr_hr_check_ssnid/README.rst b/l10n_fr_hr_check_ssnid/README.rst index 04bbe31e4..4ea45b9b9 100644 --- a/l10n_fr_hr_check_ssnid/README.rst +++ b/l10n_fr_hr_check_ssnid/README.rst @@ -2,10 +2,13 @@ French Localization - Check Social Security Number ================================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1fb9caeba4bb9a98002935ff1da28a061578a28a5a09c910a190e89f53a30922 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ French Localization - Check Social Security Number .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_hr_check_ssnid :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-france&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| With this module, the social security number of employees of French companies will be checked: if the length or checksum is wrong, an error message will be displayed. @@ -51,7 +54,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/l10n_fr_hr_check_ssnid/static/description/index.html b/l10n_fr_hr_check_ssnid/static/description/index.html index 23ba76b89..b16d15a85 100644 --- a/l10n_fr_hr_check_ssnid/static/description/index.html +++ b/l10n_fr_hr_check_ssnid/static/description/index.html @@ -1,20 +1,20 @@ - + - + French Localization - Check Social Security Number + + +
+

POS: Caisse-AP payment protocol for France

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

This module adds support for the Caisse AP protocol over IP in the Odoo Point of Sale.

+

The Caisse AP protocol is a vendor-independent protocol used in France to communicate between a point of sale and a payment terminal. It is implemented by Ingenico payment terminals, Verifone payment terminal and other brands of payment terminals. This protocol is designed by a French association called Association du paiement, abbreviated as AP. Note that the Caisse-AP protocol is used by Ingenico payment terminals deployed in France, but not by the same model of Ingenico payment terminals deployed in other countries!

+

This module support a bi-directionnal link with the payment terminal:

+
    +
  1. it sends the amount to the payment terminal
  2. +
  3. it waits for the end of the payment transaction
  4. +
  5. it parses the answer of the payment terminal which gives the payment status: in case of success, the payment line is automatically validated ; in case of failure, an error message is displayed and the Odoo user can retry or delete the payment line.
  6. +
+

The Caisse-AP protocol was initially written for serial and USB. Since the Caisse AP protocol version 3.x, it also supports IP. When used over IP, the client (point of sale) and the server (payment terminal) exchange simple text data encoded as ASCII over a raw TCP socket.

+

The Caisse-AP protocol has one important drawback: as it uses a raw TCP socket, it cannot be used from pure JS code. So the JS code of the point of sale cannot generate the query to send the amount to the payment terminal by itself. In this module, the JS code of the point of sale sends a query to the Odoo server that opens a raw TCP socket to the payment terminal. It implies that, if the Odoo server is not on the LAN but somewhere on the Internet and the payment terminal has a private IP on the LAN, you will need to setup a TCP port forwarding rule on the firewall to redirect the TCP connection of the Odoo server to the payment terminal.

+

Table of contents

+ +
+

Configuration

+

In the menu Point of sale > Configuration > Payment Method, on the payment method that correspond to a payment by card:

+
    +
  • select the appropriate journal, which should be a bank journal (and not a cash journa, otherwise the field Use a payment terminal is invisible)
  • +
  • field Use a payment terminal: select Caisse AP over IP (France only)
  • +
  • field Caisse-AP Payment Terminal IP Address: set the IP address of the payment terminal,
  • +
  • field Caisse-AP Payment Terminal Port: set the TCP port of the payment terminal (8888 by default),
  • +
  • field Payment Mode: set Card (the value Check is for the Check payment method if you use a check printer connected to the payment terminal such as Ingenico i2200)
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by Camptocamp.

+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

alexis-via

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 84f28ae437443947fda275f6aa47aa8e6f177472 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 22 Jul 2023 18:31:22 +0000 Subject: [PATCH 105/536] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 l10n_fr_pos_caisse_ap_ip/static/description/icon.png diff --git a/l10n_fr_pos_caisse_ap_ip/static/description/icon.png b/l10n_fr_pos_caisse_ap_ip/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 0a5e77329057b81dc95843e376a635e49174ea18 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 22 Jul 2023 19:14:41 +0000 Subject: [PATCH 106/536] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_pos_caisse_ap_ip Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_pos_caisse_ap_ip/ --- l10n_fr_pos_caisse_ap_ip/i18n/fr.po | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/l10n_fr_pos_caisse_ap_ip/i18n/fr.po b/l10n_fr_pos_caisse_ap_ip/i18n/fr.po index 437933e28..197c52440 100644 --- a/l10n_fr_pos_caisse_ap_ip/i18n/fr.po +++ b/l10n_fr_pos_caisse_ap_ip/i18n/fr.po @@ -36,6 +36,16 @@ msgstr "" "%(request_val)s dans la requête et %(answer_val)s dans la réponse, alors que " "ces valeurs devraient être identiques. Cela ne devrait jamais arriver !" +#. module: l10n_fr_pos_caisse_ap_ip +#. odoo-python +#: code:addons/l10n_fr_pos_caisse_ap_ip/models/pos_payment_method.py:0 +#, python-format +msgid "" +"Caisse AP IP protocol: Tag %(label)s (%(tag)s) has value %(request_val)s in " +"the request and %(answer_val)s in the answer, but these values should be " +"identical. This should never happen!" +msgstr "" + #. module: l10n_fr_pos_caisse_ap_ip #. odoo-python #: code:addons/l10n_fr_pos_caisse_ap_ip/models/pos_payment_method.py:0 @@ -71,8 +81,8 @@ msgstr "Port du terminal de paiement Caisse-AP" msgid "" "Caisse-AP payment terminal IP address is not set on payment method '%s'." msgstr "" -"L'adresse IP du terminal de paiement Caisse-AP n'est pas définie sur " -"la méthode de paiement '%s'." +"L'adresse IP du terminal de paiement Caisse-AP n'est pas définie sur la " +"méthode de paiement '%s'." #. module: l10n_fr_pos_caisse_ap_ip #. odoo-python @@ -80,8 +90,8 @@ msgstr "" #, python-format msgid "Caisse-AP payment terminal port is not set on payment method '%s'." msgstr "" -"Le port du terminal de paiement Caisse-AP n'est pas défini sur la " -"méthode de paiement '%s'." +"Le port du terminal de paiement Caisse-AP n'est pas défini sur la méthode de " +"paiement '%s'." #. module: l10n_fr_pos_caisse_ap_ip #: model:ir.model.fields.selection,name:l10n_fr_pos_caisse_ap_ip.selection__pos_payment_method__fr_caisse_ap_ip_mode__card @@ -222,8 +232,8 @@ msgid "" "You are tying to send amount %s cents to the payment terminal, but it is " "over the maximum!" msgstr "" -"Vous essayez d'envoyer le montant %s centimes au terminal de paiement, mais il " -"est supérieur au maximum !" +"Vous essayez d'envoyer le montant %s centimes au terminal de paiement, mais " +"il est supérieur au maximum !" #. module: l10n_fr_pos_caisse_ap_ip #. odoo-python From ec42d1231dee7de93aa0c75473451ee63a51500d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 13:34:52 +0000 Subject: [PATCH 107/536] [UPD] README.rst --- l10n_fr_pos_caisse_ap_ip/README.rst | 15 ++++--- .../static/description/index.html | 44 ++++++++++--------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/l10n_fr_pos_caisse_ap_ip/README.rst b/l10n_fr_pos_caisse_ap_ip/README.rst index 975d76806..919f0d3a9 100644 --- a/l10n_fr_pos_caisse_ap_ip/README.rst +++ b/l10n_fr_pos_caisse_ap_ip/README.rst @@ -2,10 +2,13 @@ POS: Caisse-AP payment protocol for France ========================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e70b108063f57e755b8a0714512cf553774b5dc770658146aa6d5e2bd84dd4ae + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ POS: Caisse-AP payment protocol for France .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_pos_caisse_ap_ip :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-france&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds support for the **Caisse AP** protocol over IP in the Odoo Point of Sale. @@ -60,7 +63,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/l10n_fr_pos_caisse_ap_ip/static/description/index.html b/l10n_fr_pos_caisse_ap_ip/static/description/index.html index f45ffa10f..608285b5e 100644 --- a/l10n_fr_pos_caisse_ap_ip/static/description/index.html +++ b/l10n_fr_pos_caisse_ap_ip/static/description/index.html @@ -1,20 +1,20 @@ - + - + POS: Caisse-AP payment protocol for France + + +
+

French company identity numbers SIRET/SIREN/NIC

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

This can help any company doing business with French companies +by letting users track the partners’ unique identification +numbers from the official SIRENE registry in France: SIRET, SIREN and +NIC.

+

These numbers identify each company and their subsidiaries, and are +often required for administrative tasks.

+

Table of contents

+ +
+

Usage

+

On the Partner form, users will be able to enter the SIREN +and NIC numbers, and the SIRET number will be calculated automatically.

+

The last digits of the SIREN and NIC are control keys: +Odoo will check their validity when partners are recorded.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Numérigraphe
  • +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 285b41872d2520eacc6ea279887e72c77963b089 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 7 Nov 2018 10:36:04 +0000 Subject: [PATCH 156/536] [UPD] Update l10n_fr_siret.pot --- l10n_fr_siret/i18n/l10n_fr_siret.pot | 50 ++++++++++++++++------------ 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/l10n_fr_siret/i18n/l10n_fr_siret.pot b/l10n_fr_siret/i18n/l10n_fr_siret.pot index 9e961b71b..2b3c47201 100644 --- a/l10n_fr_siret/i18n/l10n_fr_siret.pot +++ b/l10n_fr_siret/i18n/l10n_fr_siret.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -19,8 +19,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -30,60 +30,68 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "The NIC number is the official rank number of this office in the company in France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "The SIREN number is the official identity number of the company in France. It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "The SIRET number is the official identity number of this company's office in France. It is composed of the 9 digits of the SIREN number and the 5 digits of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" From d057be4987f63c8ca2d731e20791157fc833b520 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 9 Dec 2018 12:27:57 +0000 Subject: [PATCH 157/536] Update translation files Updated by Update PO files to match POT (msgmerge) hook in Weblate. --- l10n_fr_siret/i18n/bg.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/cs_CZ.po | 55 +++++++++++++++++++++++-------------- l10n_fr_siret/i18n/da.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/de.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/el_GR.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/es.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/es_MX.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/fi.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/fr.po | 55 +++++++++++++++++++++++-------------- l10n_fr_siret/i18n/fr_CH.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/hr.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/it.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/nb_NO.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/nl.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/pt.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/pt_BR.po | 51 ++++++++++++++++++++-------------- l10n_fr_siret/i18n/sl.po | 51 ++++++++++++++++++++-------------- 17 files changed, 535 insertions(+), 340 deletions(-) diff --git a/l10n_fr_siret/i18n/bg.po b/l10n_fr_siret/i18n/bg.po index deba9146a..3ffc2b4e9 100644 --- a/l10n_fr_siret/i18n/bg.po +++ b/l10n_fr_siret/i18n/bg.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/cs_CZ.po b/l10n_fr_siret/i18n/cs_CZ.po index f7eaba265..3d2841773 100644 --- a/l10n_fr_siret/i18n/cs_CZ.po +++ b/l10n_fr_siret/i18n/cs_CZ.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "Společnosti" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "Společnost registru" @@ -36,29 +36,33 @@ msgid "Contact" msgstr "Kontakt" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "NIC" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "SIRÉNA" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +#, fuzzy +msgid "SIRET" +msgstr "SIRÉNA" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "NIC '%s' je nesprávné: musí mít přesně pět číslic." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." @@ -67,21 +71,20 @@ msgstr "" "Obsahuje posledních 5 číslic čísla SIRET." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "Hodnota sirény '%s' je nesprávná: musí mít přesně 9 číslic." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "Hodnota SIREN '%s' je neplatná: kontrolní součet je nesprávný." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." @@ -90,13 +93,25 @@ msgstr "" "Sestává prvních 9 číslic čísla SIRET." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "Hodnota SIRET '%s'%s' je neplatná: kontrolní součet je nesprávný." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +#, fuzzy +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" +"Číslo sirény je oficiální identifikační číslo společnosti ve Francii. " +"Sestává prvních 9 číslic čísla SIRET." + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "Jméno úředního rejstříku, kde byla tato společnost prohlášena." diff --git a/l10n_fr_siret/i18n/da.po b/l10n_fr_siret/i18n/da.po index 352920ad1..89595f8f4 100644 --- a/l10n_fr_siret/i18n/da.po +++ b/l10n_fr_siret/i18n/da.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/de.po b/l10n_fr_siret/i18n/de.po index 9a966f36a..fec60a154 100644 --- a/l10n_fr_siret/i18n/de.po +++ b/l10n_fr_siret/i18n/de.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/el_GR.po b/l10n_fr_siret/i18n/el_GR.po index 67760bfbd..a21d90800 100644 --- a/l10n_fr_siret/i18n/el_GR.po +++ b/l10n_fr_siret/i18n/el_GR.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/es.po b/l10n_fr_siret/i18n/es.po index c1415f246..81877525e 100644 --- a/l10n_fr_siret/i18n/es.po +++ b/l10n_fr_siret/i18n/es.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/es_MX.po b/l10n_fr_siret/i18n/es_MX.po index 4194c298e..60fc6e37a 100644 --- a/l10n_fr_siret/i18n/es_MX.po +++ b/l10n_fr_siret/i18n/es_MX.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/fi.po b/l10n_fr_siret/i18n/fi.po index 37177bfb9..a049df7dc 100644 --- a/l10n_fr_siret/i18n/fi.po +++ b/l10n_fr_siret/i18n/fi.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/fr.po b/l10n_fr_siret/i18n/fr.po index d21e041db..4ae76172b 100644 --- a/l10n_fr_siret/i18n/fr.po +++ b/l10n_fr_siret/i18n/fr.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "Sociétés" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "RCS" @@ -36,29 +36,33 @@ msgid "Contact" msgstr "Contact" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "NIC" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "SIREN" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +#, fuzzy +msgid "SIRET" +msgstr "SIREN" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "Le NIC '%s' est incorrect. Il doit contenir exactement 5 numéros." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." @@ -67,21 +71,20 @@ msgstr "" "société en France. Il compose les 5 derniers numéros du numéro de SIRET." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "Le SIREN '%s' est incorrect : il doit avoir exactement 9 chiffres." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "Le SIREN '%s' est invalide : la clé de contrôle est fausse." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." @@ -90,14 +93,26 @@ msgstr "" "France. Il compose les 9 premiers chiffres du numéro de SIRET." #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "Le SIRET '%s%s' est invalide : la clé de contrôle est fausse." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +#, fuzzy +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" +"Le numéro de SIREN est le numéro d'identité officiel de la société en " +"France. Il compose les 9 premiers chiffres du numéro de SIRET." + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" "Nom de la ville du tribunal de commerce dans laquelle la société est " diff --git a/l10n_fr_siret/i18n/fr_CH.po b/l10n_fr_siret/i18n/fr_CH.po index 2bb5e3510..de9fa3357 100644 --- a/l10n_fr_siret/i18n/fr_CH.po +++ b/l10n_fr_siret/i18n/fr_CH.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/hr.po b/l10n_fr_siret/i18n/hr.po index d98f76afe..f695360bb 100644 --- a/l10n_fr_siret/i18n/hr.po +++ b/l10n_fr_siret/i18n/hr.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/it.po b/l10n_fr_siret/i18n/it.po index bbf6e09dd..7a18473e0 100644 --- a/l10n_fr_siret/i18n/it.po +++ b/l10n_fr_siret/i18n/it.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/nb_NO.po b/l10n_fr_siret/i18n/nb_NO.po index 243a961f1..ad37de626 100644 --- a/l10n_fr_siret/i18n/nb_NO.po +++ b/l10n_fr_siret/i18n/nb_NO.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "Firmaer" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "Firmaregister" @@ -36,63 +36,74 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "NIC" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "SIREN-koden '%s' er ugyldig: Sjekksummen er feil." #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/nl.po b/l10n_fr_siret/i18n/nl.po index 573d55d9e..8786e8b2f 100644 --- a/l10n_fr_siret/i18n/nl.po +++ b/l10n_fr_siret/i18n/nl.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/pt.po b/l10n_fr_siret/i18n/pt.po index 293b55550..6ce40314e 100644 --- a/l10n_fr_siret/i18n/pt.po +++ b/l10n_fr_siret/i18n/pt.po @@ -24,8 +24,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -35,64 +35,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/pt_BR.po b/l10n_fr_siret/i18n/pt_BR.po index f5973dc41..e4e03f519 100644 --- a/l10n_fr_siret/i18n/pt_BR.po +++ b/l10n_fr_siret/i18n/pt_BR.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" diff --git a/l10n_fr_siret/i18n/sl.po b/l10n_fr_siret/i18n/sl.po index 6f9548caf..53c954b32 100644 --- a/l10n_fr_siret/i18n/sl.po +++ b/l10n_fr_siret/i18n/sl.po @@ -25,8 +25,8 @@ msgid "Companies" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__company_registry msgid "Company Registry" msgstr "" @@ -36,64 +36,75 @@ msgid "Contact" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__nic msgid "NIC" msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siren msgid "SIREN" msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:43 +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,field_description:l10n_fr_siret.field_res_partner__siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_siret +#: code:addons/l10n_fr_siret/models/partner.py:42 #, python-format msgid "The NIC '%s' is incorrect: it must have exactly 5 digits." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_nic -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__nic +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__nic msgid "" "The NIC number is the official rank number of this office in the company in " "France. It composes the last 5 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:50 +#: code:addons/l10n_fr_siret/models/partner.py:49 #, python-format msgid "The SIREN '%s' is incorrect: it must have exactly 9 digits." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:54 +#: code:addons/l10n_fr_siret/models/partner.py:53 #, python-format msgid "The SIREN '%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_company_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_siren -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siren +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siren msgid "" "The SIREN number is the official identity number of the company in France. " "It composes the first 9 digits of the SIRET number." msgstr "" #. module: l10n_fr_siret -#: code:addons/l10n_fr_siret/models/partner.py:59 +#: code:addons/l10n_fr_siret/models/partner.py:58 #, python-format msgid "The SIRET '%s%s' is invalid: the checksum is wrong." msgstr "" #. module: l10n_fr_siret -#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner_company_registry -#: model:ir.model.fields,help:l10n_fr_siret.field_res_users_company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__siret +msgid "" +"The SIRET number is the official identity number of this company's office in " +"France. It is composed of the 9 digits of the SIREN number and the 5 digits " +"of the NIC number, ie. 14 digits." +msgstr "" + +#. module: l10n_fr_siret +#: model:ir.model.fields,help:l10n_fr_siret.field_res_company__company_registry +#: model:ir.model.fields,help:l10n_fr_siret.field_res_partner__company_registry msgid "The name of official registry where this company was declared." msgstr "" From fa40c35fae0c3ad568c4759e999e92ae9ac815d4 Mon Sep 17 00:00:00 2001 From: Martin Duvergey Date: Wed, 12 Dec 2018 14:56:01 +0100 Subject: [PATCH 158/536] Fix : method should raise UserError, not return UserError --- l10n_fr_siret/models/partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_siret/models/partner.py b/l10n_fr_siret/models/partner.py index dbe550154..a5b6ad036 100644 --- a/l10n_fr_siret/models/partner.py +++ b/l10n_fr_siret/models/partner.py @@ -54,7 +54,7 @@ def _check_siret(self): % rec.siren) # Check the NIC key (you need both SIREN and NIC to check it) if rec.nic and not _check_luhn(rec.siren + rec.nic): - return UserError( + raise UserError( _("The SIRET '%s%s' is invalid: " "the checksum is wrong.") % (rec.siren, rec.nic)) From 3ef91846fdb6ff5bb1fa8649a672aec5930b64dc Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Apr 2019 02:53:21 +0000 Subject: [PATCH 159/536] [ADD] icon.png --- l10n_fr_siret/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 l10n_fr_siret/static/description/icon.png diff --git a/l10n_fr_siret/static/description/icon.png b/l10n_fr_siret/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 3c3f7af26f6003b5d55d2c6a299e29ebf475de06 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 03:01:30 +0000 Subject: [PATCH 160/536] [UPD] README.rst --- l10n_fr_siret/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_siret/static/description/index.html b/l10n_fr_siret/static/description/index.html index caa947cad..2c63c8487 100644 --- a/l10n_fr_siret/static/description/index.html +++ b/l10n_fr_siret/static/description/index.html @@ -3,7 +3,7 @@ - + French company identity numbers SIRET/SIREN/NIC + + +
+

French localization - SIRET and Accounting

+ + +

Mature License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runboat

+

This is a glue module between the module account and the OCA module +l10n_fr_siret. This module will be automatically installed when both +the modules account and l10n_fr_siret are installed.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

alexis-via

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/l10n_fr_siret_account/views/res_partner.xml b/l10n_fr_siret_account/views/res_partner.xml new file mode 100644 index 000000000..bf79c0e10 --- /dev/null +++ b/l10n_fr_siret_account/views/res_partner.xml @@ -0,0 +1,53 @@ + + + + + res.partner + + + + + 'FR' not in fiscal_country_codes or (not is_company and not parent_is_company) + + + 'FR' not in fiscal_country_codes or (not is_company and not parent_is_company) + + + 'FR' not in fiscal_country_codes or (not is_company and not parent_is_company) + + + + + + 'FR' not in fiscal_country_codes or type in ('contact', 'private') + + + 'FR' not in fiscal_country_codes or type in ('contact', 'private') + + + + From 905e4aa0bee2327677032725432f6ce4cf61464a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 26 Nov 2024 21:21:14 +0100 Subject: [PATCH 219/536] [IMP] l10n_fr_siret: add siren/nic/siret in list view (hidden by default) --- l10n_fr_siret/views/res_partner.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/l10n_fr_siret/views/res_partner.xml b/l10n_fr_siret/views/res_partner.xml index ce6ad7825..a2b0cb364 100644 --- a/l10n_fr_siret/views/res_partner.xml +++ b/l10n_fr_siret/views/res_partner.xml @@ -54,4 +54,16 @@ + + + res.partner + + + + + + + + + From b19448f5905b6d4b4d87a816314841b48a7862d6 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 26 Nov 2024 21:21:49 +0100 Subject: [PATCH 220/536] [IMP] l10n_fr_siret: add summary key in manifest --- l10n_fr_siret/__manifest__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_fr_siret/__manifest__.py b/l10n_fr_siret/__manifest__.py index cc96811e2..0746be2df 100644 --- a/l10n_fr_siret/__manifest__.py +++ b/l10n_fr_siret/__manifest__.py @@ -5,6 +5,7 @@ { "name": "French company identity numbers SIRET/SIREN/NIC", + "summary": "Complete support for SIRET/SIREN/NIC with checksum validation", "version": "18.0.1.0.0", "category": "French Localization", "author": "Numérigraphe,Akretion,Odoo Community Association (OCA)", From a85e428a0dd4215fc80ae66929fe2f9155e508c7 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 12 Dec 2024 17:04:21 +0000 Subject: [PATCH 221/536] [UPD] Update l10n_fr_state.pot --- l10n_fr_state/i18n/l10n_fr_state.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_state/i18n/l10n_fr_state.pot b/l10n_fr_state/i18n/l10n_fr_state.pot index 716a0702d..aadee09bf 100644 --- a/l10n_fr_state/i18n/l10n_fr_state.pot +++ b/l10n_fr_state/i18n/l10n_fr_state.pot @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 98429839c88d0b76d5132dc8cb481d5883a4789a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 12 Dec 2024 17:08:11 +0000 Subject: [PATCH 222/536] [BOT] post-merge updates --- README.md | 1 + l10n_fr_state/README.rst | 10 +++++----- l10n_fr_state/static/description/index.html | 2 +- setup/_metapackage/pyproject.toml | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b513db64f..2c44d162d 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Available addons addon | version | maintainers | summary --- | --- | --- | --- [l10n_fr_hr_check_ssnid](l10n_fr_hr_check_ssnid/) | 18.0.1.0.0 | [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Check validity of Social Security Numbers in French companies +[l10n_fr_state](l10n_fr_state/) | 18.0.1.0.0 | [![legalsylvain](https://github.com/legalsylvain.png?size=30px)](https://github.com/legalsylvain) [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Populate Database with French States (Régions) [//]: # (end addons) diff --git a/l10n_fr_state/README.rst b/l10n_fr_state/README.rst index f23c9863f..9e824805c 100644 --- a/l10n_fr_state/README.rst +++ b/l10n_fr_state/README.rst @@ -7,7 +7,7 @@ French States (Régions) !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:573c0598b59f23178241b44edcc301b488a34eaa0f0eb6d9e839e4c29612101a + !! source digest: sha256:cf508b4cd351204740c37f04b24351f4138812a01eda3594e5cb9fe2990eb272 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -72,10 +72,10 @@ Authors Contributors ------------ -- Sylvain LE GAL (`Twitter `__), GRAP - (Groupement Régional Alimentaire de Proximité) -- Alexis de Lattre -- Nicolas JEUDY +- Sylvain LE GAL (`Twitter `__), GRAP + (Groupement Régional Alimentaire de Proximité) +- Alexis de Lattre +- Nicolas JEUDY Maintainers ----------- diff --git a/l10n_fr_state/static/description/index.html b/l10n_fr_state/static/description/index.html index ab889a02e..62c3a4e3f 100644 --- a/l10n_fr_state/static/description/index.html +++ b/l10n_fr_state/static/description/index.html @@ -367,7 +367,7 @@

French States (Régions)

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:573c0598b59f23178241b44edcc301b488a34eaa0f0eb6d9e839e4c29612101a +!! source digest: sha256:cf508b4cd351204740c37f04b24351f4138812a01eda3594e5cb9fe2990eb272 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runboat

This module populate the table res_country_state with the french diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index ffd7db22b..1a91481d9 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,8 +1,9 @@ [project] name = "odoo-addons-oca-l10n-france" -version = "18.0.20241201.0" +version = "18.0.20241212.0" dependencies = [ "odoo-addon-l10n_fr_hr_check_ssnid==18.0.*", + "odoo-addon-l10n_fr_state==18.0.*", ] classifiers=[ "Programming Language :: Python", From c1a4bee650c29951453ebfbad4cb1825229f67fb Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 6 Feb 2020 19:02:13 +0100 Subject: [PATCH 223/536] Complete re-architecture of the module following a discussion with another accountant Add module l10n_fr_cog --- l10n_fr_cog/__init__.py | 4 + l10n_fr_cog/__manifest__.py | 21 + l10n_fr_cog/data/country.xml | 948 +++++++++++++++++++++++++++++++++ l10n_fr_cog/models/__init__.py | 3 + l10n_fr_cog/models/country.py | 14 + l10n_fr_cog/post_install.py | 35 ++ l10n_fr_cog/views/country.xml | 23 + 7 files changed, 1048 insertions(+) create mode 100644 l10n_fr_cog/__init__.py create mode 100644 l10n_fr_cog/__manifest__.py create mode 100644 l10n_fr_cog/data/country.xml create mode 100644 l10n_fr_cog/models/__init__.py create mode 100644 l10n_fr_cog/models/country.py create mode 100644 l10n_fr_cog/post_install.py create mode 100644 l10n_fr_cog/views/country.xml diff --git a/l10n_fr_cog/__init__.py b/l10n_fr_cog/__init__.py new file mode 100644 index 000000000..2e1c9a971 --- /dev/null +++ b/l10n_fr_cog/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from .post_install import set_fr_cog +from . import models diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py new file mode 100644 index 000000000..63cc1c099 --- /dev/null +++ b/l10n_fr_cog/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': u'Code Officiel Géographique', + 'summary': u'Add Code Officiel Géographique (COG) on countries', + 'version': '10.0.1.0.0', + 'category': 'French Localization', + 'author': "Akretion,Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/l10n-france', + 'license': 'AGPL-3', + 'depends': ['base'], + 'data': [ + 'data/country.xml', + 'views/country.xml', + ], + 'post_init_hook': 'set_fr_cog', + 'installable': True, +} diff --git a/l10n_fr_cog/data/country.xml b/l10n_fr_cog/data/country.xml new file mode 100644 index 000000000..074559aa0 --- /dev/null +++ b/l10n_fr_cog/data/country.xml @@ -0,0 +1,948 @@ + + + + + + + + 99130 + + + + 99247 + + + + 99212 + + + + 99441 + + + + 99425 + + + + 99125 + + + + 99252 + + + + 99431 + + + + 99395 + + + + 99415 + + + + 99505 + + + + 99110 + + + + 99501 + + + + 99135 + + + + 99253 + + + + 99118 + + + + 99434 + + + + 99246 + + + + 99131 + + + + 99331 + + + + 99111 + + + + 99249 + + + + 99321 + + + + 99327 + + + + 99425 + + + + 99225 + + + + 99418 + + + + 99443 + + + + 99416 + + + + 99436 + + + + 99214 + + + + 99103 + + + + 99347 + + + + 99148 + + + + 99429 + + + + 99401 + + + + 99501 + + + + 99323 + + + + 99312 + + + + 99324 + + + + 99140 + + + + 99326 + + + + 99502 + + + + 99417 + + + + 99322 + + + + 99216 + + + + 99419 + + + + 99406 + + + + 99407 + + + + 99396 + + + + 99444 + + + + 99501 + + + + 99254 + + + + 99116 + + + + 99109 + + + + 99399 + + + + 99101 + + + + 99438 + + + + 99408 + + + + 99352 + + + + 99420 + + + + 99106 + + + + 99301 + + + + 99389 + + + + 99317 + + + + 99134 + + + + 99315 + + + + 99105 + + + + 99508 + + + + 99427 + + + + 99516 + + + + 99101 + + + + 99328 + + + + 99435 + + + + 99255 + + + + 99329 + + + + 99133 + + + + 99132 + + + + 99430 + + + + 99304 + + + + 99330 + + + + 99314 + + + + 99126 + + + + 99427 + + + + 99409 + + + + 99505 + + + + 99392 + + + + 99428 + + + + 99230 + + + + 99501 + + + + 99411 + + + + 99119 + + + + 99410 + + + + 99112 + + + + 99231 + + + + 99136 + + + + 99207 + + + + 99132 + + + + 99223 + + + + 99308 + + + + 99203 + + + + 99204 + + + + 99102 + + + + 99127 + + + + 99132 + + + + 99426 + + + + 99222 + + + + 99217 + + + + 99332 + + + + 99257 + + + + 99234 + + + + 99513 + + + + 99397 + + + + 99442 + + + + 99238 + + + + 99239 + + + + 99240 + + + + 99425 + + + + 99256 + + + + 99241 + + + + 99205 + + + + 99439 + + + + 99113 + + + + 99235 + + + + 99302 + + + + 99348 + + + + 99108 + + + + 99137 + + + + 99107 + + + + 99316 + + + + 99350 + + + + 99138 + + + + 99151 + + + + 99120 + + + + 99333 + + + + 99515 + + + + 99156 + + + + 99335 + + + + 99224 + + + + 99242 + + + + 99232 + + + + 99505 + + + + 99336 + + + + 99425 + + + + 99144 + + + + 99390 + + + + 99229 + + + + 99334 + + + + 99405 + + + + 99227 + + + + 99393 + + + + 99311 + + + + 99337 + + + + 99501 + + + + 99338 + + + + 99412 + + + + 99135 + + + + 99103 + + + + 99215 + + + + 99507 + + + + 99502 + + + + 99502 + + + + 99250 + + + + 99413 + + + + 99422 + + + + 99510 + + + + 99220 + + + + 99213 + + + + 99122 + + + + 99503 + + + + 99432 + + + + 99261 + + + + 99139 + + + + 99517 + + + + 99421 + + + + 99248 + + + + 99114 + + + + 99121 + + + + 99123 + + + + 99340 + + + + 99201 + + + + 99512 + + + + 99398 + + + + 99343 + + + + 99104 + + + + 99226 + + + + 99306 + + + + 99145 + + + + 99103 + + + + 99117 + + + + 99342 + + + + 99128 + + + + 99341 + + + + 99318 + + + + 99437 + + + + 99349 + + + + 99394 + + + + 99414 + + + + 99445 + + + + 99206 + + + + 99391 + + + + 99425 + + + + 99344 + + + + 99345 + + + + 99219 + + + + 99259 + + + + 99502 + + + + 99260 + + + + 99351 + + + + 99509 + + + + 99208 + + + + 99433 + + + + 99511 + + + + 99236 + + + + 99309 + + + + 99155 + + + + 99339 + + + + 99132 + + + + 99404 + + + + 99423 + + + + 99258 + + + + 99129 + + + + 99440 + + + + 99424 + + + + 99425 + + + + 99432 + + + + 99243 + + + + 99514 + + + + 99506 + + + + 99251 + + + + 99303 + + + + 99346 + + + + 99310 + + + + 99157 + + + + diff --git a/l10n_fr_cog/models/__init__.py b/l10n_fr_cog/models/__init__.py new file mode 100644 index 000000000..f2d611a89 --- /dev/null +++ b/l10n_fr_cog/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import country diff --git a/l10n_fr_cog/models/country.py b/l10n_fr_cog/models/country.py new file mode 100644 index 000000000..0b2231828 --- /dev/null +++ b/l10n_fr_cog/models/country.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCountry(models.Model): + _inherit = 'res.country' + + fr_cog = fields.Integer( + string=u'Code Officiel Géographique', + help=u"Code Officiel Géographique, by INSEE") diff --git a/l10n_fr_cog/post_install.py b/l10n_fr_cog/post_install.py new file mode 100644 index 000000000..76757e98d --- /dev/null +++ b/l10n_fr_cog/post_install.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, SUPERUSER_ID +from odoo.tools import file_open +from lxml import etree +import logging +logger = logging.getLogger(__name__) + + +# Countries data is provided in the base module with noupdate="1" +# That's why we need this post-install script +def set_fr_cog(cr, registry): + f = file_open( + 'l10n_fr_cog/data/country.xml', 'rb') + xml_root = etree.parse(f) + data = {} + for record in xml_root.xpath('//record'): + xmlid = record.attrib['id'] + data[xmlid] = {} + for xfield in record.xpath('field'): + if xfield.attrib and xfield.attrib.get('name') == 'fr_cog': + data[xmlid] = int(xfield.text) + logger.debug('set_fr_cog data=%s', data) + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + for xmlid, fr_cog in data.items(): + country = env.ref(xmlid) + country.fr_cog = fr_cog + logger.debug( + 'Country ID %d xmlid %s updated with fr_cog=%d', + country.id, xmlid, fr_cog) + return diff --git a/l10n_fr_cog/views/country.xml b/l10n_fr_cog/views/country.xml new file mode 100644 index 000000000..0373c4728 --- /dev/null +++ b/l10n_fr_cog/views/country.xml @@ -0,0 +1,23 @@ + + + + + + + + l10n_fr_cog.res.country.form + res.country + + + + + + + + + + From 7ef8488c7e0ae6c65b0740f50c78a4a2efb9e22a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 8 Feb 2020 00:46:51 +0100 Subject: [PATCH 224/536] Add README for l10n_fr_cog and l10n_fr_das2 Add account 6221 in the warning method --- l10n_fr_cog/readme/CONTRIBUTORS.rst | 1 + l10n_fr_cog/readme/DESCRIPTION.rst | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 l10n_fr_cog/readme/CONTRIBUTORS.rst create mode 100644 l10n_fr_cog/readme/DESCRIPTION.rst diff --git a/l10n_fr_cog/readme/CONTRIBUTORS.rst b/l10n_fr_cog/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..ff65d68ce --- /dev/null +++ b/l10n_fr_cog/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Alexis de Lattre diff --git a/l10n_fr_cog/readme/DESCRIPTION.rst b/l10n_fr_cog/readme/DESCRIPTION.rst new file mode 100644 index 000000000..d8c839907 --- /dev/null +++ b/l10n_fr_cog/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module adds the *Code Officiel Géographique* of `INSEE `_ on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code. + +This module is used by other modules of the French localization such as the DAS2 module. From 0602c7c0e8722439fddcddca6e3fed1952e378b9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 21 Feb 2020 10:34:12 +0000 Subject: [PATCH 225/536] README.rst --- l10n_fr_cog/README.rst | 75 ++++ l10n_fr_cog/static/description/index.html | 420 ++++++++++++++++++++++ 2 files changed, 495 insertions(+) create mode 100644 l10n_fr_cog/README.rst create mode 100644 l10n_fr_cog/static/description/index.html diff --git a/l10n_fr_cog/README.rst b/l10n_fr_cog/README.rst new file mode 100644 index 000000000..f98027813 --- /dev/null +++ b/l10n_fr_cog/README.rst @@ -0,0 +1,75 @@ +========================== +Code Officiel Géographique +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-france/tree/10.0/l10n_fr_cog + :alt: OCA/l10n-france +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-france-10-0/l10n-france-10-0-l10n_fr_cog + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/121/10.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds the *Code Officiel Géographique* of `INSEE `_ on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code. + +This module is used by other modules of the French localization such as the DAS2 module. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/l10n-france `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_cog/static/description/index.html b/l10n_fr_cog/static/description/index.html new file mode 100644 index 000000000..e615f3c7d --- /dev/null +++ b/l10n_fr_cog/static/description/index.html @@ -0,0 +1,420 @@ + + + + + + +Code Officiel Géographique + + + +

+

Code Officiel Géographique

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

This module adds the Code Officiel Géographique of INSEE on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code.

+

This module is used by other modules of the French localization such as the DAS2 module.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 5c0e2955e71b26e1795dd3ed45ed60d18f76504b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 21 Feb 2020 10:34:12 +0000 Subject: [PATCH 226/536] icon.png --- l10n_fr_cog/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 l10n_fr_cog/static/description/icon.png diff --git a/l10n_fr_cog/static/description/icon.png b/l10n_fr_cog/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From d02f805cff494e383fae5d770430cd2bdfa203fa Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 30 Mar 2020 23:57:38 +0200 Subject: [PATCH 227/536] [MIG] l10n_fr_cog and l10n_fr_das2 from v10 to v12 l10n_fr_cog: update country list l10n_fr_das2: - add demo data, - add constraint on lines, - improve chatter messages, - fix readonly status of 'job' field on lines, - handle 'job' field in partner change on lines. --- l10n_fr_cog/__init__.py | 2 -- l10n_fr_cog/__manifest__.py | 7 +++---- l10n_fr_cog/data/country.xml | 8 ++++---- l10n_fr_cog/models/country.py | 5 ++--- l10n_fr_cog/post_install.py | 1 - 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/l10n_fr_cog/__init__.py b/l10n_fr_cog/__init__.py index 2e1c9a971..65d052762 100644 --- a/l10n_fr_cog/__init__.py +++ b/l10n_fr_cog/__init__.py @@ -1,4 +1,2 @@ -# -*- coding: utf-8 -*- - from .post_install import set_fr_cog from . import models diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py index 63cc1c099..39e4fb6ef 100644 --- a/l10n_fr_cog/__manifest__.py +++ b/l10n_fr_cog/__manifest__.py @@ -1,12 +1,11 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': u'Code Officiel Géographique', - 'summary': u'Add Code Officiel Géographique (COG) on countries', - 'version': '10.0.1.0.0', + 'name': 'Code Officiel Géographique', + 'summary': 'Add Code Officiel Géographique (COG) on countries', + 'version': '12.0.1.0.0', 'category': 'French Localization', 'author': "Akretion,Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/l10n-france', diff --git a/l10n_fr_cog/data/country.xml b/l10n_fr_cog/data/country.xml index 074559aa0..d0087682c 100644 --- a/l10n_fr_cog/data/country.xml +++ b/l10n_fr_cog/data/country.xml @@ -36,10 +36,6 @@ 99252 - - 99431 - - 99395 @@ -836,6 +832,10 @@ 99502 + + 99262 + + 99260 diff --git a/l10n_fr_cog/models/country.py b/l10n_fr_cog/models/country.py index 0b2231828..0dbd77de6 100644 --- a/l10n_fr_cog/models/country.py +++ b/l10n_fr_cog/models/country.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -10,5 +9,5 @@ class ResCountry(models.Model): _inherit = 'res.country' fr_cog = fields.Integer( - string=u'Code Officiel Géographique', - help=u"Code Officiel Géographique, by INSEE") + string='Code Officiel Géographique', + help="Code Officiel Géographique, by INSEE") diff --git a/l10n_fr_cog/post_install.py b/l10n_fr_cog/post_install.py index 76757e98d..08526218b 100644 --- a/l10n_fr_cog/post_install.py +++ b/l10n_fr_cog/post_install.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). From 04bf342f4cfc6d62a25f798e0e49e736e0da3613 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 3 Apr 2020 13:06:52 +0200 Subject: [PATCH 228/536] Remove utf-8 coding in python file --- l10n_fr_cog/models/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/l10n_fr_cog/models/__init__.py b/l10n_fr_cog/models/__init__.py index f2d611a89..30b933141 100644 --- a/l10n_fr_cog/models/__init__.py +++ b/l10n_fr_cog/models/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import country From dd91081923ce59959fdf8f227d80fbf05e551ef6 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 3 Apr 2020 12:52:17 +0000 Subject: [PATCH 229/536] [UPD] README.rst --- l10n_fr_cog/README.rst | 10 +++++----- l10n_fr_cog/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_fr_cog/README.rst b/l10n_fr_cog/README.rst index f98027813..4666060b4 100644 --- a/l10n_fr_cog/README.rst +++ b/l10n_fr_cog/README.rst @@ -14,13 +14,13 @@ Code Officiel Géographique :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-france/tree/10.0/l10n_fr_cog + :target: https://github.com/OCA/l10n-france/tree/12.0/l10n_fr_cog :alt: OCA/l10n-france .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-france-10-0/l10n-france-10-0-l10n_fr_cog + :target: https://translation.odoo-community.org/projects/l10n-france-12-0/l10n-france-12-0-l10n_fr_cog :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/10.0 + :target: https://runbot.odoo-community.org/runbot/121/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -40,7 +40,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -70,6 +70,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/l10n-france `_ project on GitHub. +This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_cog/static/description/index.html b/l10n_fr_cog/static/description/index.html index e615f3c7d..4c6a68dcf 100644 --- a/l10n_fr_cog/static/description/index.html +++ b/l10n_fr_cog/static/description/index.html @@ -367,7 +367,7 @@

Code Officiel Géographique

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

This module adds the Code Officiel Géographique of INSEE on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code.

This module is used by other modules of the French localization such as the DAS2 module.

Table of contents

@@ -387,7 +387,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -411,7 +411,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/l10n-france project on GitHub.

+

This module is part of the OCA/l10n-france project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 9c46e9e553d34da7a44e7bbb6050815485228931 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 3 Apr 2020 13:01:48 +0000 Subject: [PATCH 230/536] [UPD] Update l10n_fr_cog.pot --- l10n_fr_cog/i18n/l10n_fr_cog.pot | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 l10n_fr_cog/i18n/l10n_fr_cog.pot diff --git a/l10n_fr_cog/i18n/l10n_fr_cog.pot b/l10n_fr_cog/i18n/l10n_fr_cog.pot new file mode 100644 index 000000000..6940e38e4 --- /dev/null +++ b/l10n_fr_cog/i18n/l10n_fr_cog.pot @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_fr_cog +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \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_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model.fields,help:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique, by INSEE" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model,name:l10n_fr_cog.model_res_country +msgid "Country" +msgstr "" + From bf338892c9c8640fd5de2a2e6a8e6e00231546eb Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 18 Feb 2021 22:23:34 +0100 Subject: [PATCH 231/536] [MIG] l10n_fr_das2 and l10n_fr_cog to v14 Add warning message at the top of DAS2 form (and not only in chatter) Use python-stdnum to validate SIRET --- l10n_fr_cog/__manifest__.py | 4 ++-- l10n_fr_cog/data/country.xml | 2 +- l10n_fr_cog/models/__init__.py | 2 +- l10n_fr_cog/models/{country.py => res_country.py} | 2 +- l10n_fr_cog/views/country.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename l10n_fr_cog/models/{country.py => res_country.py} (84%) diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py index 39e4fb6ef..18a8eac9c 100644 --- a/l10n_fr_cog/__manifest__.py +++ b/l10n_fr_cog/__manifest__.py @@ -1,11 +1,11 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Code Officiel Géographique', 'summary': 'Add Code Officiel Géographique (COG) on countries', - 'version': '12.0.1.0.0', + 'version': '14.0.1.0.0', 'category': 'French Localization', 'author': "Akretion,Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/l10n-france', diff --git a/l10n_fr_cog/data/country.xml b/l10n_fr_cog/data/country.xml index d0087682c..7afb82fc7 100644 --- a/l10n_fr_cog/data/country.xml +++ b/l10n_fr_cog/data/country.xml @@ -1,6 +1,6 @@ diff --git a/l10n_fr_cog/models/__init__.py b/l10n_fr_cog/models/__init__.py index 30b933141..11573766f 100644 --- a/l10n_fr_cog/models/__init__.py +++ b/l10n_fr_cog/models/__init__.py @@ -1 +1 @@ -from . import country +from . import res_country diff --git a/l10n_fr_cog/models/country.py b/l10n_fr_cog/models/res_country.py similarity index 84% rename from l10n_fr_cog/models/country.py rename to l10n_fr_cog/models/res_country.py index 0dbd77de6..d0eb7ac4c 100644 --- a/l10n_fr_cog/models/country.py +++ b/l10n_fr_cog/models/res_country.py @@ -1,4 +1,4 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_fr_cog/views/country.xml b/l10n_fr_cog/views/country.xml index 0373c4728..aad4efd4f 100644 --- a/l10n_fr_cog/views/country.xml +++ b/l10n_fr_cog/views/country.xml @@ -1,6 +1,6 @@ From 2873011c95334f404ae0101cd3618a86babe140b Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 18 Feb 2021 22:28:45 +0100 Subject: [PATCH 232/536] Black, isort, etc on l10n_fr_cog and l10n_fr_das2 --- l10n_fr_cog/__manifest__.py | 29 +++++++++++++++-------------- l10n_fr_cog/data/country.xml | 3 +-- l10n_fr_cog/models/res_country.py | 6 +++--- l10n_fr_cog/post_install.py | 29 +++++++++++++++++------------ l10n_fr_cog/views/country.xml | 5 ++--- 5 files changed, 38 insertions(+), 34 deletions(-) diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py index 18a8eac9c..531267bac 100644 --- a/l10n_fr_cog/__manifest__.py +++ b/l10n_fr_cog/__manifest__.py @@ -3,18 +3,19 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Code Officiel Géographique', - 'summary': 'Add Code Officiel Géographique (COG) on countries', - 'version': '14.0.1.0.0', - 'category': 'French Localization', - 'author': "Akretion,Odoo Community Association (OCA)", - 'website': 'https://github.com/OCA/l10n-france', - 'license': 'AGPL-3', - 'depends': ['base'], - 'data': [ - 'data/country.xml', - 'views/country.xml', - ], - 'post_init_hook': 'set_fr_cog', - 'installable': True, + "name": "Code Officiel Géographique", + "summary": "Add Code Officiel Géographique (COG) on countries", + "version": "14.0.1.0.0", + "category": "French Localization", + "author": "Akretion,Odoo Community Association (OCA)", + "maintainers": ["alexis-via"], + "website": "https://github.com/OCA/l10n-france", + "license": "AGPL-3", + "depends": ["base"], + "data": [ + "data/country.xml", + "views/country.xml", + ], + "post_init_hook": "set_fr_cog", + "installable": True, } diff --git a/l10n_fr_cog/data/country.xml b/l10n_fr_cog/data/country.xml index 7afb82fc7..239d031e1 100644 --- a/l10n_fr_cog/data/country.xml +++ b/l10n_fr_cog/data/country.xml @@ -1,10 +1,9 @@ - + - diff --git a/l10n_fr_cog/models/res_country.py b/l10n_fr_cog/models/res_country.py index d0eb7ac4c..3bc1e5069 100644 --- a/l10n_fr_cog/models/res_country.py +++ b/l10n_fr_cog/models/res_country.py @@ -6,8 +6,8 @@ class ResCountry(models.Model): - _inherit = 'res.country' + _inherit = "res.country" fr_cog = fields.Integer( - string='Code Officiel Géographique', - help="Code Officiel Géographique, by INSEE") + string="Code Officiel Géographique", help="Code Officiel Géographique, by INSEE" + ) diff --git a/l10n_fr_cog/post_install.py b/l10n_fr_cog/post_install.py index 08526218b..698a4cde2 100644 --- a/l10n_fr_cog/post_install.py +++ b/l10n_fr_cog/post_install.py @@ -2,33 +2,38 @@ # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, SUPERUSER_ID -from odoo.tools import file_open -from lxml import etree import logging + +from lxml import etree + +from odoo import SUPERUSER_ID, api +from odoo.tools import file_open + logger = logging.getLogger(__name__) # Countries data is provided in the base module with noupdate="1" # That's why we need this post-install script def set_fr_cog(cr, registry): - f = file_open( - 'l10n_fr_cog/data/country.xml', 'rb') + f = file_open("l10n_fr_cog/data/country.xml", "rb") xml_root = etree.parse(f) data = {} - for record in xml_root.xpath('//record'): - xmlid = record.attrib['id'] + for record in xml_root.xpath("//record"): + xmlid = record.attrib["id"] data[xmlid] = {} - for xfield in record.xpath('field'): - if xfield.attrib and xfield.attrib.get('name') == 'fr_cog': + for xfield in record.xpath("field"): + if xfield.attrib and xfield.attrib.get("name") == "fr_cog": data[xmlid] = int(xfield.text) - logger.debug('set_fr_cog data=%s', data) + logger.debug("set_fr_cog data=%s", data) with api.Environment.manage(): env = api.Environment(cr, SUPERUSER_ID, {}) for xmlid, fr_cog in data.items(): country = env.ref(xmlid) country.fr_cog = fr_cog logger.debug( - 'Country ID %d xmlid %s updated with fr_cog=%d', - country.id, xmlid, fr_cog) + "Country ID %d xmlid %s updated with fr_cog=%d", + country.id, + xmlid, + fr_cog, + ) return diff --git a/l10n_fr_cog/views/country.xml b/l10n_fr_cog/views/country.xml index aad4efd4f..a6c46eedb 100644 --- a/l10n_fr_cog/views/country.xml +++ b/l10n_fr_cog/views/country.xml @@ -1,17 +1,16 @@ - + - l10n_fr_cog.res.country.form res.country - + From 039d90b7efb9651f1ef0c61da36373ab58225506 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 26 Feb 2021 14:24:26 +0000 Subject: [PATCH 233/536] [UPD] README.rst --- l10n_fr_cog/README.rst | 18 +++++++++++++----- l10n_fr_cog/static/description/index.html | 8 +++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/l10n_fr_cog/README.rst b/l10n_fr_cog/README.rst index 4666060b4..e0a131dca 100644 --- a/l10n_fr_cog/README.rst +++ b/l10n_fr_cog/README.rst @@ -14,13 +14,13 @@ Code Officiel Géographique :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-france/tree/12.0/l10n_fr_cog + :target: https://github.com/OCA/l10n-france/tree/14.0/l10n_fr_cog :alt: OCA/l10n-france .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-france-12-0/l10n-france-12-0-l10n_fr_cog + :target: https://translation.odoo-community.org/projects/l10n-france-14-0/l10n-france-14-0-l10n_fr_cog :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/12.0 + :target: https://runbot.odoo-community.org/runbot/121/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -40,7 +40,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -70,6 +70,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/l10n-france `_ project on GitHub. +.. |maintainer-alexis-via| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-alexis-via| + +This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_cog/static/description/index.html b/l10n_fr_cog/static/description/index.html index 4c6a68dcf..618d4a9cd 100644 --- a/l10n_fr_cog/static/description/index.html +++ b/l10n_fr_cog/static/description/index.html @@ -367,7 +367,7 @@

Code Officiel Géographique

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

This module adds the Code Officiel Géographique of INSEE on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code.

This module is used by other modules of the French localization such as the DAS2 module.

Table of contents

@@ -387,7 +387,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -411,7 +411,9 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/l10n-france project on GitHub.

+

Current maintainer:

+

alexis-via

+

This module is part of the OCA/l10n-france project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 5c1df57d325a71b4fdd59c0930085d9fc2440490 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 10 Aug 2021 22:13:03 +0000 Subject: [PATCH 234/536] [UPD] Update l10n_fr_cog.pot --- l10n_fr_cog/i18n/l10n_fr_cog.pot | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/l10n_fr_cog/i18n/l10n_fr_cog.pot b/l10n_fr_cog/i18n/l10n_fr_cog.pot index 6940e38e4..9de15fc11 100644 --- a/l10n_fr_cog/i18n/l10n_fr_cog.pot +++ b/l10n_fr_cog/i18n/l10n_fr_cog.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * l10n_fr_cog +# * l10n_fr_cog # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,3 +28,17 @@ msgstr "" msgid "Country" msgstr "" +#. module: l10n_fr_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__id +msgid "ID" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country____last_update +msgid "Last Modified on" +msgstr "" From 58dab9a7d6767e3e101a4c92d0f7c59ef338f49e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 8 Apr 2023 00:07:05 +0200 Subject: [PATCH 235/536] [MIG] l10n_fr_das2 and l10n_fr_cog to v15 Improve DAS2 readme --- l10n_fr_cog/__manifest__.py | 4 ++-- l10n_fr_cog/post_install.py | 21 ++++++++++----------- l10n_fr_cog/views/country.xml | 12 +++++++++++- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py index 531267bac..404170f34 100644 --- a/l10n_fr_cog/__manifest__.py +++ b/l10n_fr_cog/__manifest__.py @@ -1,11 +1,11 @@ -# Copyright 2020-2021 Akretion France (http://www.akretion.com/) +# Copyright 2020-2023 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Code Officiel Géographique", "summary": "Add Code Officiel Géographique (COG) on countries", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "category": "French Localization", "author": "Akretion,Odoo Community Association (OCA)", "maintainers": ["alexis-via"], diff --git a/l10n_fr_cog/post_install.py b/l10n_fr_cog/post_install.py index 698a4cde2..bcc534639 100644 --- a/l10n_fr_cog/post_install.py +++ b/l10n_fr_cog/post_install.py @@ -25,15 +25,14 @@ def set_fr_cog(cr, registry): if xfield.attrib and xfield.attrib.get("name") == "fr_cog": data[xmlid] = int(xfield.text) logger.debug("set_fr_cog data=%s", data) - with api.Environment.manage(): - env = api.Environment(cr, SUPERUSER_ID, {}) - for xmlid, fr_cog in data.items(): - country = env.ref(xmlid) - country.fr_cog = fr_cog - logger.debug( - "Country ID %d xmlid %s updated with fr_cog=%d", - country.id, - xmlid, - fr_cog, - ) + env = api.Environment(cr, SUPERUSER_ID, {}) + for xmlid, fr_cog in data.items(): + country = env.ref(xmlid) + country.fr_cog = fr_cog + logger.debug( + "Country ID %d xmlid %s updated with fr_cog=%d", + country.id, + xmlid, + fr_cog, + ) return diff --git a/l10n_fr_cog/views/country.xml b/l10n_fr_cog/views/country.xml index a6c46eedb..8f81cec61 100644 --- a/l10n_fr_cog/views/country.xml +++ b/l10n_fr_cog/views/country.xml @@ -1,6 +1,6 @@ @@ -18,5 +18,15 @@
+ + res.country + + + + + + + +
From 2949f605738ac56dd07104f73a7dc31ff078e4f9 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 8 Apr 2023 00:35:55 +0200 Subject: [PATCH 236/536] [MIG] l10n_fr_das2 and l10n_fr_cog to v16 --- l10n_fr_cog/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_cog/__manifest__.py b/l10n_fr_cog/__manifest__.py index 404170f34..14e699c5e 100644 --- a/l10n_fr_cog/__manifest__.py +++ b/l10n_fr_cog/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Code Officiel Géographique", "summary": "Add Code Officiel Géographique (COG) on countries", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "category": "French Localization", "author": "Akretion,Odoo Community Association (OCA)", "maintainers": ["alexis-via"], From 7f13d372cf2c5ae3907824239dccc8ada767e3dd Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 14 Apr 2023 09:54:28 +0000 Subject: [PATCH 237/536] [UPD] Update l10n_fr_cog.pot --- l10n_fr_cog/i18n/l10n_fr_cog.pot | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/l10n_fr_cog/i18n/l10n_fr_cog.pot b/l10n_fr_cog/i18n/l10n_fr_cog.pot index 9de15fc11..62a25764d 100644 --- a/l10n_fr_cog/i18n/l10n_fr_cog.pot +++ b/l10n_fr_cog/i18n/l10n_fr_cog.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -27,18 +27,3 @@ msgstr "" #: model:ir.model,name:l10n_fr_cog.model_res_country msgid "Country" msgstr "" - -#. module: l10n_fr_cog -#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__display_name -msgid "Display Name" -msgstr "" - -#. module: l10n_fr_cog -#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__id -msgid "ID" -msgstr "" - -#. module: l10n_fr_cog -#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country____last_update -msgid "Last Modified on" -msgstr "" From d85e7dc1ede338efa1224c87e76f151ef1dbf309 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 14 Apr 2023 09:58:21 +0000 Subject: [PATCH 238/536] [UPD] README.rst --- l10n_fr_cog/README.rst | 10 +++++----- l10n_fr_cog/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_fr_cog/README.rst b/l10n_fr_cog/README.rst index e0a131dca..8a89becd7 100644 --- a/l10n_fr_cog/README.rst +++ b/l10n_fr_cog/README.rst @@ -14,13 +14,13 @@ Code Officiel Géographique :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-france/tree/14.0/l10n_fr_cog + :target: https://github.com/OCA/l10n-france/tree/16.0/l10n_fr_cog :alt: OCA/l10n-france .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-france-14-0/l10n-france-14-0-l10n_fr_cog + :target: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_cog :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/14.0 + :target: https://runbot.odoo-community.org/runbot/121/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -40,7 +40,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -78,6 +78,6 @@ Current `maintainer `__: |maintainer-alexis-via| -This module is part of the `OCA/l10n-france `_ project on GitHub. +This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_cog/static/description/index.html b/l10n_fr_cog/static/description/index.html index 618d4a9cd..ab138a932 100644 --- a/l10n_fr_cog/static/description/index.html +++ b/l10n_fr_cog/static/description/index.html @@ -367,7 +367,7 @@

Code Officiel Géographique

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

This module adds the Code Officiel Géographique of INSEE on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code.

This module is used by other modules of the French localization such as the DAS2 module.

Table of contents

@@ -387,7 +387,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -413,7 +413,7 @@

Maintainers

promote its widespread use.

Current maintainer:

alexis-via

-

This module is part of the OCA/l10n-france project on GitHub.

+

This module is part of the OCA/l10n-france project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 6848694481caca75e60ee72b221f8fa7bec71d4f Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 8 Jun 2023 08:08:22 +0000 Subject: [PATCH 239/536] Added translation using Weblate (French) --- l10n_fr_cog/i18n/fr.po | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 l10n_fr_cog/i18n/fr.po diff --git a/l10n_fr_cog/i18n/fr.po b/l10n_fr_cog/i18n/fr.po new file mode 100644 index 000000000..72f10a1b9 --- /dev/null +++ b/l10n_fr_cog/i18n/fr.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_fr_cog +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: l10n_fr_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model.fields,help:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique, by INSEE" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model,name:l10n_fr_cog.model_res_country +msgid "Country" +msgstr "" From c6f4c745fa22729f7ebb2a431fc24dac6d1b3016 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 8 Jun 2023 08:08:48 +0000 Subject: [PATCH 240/536] Translated using Weblate (French) Currently translated at 100.0% (3 of 3 strings) Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_cog Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_cog/fr/ --- l10n_fr_cog/i18n/fr.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/l10n_fr_cog/i18n/fr.po b/l10n_fr_cog/i18n/fr.po index 72f10a1b9..1cc714904 100644 --- a/l10n_fr_cog/i18n/fr.po +++ b/l10n_fr_cog/i18n/fr.po @@ -6,25 +6,27 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-06-08 11:08+0000\n" +"Last-Translator: Alexis de Lattre \n" "Language-Team: none\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" #. module: l10n_fr_cog #: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__fr_cog msgid "Code Officiel Géographique" -msgstr "" +msgstr "Code Officiel Géographique" #. module: l10n_fr_cog #: model:ir.model.fields,help:l10n_fr_cog.field_res_country__fr_cog msgid "Code Officiel Géographique, by INSEE" -msgstr "" +msgstr "Code Officiel Géographique, de l'INSEE" #. module: l10n_fr_cog #: model:ir.model,name:l10n_fr_cog.model_res_country msgid "Country" -msgstr "" +msgstr "Pays" From 607d5d4147cb4b4cab55da96b5954cd6798f1fe8 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Wed, 9 Aug 2023 12:46:50 +0000 Subject: [PATCH 241/536] Added translation using Weblate (Spanish) --- l10n_fr_cog/i18n/es.po | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 l10n_fr_cog/i18n/es.po diff --git a/l10n_fr_cog/i18n/es.po b/l10n_fr_cog/i18n/es.po new file mode 100644 index 000000000..0ca22ce30 --- /dev/null +++ b/l10n_fr_cog/i18n/es.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_fr_cog +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: l10n_fr_cog +#: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model.fields,help:l10n_fr_cog.field_res_country__fr_cog +msgid "Code Officiel Géographique, by INSEE" +msgstr "" + +#. module: l10n_fr_cog +#: model:ir.model,name:l10n_fr_cog.model_res_country +msgid "Country" +msgstr "" From 8ee5c875f1ed779f8cbe74c7040b2b722871b54d Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Wed, 9 Aug 2023 12:47:42 +0000 Subject: [PATCH 242/536] Translated using Weblate (Spanish) Currently translated at 100.0% (3 of 3 strings) Translation: l10n-france-16.0/l10n-france-16.0-l10n_fr_cog Translate-URL: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_cog/es/ --- l10n_fr_cog/i18n/es.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/l10n_fr_cog/i18n/es.po b/l10n_fr_cog/i18n/es.po index 0ca22ce30..92542e5ea 100644 --- a/l10n_fr_cog/i18n/es.po +++ b/l10n_fr_cog/i18n/es.po @@ -6,25 +6,27 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-08-09 15:09+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" #. module: l10n_fr_cog #: model:ir.model.fields,field_description:l10n_fr_cog.field_res_country__fr_cog msgid "Code Officiel Géographique" -msgstr "" +msgstr "Código geográfico oficial" #. module: l10n_fr_cog #: model:ir.model.fields,help:l10n_fr_cog.field_res_country__fr_cog msgid "Code Officiel Géographique, by INSEE" -msgstr "" +msgstr "Código geográfico oficial, por el INSEE" #. module: l10n_fr_cog #: model:ir.model,name:l10n_fr_cog.model_res_country msgid "Country" -msgstr "" +msgstr "País" From 442edca268c22863fe8061c7fc69b45d95678322 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 13:34:52 +0000 Subject: [PATCH 243/536] [UPD] README.rst --- l10n_fr_cog/README.rst | 15 ++++++---- l10n_fr_cog/static/description/index.html | 36 ++++++++++++----------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/l10n_fr_cog/README.rst b/l10n_fr_cog/README.rst index 8a89becd7..1ce83ead2 100644 --- a/l10n_fr_cog/README.rst +++ b/l10n_fr_cog/README.rst @@ -2,10 +2,13 @@ Code Officiel Géographique ========================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0ff47209e88601bf3c931f9d6886e192d5f5c7d4093af6239d4e73aaa45fcfeb + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Code Officiel Géographique .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/l10n-france-16-0/l10n-france-16-0-l10n_fr_cog :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-france&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds the *Code Officiel Géographique* of `INSEE `_ on countries. All countries except France and DOM-TOMs (and some very particular territories) have this code. @@ -39,7 +42,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/l10n_fr_cog/static/description/index.html b/l10n_fr_cog/static/description/index.html index ab138a932..0413e025c 100644 --- a/l10n_fr_cog/static/description/index.html +++ b/l10n_fr_cog/static/description/index.html @@ -1,20 +1,20 @@ - + - + Code Officiel Géographique + + +
+

DAS2

+ + +

Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

+

This module adds support for DAS2 <https://www.impots.gouv.fr/portail/formulaire/das2/etat-des-honoraires-vacations-commissions-courtages-ristournes-et-jetons>_, which is an annual fiscal declaration also called Déclaration d’honoraires. It will allow you to auto-generate the lines of DAS2 from the accounting entries, check the result, manually update lines if needed and eventually generate a declaration file. This declaration file can be uploaded on the dedicated website https://teletd.impots.gouv.fr/teletd/connexionEFI.do; that way, you won’t have to manually type the declaration.

+

The specifications of the file are available on this page (select Salaires, honoraires et actionnariat salarié).

+

Table of contents

+ +
+

Configuration

+

On the supplier form view, in the Accounting tab, you will see a section DAS2. For the suppliers that must be declared in DAS2, you must set:

+
    +
  • the DAS2 Type,
  • +
  • the job for the DAS2 declaration,
  • +
  • their SIRET number (for French suppliers only),
  • +
  • their full address (street, zip code, city and country).
  • +
+

On the company configuration form, the APE code, SIRET and address must be set.

+

For the user responsible for the declaration, the phone number and email must be set on his related partner form (name, email and phone number are used in the DAS2 declaration file).

+
+
+

Usage

+

Go to the menu Accounting > Reports > French Statements > DAS2 and create a new DAS2 report.

+

Then click on the button Generate Lines. Check and edit the generated lines. You can get the details of the computation performed by Odoo in the Note fields of each line.

+

You should also have a look in the chatter: you may have a message that warn you about suppliers that have expenses recorded in accounts such as 622100 Commissions et courtages sur achats, 622200 Commissions et courtages sur ventes, 622600 Honoraires, 622800 Rémunérations d’intermédiaires divers, 653000 Jetons de présence, 651600 Droits d’auteur et de reproduction and are not configured for DAS2.

+

Once your declaration is OK, click on the button Generate File and download the generated file.

+

Connect to https://teletd.impots.gouv.fr/teletd/connexionEFI.do, select Transmission par internet des fichiers TD/bilatéral and type your login and password (the credentials are specific to this website; their are not the same as on impots.gouv.fr). Then follow the online declaration process and upload the file generated by Odoo.

+

In the minutes following the upload of the file on the website of the administration, you will receive a first e-mail with a subject ACCUSÉ DE DÉPÔT de 1er NIVEAU (Déclaration de salaires et/ou honoraires et/ou actionnariat salarié); it is just an acknowledgement, it doesn’t mean that the file is valid.

+

Then, on the next open day (in my experience), you will receive a second email with a subject Déclaration annuelle DADS BILATERALE. Référence DGFIP: xxxx. Numéro d’envoi : xxx. VALIDE, which means that the file was considered as valid. If the subject ends with BLOQUANT, then you should look for the detailed report in the attached PDF report.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-france project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 7418594158c2a99cab9dd757367e3082efa077c1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 21 Feb 2020 10:34:12 +0000 Subject: [PATCH 259/536] icon.png --- l10n_fr_das2/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 l10n_fr_das2/static/description/icon.png diff --git a/l10n_fr_das2/static/description/icon.png b/l10n_fr_das2/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 510e1016956b0ebf3cd42fa829d0c770504a6f0d Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 30 Mar 2020 19:46:56 +0200 Subject: [PATCH 260/536] l10n_fr_das2: improve date interval for chatter msg --- l10n_fr_das2/models/l10n_fr_das2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index e9eae25d9..b6c171950 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -237,7 +237,7 @@ def add_warning_in_chatter(self, das2_partners): ]) rg_res = amlo.read_group([ ('company_id', '=', company.id), - ('date', '>=', '%d-01-01' % self.year), + ('date', '>=', '%d-10-01' % (self.year - 1)), ('date', '<=', '%d-12-31' % self.year), ('journal_id', 'in', purchase_journals.ids), ('partner_id', '!=', False), From 8b83ce623cfa6577fc07d772bff7f0ca1f75e039 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 30 Mar 2020 23:57:38 +0200 Subject: [PATCH 261/536] [MIG] l10n_fr_cog and l10n_fr_das2 from v10 to v12 l10n_fr_cog: update country list l10n_fr_das2: - add demo data, - add constraint on lines, - improve chatter messages, - fix readonly status of 'job' field on lines, - handle 'job' field in partner change on lines. --- l10n_fr_das2/__init__.py | 2 - l10n_fr_das2/__manifest__.py | 8 +- l10n_fr_das2/demo/demo.xml | 69 +++++++++++++++++ l10n_fr_das2/models/__init__.py | 5 +- l10n_fr_das2/models/company.py | 1 - ..._config_settings.py => config_settings.py} | 5 +- l10n_fr_das2/models/l10n_fr_das2.py | 74 ++++++++++--------- l10n_fr_das2/models/partner.py | 19 +++-- .../views/account_config_settings.xml | 24 ------ l10n_fr_das2/views/config_settings.xml | 34 +++++++++ 10 files changed, 158 insertions(+), 83 deletions(-) create mode 100644 l10n_fr_das2/demo/demo.xml rename l10n_fr_das2/models/{account_config_settings.py => config_settings.py} (75%) delete mode 100644 l10n_fr_das2/views/account_config_settings.xml create mode 100644 l10n_fr_das2/views/config_settings.xml diff --git a/l10n_fr_das2/__init__.py b/l10n_fr_das2/__init__.py index cde864bae..0650744f6 100644 --- a/l10n_fr_das2/__init__.py +++ b/l10n_fr_das2/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import models diff --git a/l10n_fr_das2/__manifest__.py b/l10n_fr_das2/__manifest__.py index c78636fac..bd7ab3356 100644 --- a/l10n_fr_das2/__manifest__.py +++ b/l10n_fr_das2/__manifest__.py @@ -1,12 +1,11 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'DAS2', - 'version': '10.0.1.0.0', - 'category': 'Accounting', + 'version': '12.0.1.0.0', + 'category': 'Invoicing Management', 'license': 'AGPL-3', 'summary': 'DAS2 (France)', 'author': 'Akretion,Odoo Community Association (OCA)', @@ -23,8 +22,9 @@ 'security/ir.model.access.csv', 'views/l10n_fr_das2.xml', 'views/partner.xml', - 'views/account_config_settings.xml', + 'views/config_settings.xml', ], + 'demo': ['demo/demo.xml'], 'installable': True, 'application': True, } diff --git a/l10n_fr_das2/demo/demo.xml b/l10n_fr_das2/demo/demo.xml new file mode 100644 index 000000000..f30535e6d --- /dev/null +++ b/l10n_fr_das2/demo/demo.xml @@ -0,0 +1,69 @@ + + + + + + + + + 6201Z + + + + 999999998 + 00019 + + + + + + Experts comptables du Rhône + + + 12 rue du chiffre + 69100 + Villeurbanne + + experts@comptables.example.com + fee + Expert comptable + 111111118 + 00019 + + + + Cabinet d'avocats Juridon + + + 42 rue du crime + 69100 + Villeurbanne + + avocats@example.com + fee + Avocat + 222222226 + 00011 + + + + Cabinet CACtus + + + 42 rue de l'audit + 69100 + Villeurbanne + + cac@example.com + fee + Commissaire aux comptes + 333333334 + 00014 + + + + diff --git a/l10n_fr_das2/models/__init__.py b/l10n_fr_das2/models/__init__.py index 02a7fcc3e..36aac8dba 100644 --- a/l10n_fr_das2/models/__init__.py +++ b/l10n_fr_das2/models/__init__.py @@ -1,7 +1,4 @@ -# -*- coding: utf-8 -*- - from . import l10n_fr_das2 from . import partner from . import company -from . import account_config_settings - +from . import config_settings diff --git a/l10n_fr_das2/models/company.py b/l10n_fr_das2/models/company.py index 20f0432bd..7378d8384 100644 --- a/l10n_fr_das2/models/company.py +++ b/l10n_fr_das2/models/company.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_fr_das2/models/account_config_settings.py b/l10n_fr_das2/models/config_settings.py similarity index 75% rename from l10n_fr_das2/models/account_config_settings.py rename to l10n_fr_das2/models/config_settings.py index f9e3e6a0a..d3d62abef 100644 --- a/l10n_fr_das2/models/account_config_settings.py +++ b/l10n_fr_das2/models/config_settings.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -6,8 +5,8 @@ from odoo import fields, models -class AccountConfigSettings(models.TransientModel): - _inherit = 'account.config.settings' +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' fr_das2_partner_declare_threshold = fields.Integer( related='company_id.fr_das2_partner_declare_threshold', readonly=False) diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index b6c171950..bad909f5f 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -64,8 +63,8 @@ class L10nFrDas2(models.Model): partner_declare_threshold = fields.Integer( string='Partner Declaration Threshold', readonly=True) dads_type = fields.Selection([ - ('4', u"La société verse des salaires"), - ('1', u"La société ne verse pas de salaires"), + ('4', "La société verse des salaires"), + ('1', "La société ne verse pas de salaires"), ], 'DADS Type', required=True, states={'done': [('readonly', True)]}, track_visibility='onchange', @@ -177,6 +176,7 @@ def generate_lines(self): vals = self._prepare_line(partner, base_domain) if vals: lfdlo.create(vals) + self.message_post(body="DAS2 lines generated.") self.add_warning_in_chatter(das2_partners) def _prepare_line(self, partner, base_domain): @@ -189,18 +189,12 @@ def _prepare_line(self, partner, base_domain): amount = 0.0 for mline in mlines: amount += mline.balance - if mline.full_reconcile_id: - rec = _( - 'reconciliation mark %s') % mline.full_reconcile_id.name - else: - rec = _('not reconciled') note.append(_( "Payment dated %s in journal '%s': " - "%.2f € (%s, journal entry %s)") % ( + "%.2f € (journal entry %s)") % ( mline.date, mline.journal_id.display_name, mline.balance, - rec, mline.move_id.name)) res = False if note: @@ -255,7 +249,7 @@ def add_warning_in_chatter(self, das2_partners): msg += '
  • %s' % (partner.id, partner.display_name) msg += '' - self.message_post(msg) + self.message_post(body=msg) @api.model def _prepare_field( @@ -312,7 +306,7 @@ def _prepare_address(self, partner): if partner.country_id and partner.country_id.code not in FRANCE_CODES: if not partner.country_id.fr_cog: raise UserError(_( - u"Missing Code Officiel Géographique on country '%s'.") + "Missing Code Officiel Géographique on country '%s'.") % partner.country_id.display_name) cog = self._prepare_field( 'COG', partner, partner.country_id.fr_cog, 5, True, @@ -439,7 +433,7 @@ def _prepare_file(self): 'Administrative contact email', contact, contact.email, 60) phone = contact.phone or contact.mobile phone = phone.replace(' ', '').replace('.', '').replace( - '-', '').replace(u'\u00A0', '') + '-', '').replace('\u00A0', '') if phone.startswith('+33'): phone = '0%s' % phone[3:] contact_phone = self._prepare_field( @@ -514,6 +508,7 @@ def generate_file(self): 'datas_fname': filename, }) self.attachment_id = attach.id + self.message_post(body="DAS2 file generated.") action = { 'type': 'ir.actions.act_window', 'name': _('DAS2 Export File'), @@ -529,7 +524,8 @@ def generate_file(self): pass # The code below works and triggers an immediate download, but - # the form view of DAS2 is frozen after that, we it's not usable in v10 + # the form view of DAS2 is frozen after that, so it's not usable + # in v10/v12... maybe it's only designed to be used in a wizard # action = { # 'name': 'DAS2', # 'type': 'ir.actions.act_url', @@ -570,57 +566,62 @@ class L10nFrDas2Line(models.Model): related='parent_id.company_id.currency_id', store=True, readonly=True, string='Company Currency') fee_amount = fields.Integer( - string=u'Honoraires et vacations', + string='Honoraires et vacations', states={'done': [('readonly', True)]}) commission_amount = fields.Integer( - string=u'Commissions', states={'done': [('readonly', True)]}) + string='Commissions', states={'done': [('readonly', True)]}) brokerage_amount = fields.Integer( - string=u'Courtages', states={'done': [('readonly', True)]}) + string='Courtages', states={'done': [('readonly', True)]}) discount_amount = fields.Integer( - string=u'Ristournes', states={'done': [('readonly', True)]}) + string='Ristournes', states={'done': [('readonly', True)]}) attendance_fee_amount = fields.Integer( - string=u'Jetons de présence', states={'done': [('readonly', True)]}) + string='Jetons de présence', states={'done': [('readonly', True)]}) copyright_royalties_amount = fields.Integer( - string=u"Droits d'auteur", states={'done': [('readonly', True)]}) + string="Droits d'auteur", states={'done': [('readonly', True)]}) licence_royalties_amount = fields.Integer( - string=u"Droits d'inventeur", states={'done': [('readonly', True)]}) + string="Droits d'inventeur", states={'done': [('readonly', True)]}) other_income_amount = fields.Integer( - string=u'Autre rémunérations', states={'done': [('readonly', True)]}) + string='Autre rémunérations', states={'done': [('readonly', True)]}) allowance_amount = fields.Integer( - string=u'Indemnités et remboursements', + string='Indemnités et remboursements', states={'done': [('readonly', True)]}) benefits_in_kind_amount = fields.Integer( string='Avantages en nature', states={'done': [('readonly', True)]}) withholding_tax_amount = fields.Integer( - string=u'Retenue à la source', states={'done': [('readonly', True)]}) + string='Retenue à la source', states={'done': [('readonly', True)]}) total_amount = fields.Integer( compute='_compute_total_amount', string='Total Amount', store=True, readonly=True) to_declare = fields.Boolean( compute='_compute_total_amount', string='To Declare', readonly=True) allowance_fixed = fields.Boolean( - u'Allocation forfaitaire', states={'done': [('readonly', True)]}) + 'Allocation forfaitaire', states={'done': [('readonly', True)]}) allowance_real = fields.Boolean( - u'Sur frais réels', states={'done': [('readonly', True)]}) + 'Sur frais réels', states={'done': [('readonly', True)]}) allowance_employer = fields.Boolean( - u"Prise en charge directe par l'employeur", + "Prise en charge directe par l'employeur", states={'done': [('readonly', True)]}) benefits_in_kind_food = fields.Boolean( - u'Nourriture', states={'done': [('readonly', True)]}) + 'Nourriture', states={'done': [('readonly', True)]}) benefits_in_kind_accomodation = fields.Boolean( - u'Logement', states={'done': [('readonly', True)]}) + 'Logement', states={'done': [('readonly', True)]}) benefits_in_kind_car = fields.Boolean( - u'Voiture', states={'done': [('readonly', True)]}) + 'Voiture', states={'done': [('readonly', True)]}) benefits_in_kind_other = fields.Boolean( - u'Autres', states={'done': [('readonly', True)]}) + 'Autres', states={'done': [('readonly', True)]}) benefits_in_kind_nict = fields.Boolean( - u'Outils issus des NTIC', states={'done': [('readonly', True)]}) + 'Outils issus des NTIC', states={'done': [('readonly', True)]}) state = fields.Selection( related='parent_id.state', store=True, readonly=True) note = fields.Text() - job = fields.Char(string='Profession', size=30) + job = fields.Char( + string='Profession', size=30, states={'done': [('readonly', True)]}) _sql_constraints = [ + ( + 'partner_parent_unique', + 'unique(partner_id, parent_id)', + 'Same partner used on several lines!'), ( 'fee_amount_positive', 'CHECK(fee_amount >= 0)', @@ -702,5 +703,8 @@ def check_siret(self): @api.onchange('partner_id') def partner_id_change(self): - if self.partner_id and self.partner_id.siren and self.partner_id.nic: - self.partner_siret = self.partner_id.siret + if self.partner_id: + if self.partner_id.siren and self.partner_id.nic: + self.partner_siret = self.partner_id.siret + if self.partner_id.fr_das2_job: + self.job = self.partner_id.fr_das2_job diff --git a/l10n_fr_das2/models/partner.py b/l10n_fr_das2/models/partner.py index 720c920a0..47cd0efb0 100644 --- a/l10n_fr_das2/models/partner.py +++ b/l10n_fr_das2/models/partner.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -10,15 +9,15 @@ class ResPartner(models.Model): _inherit = 'res.partner' fr_das2_type = fields.Selection([ - ('fee', u'Honoraires et vacations'), - ('commission', u'Commissions'), - ('brokerage', u'Courtages'), - ('discount', u'Ristournes'), - ('attendance_fee', u'Jetons de présence'), - ('copyright_royalties', u"Droits d'auteur"), - ('licence_royalties', u"Droits d'inventeur"), - ('other_income', u'Autre rémunérations'), - ('allowance', u'Indemnités et remboursements'), + ('fee', 'Honoraires et vacations'), + ('commission', 'Commissions'), + ('brokerage', 'Courtages'), + ('discount', 'Ristournes'), + ('attendance_fee', 'Jetons de présence'), + ('copyright_royalties', "Droits d'auteur"), + ('licence_royalties', "Droits d'inventeur"), + ('other_income', 'Autre rémunérations'), + ('allowance', 'Indemnités et remboursements'), ], string='DAS2 Type', track_visibility='onchange') fr_das2_job = fields.Char( string='DAS2 Job', size=30, diff --git a/l10n_fr_das2/views/account_config_settings.xml b/l10n_fr_das2/views/account_config_settings.xml deleted file mode 100644 index d366aabbe..000000000 --- a/l10n_fr_das2/views/account_config_settings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - chorus.account.config.settings.form - account.config.settings - - - - - - - - - - - - diff --git a/l10n_fr_das2/views/config_settings.xml b/l10n_fr_das2/views/config_settings.xml new file mode 100644 index 000000000..9f14c4f3e --- /dev/null +++ b/l10n_fr_das2/views/config_settings.xml @@ -0,0 +1,34 @@ + + + + + + + + das2.res.config.settings.form + res.config.settings + + + +

    Intrastat

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + From c4a644b129bbabaee7b02faa18cc9ed4f8b4af52 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 3 Apr 2020 11:18:53 +0200 Subject: [PATCH 262/536] Add missing _ on message string --- l10n_fr_das2/models/l10n_fr_das2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index bad909f5f..0ae682186 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -176,7 +176,7 @@ def generate_lines(self): vals = self._prepare_line(partner, base_domain) if vals: lfdlo.create(vals) - self.message_post(body="DAS2 lines generated.") + self.message_post(body=_("DAS2 lines generated.")) self.add_warning_in_chatter(das2_partners) def _prepare_line(self, partner, base_domain): @@ -508,7 +508,7 @@ def generate_file(self): 'datas_fname': filename, }) self.attachment_id = attach.id - self.message_post(body="DAS2 file generated.") + self.message_post(body=_("DAS2 file generated.")) action = { 'type': 'ir.actions.act_window', 'name': _('DAS2 Export File'), From b6d0fec9ac4639fdfb073df0b32ee5def78ed1df Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 3 Apr 2020 11:27:28 +0200 Subject: [PATCH 263/536] Fix double import of unidecode --- l10n_fr_das2/models/l10n_fr_das2.py | 1 - 1 file changed, 1 deletion(-) diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index 0ae682186..4c1fbf810 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -7,7 +7,6 @@ from dateutil.relativedelta import relativedelta from datetime import datetime from odoo.addons.l10n_fr_siret.models.partner import _check_luhn -from unidecode import unidecode import base64 import logging From 7933d2a12650ba7cecb001e9306c921924236867 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 3 Apr 2020 12:52:17 +0000 Subject: [PATCH 264/536] [UPD] README.rst --- l10n_fr_das2/README.rst | 10 +++++----- l10n_fr_das2/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_fr_das2/README.rst b/l10n_fr_das2/README.rst index 84f139548..f497668eb 100644 --- a/l10n_fr_das2/README.rst +++ b/l10n_fr_das2/README.rst @@ -14,13 +14,13 @@ DAS2 :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--france-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-france/tree/10.0/l10n_fr_das2 + :target: https://github.com/OCA/l10n-france/tree/12.0/l10n_fr_das2 :alt: OCA/l10n-france .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-france-10-0/l10n-france-10-0-l10n_fr_das2 + :target: https://translation.odoo-community.org/projects/l10n-france-12-0/l10n-france-12-0-l10n_fr_das2 :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/121/10.0 + :target: https://runbot.odoo-community.org/runbot/121/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -71,7 +71,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -101,6 +101,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/l10n-france `_ project on GitHub. +This module is part of the `OCA/l10n-france `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_fr_das2/static/description/index.html b/l10n_fr_das2/static/description/index.html index c62df0286..4f6def775 100644 --- a/l10n_fr_das2/static/description/index.html +++ b/l10n_fr_das2/static/description/index.html @@ -367,7 +367,7 @@

    DAS2

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

    +

    Beta License: AGPL-3 OCA/l10n-france Translate me on Weblate Try me on Runbot

    This module adds support for DAS2 <https://www.impots.gouv.fr/portail/formulaire/das2/etat-des-honoraires-vacations-commissions-courtages-ristournes-et-jetons>_, which is an annual fiscal declaration also called Déclaration d’honoraires. It will allow you to auto-generate the lines of DAS2 from the accounting entries, check the result, manually update lines if needed and eventually generate a declaration file. This declaration file can be uploaded on the dedicated website https://teletd.impots.gouv.fr/teletd/connexionEFI.do; that way, you won’t have to manually type the declaration.

    The specifications of the file are available on this page (select Salaires, honoraires et actionnariat salarié).

    Table of contents

    @@ -411,7 +411,7 @@

    Bug Tracker

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

    +feedback.

    Do not contact contributors directly about support or help with technical issues.

    @@ -435,7 +435,7 @@

    Maintainers

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/l10n-france project on GitHub.

    +

    This module is part of the OCA/l10n-france project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    From 5545836b98299a63c19a52dac78de050e546db38 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 3 Apr 2020 13:01:51 +0000 Subject: [PATCH 265/536] [UPD] Update l10n_fr_das2.pot --- l10n_fr_das2/i18n/l10n_fr_das2.pot | 698 +++++++++++++++++++++++++++++ 1 file changed, 698 insertions(+) create mode 100644 l10n_fr_das2/i18n/l10n_fr_das2.pot diff --git a/l10n_fr_das2/i18n/l10n_fr_das2.pot b/l10n_fr_das2/i18n/l10n_fr_das2.pot new file mode 100644 index 000000000..ec2c3ca6a --- /dev/null +++ b/l10n_fr_das2/i18n/l10n_fr_das2.pot @@ -0,0 +1,698 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_fr_das2 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \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_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:242 +#, python-format +msgid "

    The following partners are not configured for DAS2 but they have expenses in some accounts that indicate that maybe they should be configured for DAS2:

      " +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +msgid "Lines Fullscreen" +msgstr "" + +#. module: l10n_fr_das2 +#: sql_constraint:l10n.fr.das2:0 +msgid "A DAS2 already exists for that year!" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:496 +#, python-format +msgid "A special character in the DAS2 file is not in the latin1 table. Please locate this special character and replace it by a standard character and try again." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__contact_id +msgid "Administrative Contact" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__allowance_fixed +msgid "Allocation forfaitaire" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:488 +#, python-format +msgid "An export file already exists. First, delete it via the attachments and then re-generate it." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__other_income_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Autre rémunérations" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_other +msgid "Autres" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_amount +msgid "Avantages en nature" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +msgid "Back to Draft" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:130 +#, python-format +msgid "Cannot delete declaration %s in done state." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__commission_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Commissions" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model,name:l10n_fr_das2.model_res_company +msgid "Companies" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__company_id +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__company_id +msgid "Company" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:143 +#, python-format +msgid "Company '%s' is configured in country '%s'. The DAS2 is only for France and it's oversea territories." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:149 +#, python-format +msgid "Company '%s' is configured with currency '%s'. It should be EUR." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__currency_id +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__currency_id +msgid "Company Currency" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model,name:l10n_fr_das2.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model,name:l10n_fr_das2.model_res_partner +msgid "Contact" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__contact_id +msgid "Contact in the company for the fiscal administration: the name, email and phone number of this partner will be used in the file." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:140 +#, python-format +msgid "Country not set on company '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__brokerage_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Courtages" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__create_uid +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__create_date +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__dads_type +msgid "DADS Type" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.actions.act_window,name:l10n_fr_das2.l10n_fr_das2_action +#: model:ir.model,name:l10n_fr_das2.model_l10n_fr_das2 +#: model:ir.ui.menu,name:l10n_fr_das2.l10n_fr_das2_menu +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_tree +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.view_partner_property_form +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.view_res_partner_filter +msgid "DAS2" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:513 +#, python-format +msgid "DAS2 Export File" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_partner__fr_das2_job +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_users__fr_das2_job +msgid "DAS2 Job" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_line_form +msgid "DAS2 Line" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.actions.act_window,name:l10n_fr_das2.l10n_fr_das2_line_action +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_line_tree +msgid "DAS2 Lines" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_company__fr_das2_partner_declare_threshold +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_config_settings__fr_das2_partner_declare_threshold +msgid "DAS2 Partner Declaration Threshold" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__parent_id +msgid "DAS2 Report" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_partner__fr_das2_type +#: model:ir.model.fields,field_description:l10n_fr_das2.field_res_users__fr_das2_type +msgid "DAS2 Type" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:510 +#, python-format +msgid "DAS2 file generated." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model,name:l10n_fr_das2.model_l10n_fr_das2_line +msgid "DAS2 line" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:178 +#, python-format +msgid "DAS2 lines generated." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__display_name +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_search +#: selection:l10n.fr.das2,state:0 +msgid "Done" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_search +#: selection:l10n.fr.das2,state:0 +msgid "Draft" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__copyright_royalties_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Droits d'auteur" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__licence_royalties_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Droits d'inventeur" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:265 +#, python-format +msgid "Failed to convert field '%s' (partner %s) to integer." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:270 +#, python-format +msgid "Field %s (partner %s) has value %s: it is bigger than the maximum size (%d characters)" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__attachment_id +msgid "File Export" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +msgid "Generate File" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +msgid "Generate Lines" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__fee_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Honoraires et vacations" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__id +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__id +msgid "ID" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_unread +msgid "If checked new messages require your attention." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__allowance_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Indemnités et remboursements" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.view_account_config_settings +msgid "Intrastat" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__attendance_fee_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Jetons de présence" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.view_partner_property_form +msgid "Job" +msgstr "" + +#. module: l10n_fr_das2 +#: selection:l10n.fr.das2,dads_type:0 +msgid "La société ne verse pas de salaires" +msgstr "" + +#. module: l10n_fr_das2 +#: selection:l10n.fr.das2,dads_type:0 +msgid "La société verse des salaires" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2____last_update +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__write_uid +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__write_date +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__line_ids +msgid "Lines" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_form +msgid "List view of lines" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_accomodation +msgid "Logement" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_ids +msgid "Messages" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:471 +#, python-format +msgid "Missing APE on company '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:307 +#, python-format +msgid "Missing Code Officiel Géographique on country '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:375 +#, python-format +msgid "Missing SIRET for french partner %s." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:468 +#, python-format +msgid "Missing SIRET on company '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:474 +#, python-format +msgid "Missing Street on company '%s'" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:478 +#, python-format +msgid "Missing administrative contact." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:303 +#, python-format +msgid "Missing city on partner '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: sql_constraint:l10n.fr.das2.line:0 +msgid "Negative amounts not allowed!" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__note +msgid "Note" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_line_form +msgid "Notes" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_food +msgid "Nourriture" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_has_error_counter +msgid "Number of error" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:455 +#, python-format +msgid "One of the lines has a length of %d. All lines should have a length of 672. Line: %s." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_nict +msgid "Outils issus des NTIC" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__partner_declare_threshold +msgid "Partner Declaration Threshold" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__payment_journal_ids +msgid "Payment Journals" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:191 +#, python-format +msgid "Payment dated %s in journal '%s': %.2f € (journal entry %s)" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__allowance_employer +msgid "Prise en charge directe par l'employeur" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__job +msgid "Profession" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__withholding_tax_amount +msgid "Retenue à la source" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__discount_amount +#: selection:res.partner,fr_das2_type:0 +msgid "Ristournes" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__partner_siret +msgid "SIRET" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:695 +#, python-format +msgid "SIRET %s is invalid: it must have 14 digits." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:699 +#, python-format +msgid "SIRET %s is invalid: the checksum is wrong." +msgstr "" + +#. module: l10n_fr_das2 +#: sql_constraint:l10n.fr.das2.line:0 +msgid "Same partner used on several lines!" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_search +msgid "Search DAS2" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_line_search +msgid "Search DAS2 Lines" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__state +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__state +msgid "State" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__partner_id +msgid "Supplier" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__allowance_real +msgid "Sur frais réels" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:466 +#, python-format +msgid "The DAS2 has no lines." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:155 +#, python-format +msgid "The DAS2 partner declaration threshold is not set on company '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: sql_constraint:res.company:0 +msgid "The DAS2 partner declaration threshold must be positive!" +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:480 +#, python-format +msgid "The email is not set on the administrative contact partner '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:279 +#, python-format +msgid "The field '%s' (partner %s) is empty or 0. It should have a non-null value." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:484 +#, python-format +msgid "The phone number is not set on the administrative contact partner '%s'." +msgstr "" + +#. module: l10n_fr_das2 +#: code:addons/l10n_fr_das2/models/l10n_fr_das2.py:164 +#, python-format +msgid "There are no partners configured for DAS2." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__to_declare +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.l10n_fr_das2_line_search +msgid "To Declare" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__total_amount +msgid "Total Amount" +msgstr "" + +#. module: l10n_fr_das2 +#: model_terms:ir.ui.view,arch_db:l10n_fr_das2.view_partner_property_form +msgid "Type" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_res_partner__fr_das2_job +#: model:ir.model.fields,help:l10n_fr_das2.field_res_users__fr_das2_job +msgid "Used in the field 'Profession' of DAS2." +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2_line__benefits_in_kind_car +msgid "Voiture" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,help:l10n_fr_das2.field_l10n_fr_das2__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: l10n_fr_das2 +#: model:ir.model.fields,field_description:l10n_fr_das2.field_l10n_fr_das2__year +msgid "Year" +msgstr "" + From 9245b3ac181c1f9dd71252de20dd4476e9226aca Mon Sep 17 00:00:00 2001 From: David Beal Date: Tue, 21 Apr 2020 15:13:32 +0200 Subject: [PATCH 266/536] FIX l10n_fr_das2 E7901 rst error 'Duplicate explicit target name --- l10n_fr_das2/README.rst | 5 ++++- l10n_fr_das2/readme/USAGE.rst | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/l10n_fr_das2/README.rst b/l10n_fr_das2/README.rst index f497668eb..f72cfd0fe 100644 --- a/l10n_fr_das2/README.rst +++ b/l10n_fr_das2/README.rst @@ -51,6 +51,9 @@ For the user responsible for the declaration, the phone number and email must be Usage ===== +.. _DAS2_declaration: https://teletd.impots.gouv.fr/teletd/connexionEFI.do + + Go to the menu *Accounting > Reports > French Statements > DAS2* and create a new DAS2 report. Then click on the button *Generate Lines*. Check and edit the generated lines. You can get the details of the computation performed by Odoo in the *Note* fields of each line. @@ -59,7 +62,7 @@ You should also have a look in the chatter: you may have a message that warn you Once your declaration is OK, click on the button *Generate File* and download the generated file. -Connect to `https://teletd.impots.gouv.fr/teletd/connexionEFI.do `_, select *Transmission par internet des fichiers TD/bilatéral* and type your login and password (the credentials are specific to this website; their are not the same as on *impots.gouv.fr*). Then follow the online declaration process and upload the file generated by Odoo. +Connect to DAS2_declaration_, select *Transmission par internet des fichiers TD/bilatéral* and type your login and password (the credentials are specific to this website; their are not the same as on *impots.gouv.fr*). Then follow the online declaration process and upload the file generated by Odoo. In the minutes following the upload of the file on the website of the administration, you will receive a first e-mail with a subject *ACCUSÉ DE DÉPÔT de 1er NIVEAU (Déclaration de salaires et/ou honoraires et/ou actionnariat salarié)*; it is just an acknowledgement, it doesn't mean that the file is valid. diff --git a/l10n_fr_das2/readme/USAGE.rst b/l10n_fr_das2/readme/USAGE.rst index c1cd60c1e..5eb3d5429 100644 --- a/l10n_fr_das2/readme/USAGE.rst +++ b/l10n_fr_das2/readme/USAGE.rst @@ -1,3 +1,6 @@ +.. _DAS2_declaration: https://teletd.impots.gouv.fr/teletd/connexionEFI.do + + Go to the menu *Accounting > Reports > French Statements > DAS2* and create a new DAS2 report. Then click on the button *Generate Lines*. Check and edit the generated lines. You can get the details of the computation performed by Odoo in the *Note* fields of each line. @@ -6,7 +9,7 @@ You should also have a look in the chatter: you may have a message that warn you Once your declaration is OK, click on the button *Generate File* and download the generated file. -Connect to `https://teletd.impots.gouv.fr/teletd/connexionEFI.do `_, select *Transmission par internet des fichiers TD/bilatéral* and type your login and password (the credentials are specific to this website; their are not the same as on *impots.gouv.fr*). Then follow the online declaration process and upload the file generated by Odoo. +Connect to DAS2_declaration_, select *Transmission par internet des fichiers TD/bilatéral* and type your login and password (the credentials are specific to this website; their are not the same as on *impots.gouv.fr*). Then follow the online declaration process and upload the file generated by Odoo. In the minutes following the upload of the file on the website of the administration, you will receive a first e-mail with a subject *ACCUSÉ DE DÉPÔT de 1er NIVEAU (Déclaration de salaires et/ou honoraires et/ou actionnariat salarié)*; it is just an acknowledgement, it doesn't mean that the file is valid. From 420279da7c0931577823f176165d7b937bd966ba Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 22 Apr 2020 11:19:10 +0000 Subject: [PATCH 267/536] [UPD] README.rst --- l10n_fr_das2/static/description/index.html | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/l10n_fr_das2/static/description/index.html b/l10n_fr_das2/static/description/index.html index 4f6def775..46a13a868 100644 --- a/l10n_fr_das2/static/description/index.html +++ b/l10n_fr_das2/static/description/index.html @@ -373,19 +373,19 @@

      DAS2

      Table of contents

      -

      Configuration

      +

      Configuration

      On the supplier form view, in the Accounting tab, you will see a section DAS2. For the suppliers that must be declared in DAS2, you must set:

      • the DAS2 Type,
      • @@ -397,17 +397,17 @@

        Configuration

        For the user responsible for the declaration, the phone number and email must be set on his related partner form (name, email and phone number are used in the DAS2 declaration file).

      -

      Usage

      +

      Usage

      Go to the menu Accounting > Reports > French Statements > DAS2 and create a new DAS2 report.

      Then click on the button Generate Lines. Check and edit the generated lines. You can get the details of the computation performed by Odoo in the Note fields of each line.

      You should also have a look in the chatter: you may have a message that warn you about suppliers that have expenses recorded in accounts such as 622100 Commissions et courtages sur achats, 622200 Commissions et courtages sur ventes, 622600 Honoraires, 622800 Rémunérations d’intermédiaires divers, 653000 Jetons de présence, 651600 Droits d’auteur et de reproduction and are not configured for DAS2.

      Once your declaration is OK, click on the button Generate File and download the generated file.

      -

      Connect to https://teletd.impots.gouv.fr/teletd/connexionEFI.do, select Transmission par internet des fichiers TD/bilatéral and type your login and password (the credentials are specific to this website; their are not the same as on impots.gouv.fr). Then follow the online declaration process and upload the file generated by Odoo.

      +

      Connect to DAS2_declaration, select Transmission par internet des fichiers TD/bilatéral and type your login and password (the credentials are specific to this website; their are not the same as on impots.gouv.fr). Then follow the online declaration process and upload the file generated by Odoo.

      In the minutes following the upload of the file on the website of the administration, you will receive a first e-mail with a subject ACCUSÉ DE DÉPÔT de 1er NIVEAU (Déclaration de salaires et/ou honoraires et/ou actionnariat salarié); it is just an acknowledgement, it doesn’t mean that the file is valid.

      Then, on the next open day (in my experience), you will receive a second email with a subject Déclaration annuelle DADS BILATERALE. Référence DGFIP: xxxx. Numéro d’envoi : xxx. VALIDE, which means that the file was considered as valid. If the subject ends with BLOQUANT, then you should look for the detailed report in the attached PDF report.

      -

      Bug Tracker

      +

      Bug Tracker

      Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed @@ -415,21 +415,21 @@

      Bug Tracker

      Do not contact contributors directly about support or help with technical issues.

      -

      Credits

      +

      Credits

      -

      Authors

      +

      Authors

      • Akretion
      -

      Maintainers

      +

      Maintainers

      This module is maintained by the OCA.

      Odoo Community Association

      OCA, or the Odoo Community Association, is a nonprofit organization whose From 0f1844ef0cfb69e386ab9a8f8c858bea9373eda7 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 22 Apr 2020 11:19:11 +0000 Subject: [PATCH 268/536] l10n_fr_das2 12.0.1.0.1 --- l10n_fr_das2/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_fr_das2/__manifest__.py b/l10n_fr_das2/__manifest__.py index bd7ab3356..15b800ad5 100644 --- a/l10n_fr_das2/__manifest__.py +++ b/l10n_fr_das2/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'DAS2', - 'version': '12.0.1.0.0', + 'version': '12.0.1.0.1', 'category': 'Invoicing Management', 'license': 'AGPL-3', 'summary': 'DAS2 (France)', From 8acb7cbb4337c5aeea943f4d30adeededfa09d93 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 13 May 2020 22:46:02 +0200 Subject: [PATCH 269/536] l10n_fr_das2: FIX computation of total_amount on lines --- l10n_fr_das2/models/l10n_fr_das2.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index 4c1fbf810..79262702b 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -677,15 +677,15 @@ class L10nFrDas2Line(models.Model): 'withholding_tax_amount') def _compute_total_amount(self): for line in self: - amount_total = 0 + total_amount = 0 for field_name in AMOUNT_FIELDS: - amount_total += line[field_name] + total_amount += line[field_name] to_declare = False if line.parent_id: - if amount_total >= line.parent_id.partner_declare_threshold: + if total_amount >= line.parent_id.partner_declare_threshold: to_declare = True line.to_declare = to_declare - line.amount_total = amount_total + line.total_amount = total_amount @api.constrains('partner_siret') def check_siret(self): From e77e7cd56dca7ecceac53317f5d1ae97c420619a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 18 Feb 2021 22:23:34 +0100 Subject: [PATCH 270/536] [MIG] l10n_fr_das2 and l10n_fr_cog to v14 Add warning message at the top of DAS2 form (and not only in chatter) Use python-stdnum to validate SIRET --- l10n_fr_das2/__init__.py | 1 + l10n_fr_das2/__manifest__.py | 10 +- l10n_fr_das2/demo/demo.xml | 14 +-- l10n_fr_das2/models/__init__.py | 5 +- l10n_fr_das2/models/l10n_fr_das2.py | 110 +++++++----------- .../models/{company.py => res_company.py} | 2 +- .../models/{partner.py => res_partner.py} | 4 +- l10n_fr_das2/security/das2_security.xml | 4 +- l10n_fr_das2/views/l10n_fr_das2.xml | 15 ++- ...g_settings.xml => res_config_settings.xml} | 8 +- .../views/{partner.xml => res_partner.xml} | 5 +- l10n_fr_das2/wizards/__init__.py | 1 + .../res_config_settings.py} | 2 +- 13 files changed, 84 insertions(+), 97 deletions(-) rename l10n_fr_das2/models/{company.py => res_company.py} (89%) rename l10n_fr_das2/models/{partner.py => res_partner.py} (86%) rename l10n_fr_das2/views/{config_settings.xml => res_config_settings.xml} (83%) rename l10n_fr_das2/views/{partner.xml => res_partner.xml} (89%) create mode 100644 l10n_fr_das2/wizards/__init__.py rename l10n_fr_das2/{models/config_settings.py => wizards/res_config_settings.py} (85%) diff --git a/l10n_fr_das2/__init__.py b/l10n_fr_das2/__init__.py index 0650744f6..aee8895e7 100644 --- a/l10n_fr_das2/__init__.py +++ b/l10n_fr_das2/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizards diff --git a/l10n_fr_das2/__manifest__.py b/l10n_fr_das2/__manifest__.py index 15b800ad5..1dee664a7 100644 --- a/l10n_fr_das2/__manifest__.py +++ b/l10n_fr_das2/__manifest__.py @@ -1,10 +1,10 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'DAS2', - 'version': '12.0.1.0.1', + 'version': '14.0.1.0.0', 'category': 'Invoicing Management', 'license': 'AGPL-3', 'summary': 'DAS2 (France)', @@ -15,14 +15,14 @@ 'l10n_fr_cog', ], 'external_dependencies': { - 'python': ['unidecode'], + 'python': ['unidecode', 'python-stdnum'], }, 'data': [ 'security/das2_security.xml', 'security/ir.model.access.csv', 'views/l10n_fr_das2.xml', - 'views/partner.xml', - 'views/config_settings.xml', + 'views/res_partner.xml', + 'views/res_config_settings.xml', ], 'demo': ['demo/demo.xml'], 'installable': True, diff --git a/l10n_fr_das2/demo/demo.xml b/l10n_fr_das2/demo/demo.xml index f30535e6d..01c28dbd0 100644 --- a/l10n_fr_das2/demo/demo.xml +++ b/l10n_fr_das2/demo/demo.xml @@ -1,6 +1,6 @@ @@ -22,8 +22,8 @@ Experts comptables du Rhône - - + + 12 rue du chiffre 69100 Villeurbanne @@ -37,8 +37,8 @@ Cabinet d'avocats Juridon - - + + 42 rue du crime 69100 Villeurbanne @@ -52,8 +52,8 @@ Cabinet CACtus - - + + 42 rue de l'audit 69100 Villeurbanne diff --git a/l10n_fr_das2/models/__init__.py b/l10n_fr_das2/models/__init__.py index 36aac8dba..cb3d3203f 100644 --- a/l10n_fr_das2/models/__init__.py +++ b/l10n_fr_das2/models/__init__.py @@ -1,4 +1,3 @@ from . import l10n_fr_das2 -from . import partner -from . import company -from . import config_settings +from . import res_partner +from . import res_company diff --git a/l10n_fr_das2/models/l10n_fr_das2.py b/l10n_fr_das2/models/l10n_fr_das2.py index 79262702b..83a0a1e40 100644 --- a/l10n_fr_das2/models/l10n_fr_das2.py +++ b/l10n_fr_das2/models/l10n_fr_das2.py @@ -1,12 +1,11 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models, _ from odoo.exceptions import UserError, ValidationError -from dateutil.relativedelta import relativedelta from datetime import datetime -from odoo.addons.l10n_fr_siret.models.partner import _check_luhn +from stdnum.fr.siret import is_valid import base64 import logging @@ -30,24 +29,24 @@ class L10nFrDas2(models.Model): _name = 'l10n.fr.das2' - _inherit = ['mail.thread'] + _inherit = ['mail.thread', 'mail.activity.mixin'] _order = 'year desc' _description = 'DAS2' year = fields.Integer( string='Year', required=True, states={'done': [('readonly', True)]}, - track_visibility='onchange', + tracking=True, default=lambda self: self._default_year()) state = fields.Selection([ ('draft', 'Draft'), ('done', 'Done'), ], default='draft', readonly=True, string='State', - track_visibility='onchange') + tracking=True) company_id = fields.Many2one( 'res.company', string='Company', ondelete='cascade', required=True, states={'done': [('readonly', True)]}, - default=lambda self: self.env['res.company']._company_default_get()) + default=lambda self: self.env.company) currency_id = fields.Many2one( related='company_id.currency_id', readonly=True, store=True, string='Company Currency') @@ -55,6 +54,7 @@ class L10nFrDas2(models.Model): 'account.journal', string='Payment Journals', required=True, default=lambda self: self._default_payment_journals(), + domain="[('company_id', '=', company_id)]", states={'done': [('readonly', True)]}) line_ids = fields.One2many( 'l10n.fr.das2.line', 'parent_id', string='Lines', @@ -66,18 +66,25 @@ class L10nFrDas2(models.Model): ('1', "La société ne verse pas de salaires"), ], 'DADS Type', required=True, states={'done': [('readonly', True)]}, - track_visibility='onchange', + tracking=True, default=lambda self: self._default_dads_type()) # option for draft moves ? contact_id = fields.Many2one( 'res.partner', string='Administrative Contact', states={'done': [('readonly', True)]}, default=lambda self: self.env.user.partner_id.id, - track_visibility='onchange', + tracking=True, help='Contact in the company for the fiscal administration: the name, ' 'email and phone number of this partner will be used in the file.') attachment_id = fields.Many2one( - 'ir.attachment', string='File Export', readonly=True) + 'ir.attachment', string='Attachment', readonly=True) + attachment_datas = fields.Binary( + related="attachment_id.datas", string="File Export") + attachment_name = fields.Char( + related="attachment_id.name", string="Filename") + # The only drawback of the warning_msg solution is that I didn't find a way + # to put a link to partners inside it + warning_msg = fields.Html(readonly=True) _sql_constraints = [( 'year_company_uniq', @@ -98,16 +105,15 @@ def _default_payment_journals(self): res = [] pay_journals = self.env['account.journal'].search([ ('type', 'in', ('bank', 'cash')), - ('company_id', '=', self.env.user.company_id.id)]) + ('company_id', '=', self.env.company.id)]) if pay_journals: res = pay_journals.ids return res @api.model def _default_year(self): - today = datetime.today() - prev_year = today - relativedelta(years=1) - return prev_year.year + last_year = datetime.today().year - 1 + return last_year @api.depends('year') def name_get(self): @@ -117,11 +123,11 @@ def name_get(self): return res def done(self): - self.state = 'done' + self.write({'state': 'done'}) return def back2draft(self): - self.state = 'draft' + self.write({'state': 'draft'}) return def unlink(self): @@ -130,7 +136,7 @@ def unlink(self): raise UserError(_( "Cannot delete declaration %s in done state.") % rec.display_name) - return super(L10nFrDas2, self).unlink() + return super().unlink() def generate_lines(self): self.ensure_one() @@ -175,8 +181,7 @@ def generate_lines(self): vals = self._prepare_line(partner, base_domain) if vals: lfdlo.create(vals) - self.message_post(body=_("DAS2 lines generated.")) - self.add_warning_in_chatter(das2_partners) + self.generate_warning_msg(das2_partners) def _prepare_line(self, partner, base_domain): amlo = self.env['account.move.line'] @@ -209,7 +214,7 @@ def _prepare_line(self, partner, base_domain): res['partner_siret'] = partner.siret return res - def add_warning_in_chatter(self, das2_partners): + def generate_warning_msg(self, das2_partners): amlo = self.env['account.move.line'] aao = self.env['account.account'] ajo = self.env['account.journal'] @@ -238,17 +243,23 @@ def add_warning_in_chatter(self, das2_partners): ('account_id', 'in', das2_accounts.ids), ('balance', '!=', 0), ], ['partner_id'], ['partner_id']) + msg = False + msg_post = _("DAS2 lines generated. ") if rg_res: msg = _( - "

      The following partners are not configured for DAS2 but " + "The following partners are not configured for DAS2 but " "they have expenses in some accounts that indicate " - "that maybe they should be configured for DAS2:

        ") + "they should probably be configured for DAS2:
          ") + msg_post += msg for rg_re in rg_res: partner = rpo.browse(rg_re['partner_id'][0]) - msg += '
        • %s' % (partner.id, partner.display_name) + msg_post += '
        • %s
        • ' % (partner.id, partner.display_name) + msg += "
        • %s
        • " % partner.display_name + msg_post += '
        ' msg += '
      ' - self.message_post(body=msg) + self.message_post(body=msg_post) + self.write({'warning_msg': msg}) @api.model def _prepare_field( @@ -503,43 +514,15 @@ def generate_file(self): 'name': filename, 'res_id': self.id, 'res_model': self._name, - 'datas': base64.encodestring(file_content_encoded), - 'datas_fname': filename, + 'datas': base64.encodebytes(file_content_encoded), }) self.attachment_id = attach.id self.message_post(body=_("DAS2 file generated.")) - action = { - 'type': 'ir.actions.act_window', - 'name': _('DAS2 Export File'), - 'view_mode': 'form', - 'res_model': 'ir.attachment', - 'target': 'current', - 'res_id': attach.id, - } - try: - action['view_id'] = self.env.ref( - 'account_payment_order.view_attachment_simplified_form').id - except Exception: - pass - - # The code below works and triggers an immediate download, but - # the form view of DAS2 is frozen after that, so it's not usable - # in v10/v12... maybe it's only designed to be used in a wizard - # action = { - # 'name': 'DAS2', - # 'type': 'ir.actions.act_url', - # 'url': "web/content/?model=ir.attachment&id=%d" - # "&filename_field=filename" - # "&field=datas&download=true&filename=%s" % ( - # attach.id, filename), - # 'target': 'self', - # } - return action def button_lines_fullscreen(self): self.ensure_one() - action = self.env['ir.actions.act_window'].for_xml_id( - 'l10n_fr_das2', 'l10n_fr_das2_line_action') + action = self.env.ref( + 'l10n_fr_das2.l10n_fr_das2_line_action').sudo().read()[0] action.update({ 'domain': [('parent_id', '=', self.id)], 'views': False, @@ -592,7 +575,8 @@ class L10nFrDas2Line(models.Model): compute='_compute_total_amount', string='Total Amount', store=True, readonly=True) to_declare = fields.Boolean( - compute='_compute_total_amount', string='To Declare', readonly=True) + compute='_compute_total_amount', string='To Declare', readonly=True, + store=True) allowance_fixed = fields.Boolean( 'Allocation forfaitaire', states={'done': [('readonly', True)]}) allowance_real = fields.Boolean( @@ -690,15 +674,9 @@ def _compute_total_amount(self): @api.constrains('partner_siret') def check_siret(self): for line in self: - if line.partner_siret: - if len(line.partner_siret) != 14: - raise ValidationError(_( - "SIRET %s is invalid: it must have 14 digits.") - % line.partner_siret) - if not _check_luhn(line.partner_siret): - raise ValidationError(_( - "SIRET %s is invalid: the checksum is wrong.") - % line.partner_siret) + if line.partner_siret and not is_valid(line.partner_siret): + raise ValidationError(_( + "SIRET '%s' is invalid.") % line.partner_siret) @api.onchange('partner_id') def partner_id_change(self): diff --git a/l10n_fr_das2/models/company.py b/l10n_fr_das2/models/res_company.py similarity index 89% rename from l10n_fr_das2/models/company.py rename to l10n_fr_das2/models/res_company.py index 7378d8384..e18007a01 100644 --- a/l10n_fr_das2/models/company.py +++ b/l10n_fr_das2/models/res_company.py @@ -1,4 +1,4 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_fr_das2/models/partner.py b/l10n_fr_das2/models/res_partner.py similarity index 86% rename from l10n_fr_das2/models/partner.py rename to l10n_fr_das2/models/res_partner.py index 47cd0efb0..bf5882cec 100644 --- a/l10n_fr_das2/models/partner.py +++ b/l10n_fr_das2/models/res_partner.py @@ -1,4 +1,4 @@ -# Copyright 2020 Akretion France (http://www.akretion.com/) +# Copyright 2020-2021 Akretion France (http://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -18,7 +18,7 @@ class ResPartner(models.Model): ('licence_royalties', "Droits d'inventeur"), ('other_income', 'Autre rémunérations'), ('allowance', 'Indemnités et remboursements'), - ], string='DAS2 Type', track_visibility='onchange') + ], string='DAS2 Type', tracking=100) fr_das2_job = fields.Char( string='DAS2 Job', size=30, help="Used in the field 'Profession' of DAS2.") diff --git a/l10n_fr_das2/security/das2_security.xml b/l10n_fr_das2/security/das2_security.xml index d6e9b4a9a..fca416f08 100644 --- a/l10n_fr_das2/security/das2_security.xml +++ b/l10n_fr_das2/security/das2_security.xml @@ -5,14 +5,14 @@ DAS2 multi-company - ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + [('company_id', 'in', company_ids)] DAS2 Line multi-company - ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + [('company_id', 'in', company_ids)] diff --git a/l10n_fr_das2/views/l10n_fr_das2.xml b/l10n_fr_das2/views/l10n_fr_das2.xml index 636e28fb7..8fd06a9e4 100644 --- a/l10n_fr_das2/views/l10n_fr_das2.xml +++ b/l10n_fr_das2/views/l10n_fr_das2.xml @@ -1,6 +1,6 @@ @@ -20,6 +20,9 @@
    " + msg += "" self.message_post(body=msg_post) - self.write({'warning_msg': msg}) + self.write({"warning_msg": msg}) @api.model def _prepare_field( - self, field_name, partner, value, size, - required=False, numeric=False): - '''This function is designed to be inherited.''' + self, field_name, partner, value, size, required=False, numeric=False + ): + """This function is designed to be inherited.""" if numeric: if not value: value = 0 @@ -273,36 +347,43 @@ def _prepare_field( try: value = int(value) except Exception: - raise UserError(_( - "Failed to convert field '%s' (partner %s) " - "to integer.") % (field_name, partner.display_name)) + raise UserError( + _("Failed to convert field '%s' (partner %s) " "to integer.") + % (field_name, partner.display_name) + ) value = str(value) if len(value) > size: - raise UserError(_( - "Field %s (partner %s) has value %s: " - "it is bigger than the maximum size " - "(%d characters)") - % (field_name, partner.display_name, value, size)) + raise UserError( + _( + "Field %s (partner %s) has value %s: " + "it is bigger than the maximum size " + "(%d characters)" + ) + % (field_name, partner.display_name, value, size) + ) if len(value) < size: - value = value.rjust(size, '0') + value = value.rjust(size, "0") return value if required and not value: - raise UserError(_( - "The field '%s' (partner %s) is empty or 0. " - "It should have a non-null value.") - % (field_name, partner.display_name)) + raise UserError( + _( + "The field '%s' (partner %s) is empty or 0. " + "It should have a non-null value." + ) + % (field_name, partner.display_name) + ) if not value: - value = ' ' * size + value = " " * size # Cut if too long value = value[0:size] # enlarge if too small if len(value) < size: - value = value.ljust(size, ' ') + value = value.ljust(size, " ") return value def _prepare_address(self, partner): - cstreet2 = self._prepare_field('Street2', partner, partner.street2, 32) - cstreet = self._prepare_field('Street', partner, partner.street, 32) + cstreet2 = self._prepare_field("Street2", partner, partner.street2, 32) + cstreet = self._prepare_field("Street", partner, partner.street, 32) # specs section 5.4 : only bureau distributeur and code postal are # required. And they say it is tolerated to set city as # bureau distributeur @@ -311,37 +392,45 @@ def _prepare_address(self, partner): # specs section 5.4 and 5.4.1.2.b: it is possible to set the field # "Adresse voie" without structuration on 32 chars => that's what we do if not partner.city: - raise UserError(_( - "Missing city on partner '%s'.") % partner.display_name) + raise UserError(_("Missing city on partner '%s'.") % partner.display_name) if partner.country_id and partner.country_id.code not in FRANCE_CODES: if not partner.country_id.fr_cog: - raise UserError(_( - "Missing Code Officiel Géographique on country '%s'.") - % partner.country_id.display_name) + raise UserError( + _("Missing Code Officiel Géographique on country '%s'.") + % partner.country_id.display_name + ) cog = self._prepare_field( - 'COG', partner, partner.country_id.fr_cog, 5, True, - numeric=True) - raw_country_name = partner.with_context( - lang='fr_FR').country_id.name + "COG", partner, partner.country_id.fr_cog, 5, True, numeric=True + ) + raw_country_name = partner.with_context(lang="fr_FR").country_id.name country_name = self._prepare_field( - 'Nom du pays', partner, raw_country_name, 26, True) + "Nom du pays", partner, raw_country_name, 26, True + ) raw_commune = partner.city if partner.zip: - raw_commune = '%s %s' % (partner.zip, partner.city) - commune = self._prepare_field( - 'Commune', partner, raw_commune, 26, True) - caddress = cstreet2 + ' ' + cstreet + cog + ' ' + commune\ - + cog + ' ' + country_name + raw_commune = "{} {}".format(partner.zip, partner.city) + commune = self._prepare_field("Commune", partner, raw_commune, 26, True) + caddress = ( + cstreet2 + + " " + + cstreet + + cog + + " " + + commune + + cog + + " " + + country_name + ) # According to the specs, we should have some code specific for DOM-TOM # But it's not easy, because we are supposed to give the INSEE code # of the city, not of the territory => we don't handle that for the # moment else: - ccity = self._prepare_field( - 'City', partner, partner.city, 26, True) - czip = self._prepare_field('Zip', partner, partner.zip, 5, True) - caddress = cstreet2 + ' ' + cstreet + '0' * 5 + ' ' + ' ' * 26 +\ - czip + ' ' + ccity + ccity = self._prepare_field("City", partner, partner.city, 26, True) + czip = self._prepare_field("Zip", partner, partner.zip, 5, True) + caddress = ( + cstreet2 + " " + cstreet + "0" * 5 + " " + " " * 26 + czip + " " + ccity + ) assert len(caddress) == 129 return caddress @@ -349,125 +438,200 @@ def _prepare_file(self): company = self.company_id cpartner = company.partner_id contact = self.contact_id - csiren = self._prepare_field( - 'SIREN', cpartner, cpartner.siren, 9, True) - csiret = self._prepare_field( - 'SIRET', cpartner, cpartner.siret, 14, True) - cape = self._prepare_field('APE', cpartner, company.ape, 5, True) - cname = self._prepare_field('Name', cpartner, company.name, 50, True) - file_type = 'X' # tous déclarants honoraires seuls + csiren = self._prepare_field("SIREN", cpartner, cpartner.siren, 9, True) + csiret = self._prepare_field("SIRET", cpartner, cpartner.siret, 14, True) + cape = self._prepare_field("APE", cpartner, company.ape, 5, True) + cname = self._prepare_field("Name", cpartner, company.name, 50, True) + file_type = "X" # tous déclarants honoraires seuls year = str(self.year) assert len(year) == 4 caddress = self._prepare_address(cpartner) - cprefix = csiret + '01' + year + self.dads_type + cprefix = csiret + "01" + year + self.dads_type # line 010 Company header flines = [] flines.append( - csiren + '0' * 12 + '010' + ' ' * 14 + cape + ' ' * 4 + - cname + caddress + ' ' * 8 + file_type + csiret + ' ' * 5 + - caddress + ' ' + ' ' * 288) + csiren + + "0" * 12 + + "010" + + " " * 14 + + cape + + " " * 4 + + cname + + caddress + + " " * 8 + + file_type + + csiret + + " " * 5 + + caddress + + " " + + " " * 288 + ) # ligne 020 Etablissement header # We don't add a field for profession on the company # because it's not even a field on the paper form! # We only set profession for suppliers flines.append( - cprefix + '020' + ' ' * 14 + cape + '0' * 14 + ' ' * 41 + - cname + caddress + ' ' * 40 + ' ' * 53 + 'N' * 6 + ' ' * 296) + cprefix + + "020" + + " " * 14 + + cape + + "0" * 14 + + " " * 41 + + cname + + caddress + + " " * 40 + + " " * 53 + + "N" * 6 + + " " * 296 + ) i = 0 for line in self.line_ids.filtered(lambda x: x.to_declare): i += 1 partner = line.partner_id if ( - partner.country_id and - partner.country_id.code in FRANCE_CODES and - not line.partner_siret): - raise UserError(_( - "Missing SIRET for french partner %s.") - % partner.display_name) + partner.country_id + and partner.country_id.code in FRANCE_CODES + and not line.partner_siret + ): + raise UserError( + _("Missing SIRET for french partner %s.") % partner.display_name + ) # ligne 210 honoraire if partner.is_company: partner_name = self._prepare_field( - 'Partner name', partner, partner.name, 50, True) - lastname = ' ' * 30 - firstname = ' ' * 20 + "Partner name", partner, partner.name, 50, True + ) + lastname = " " * 30 + firstname = " " * 20 else: - partner_name = ' ' * 50 - if hasattr(partner, 'firstname') and partner.firstname: + partner_name = " " * 50 + if hasattr(partner, "firstname") and partner.firstname: lastname = self._prepare_field( - 'Lastname', partner, partner.lastname, 30, True) + "Lastname", partner, partner.lastname, 30, True + ) firstname = self._prepare_field( - 'Firstname', partner, partner.firstname, 20, True) + "Firstname", partner, partner.firstname, 20, True + ) else: lastname = self._prepare_field( - 'Partner name', partner, partner.name, 30, True) - firstname = ' ' * 20 + "Partner name", partner, partner.name, 30, True + ) + firstname = " " * 20 address = self._prepare_address(partner) partner_siret = self._prepare_field( - 'SIRET', partner, line.partner_siret, 14) - job = self._prepare_field('Profession', partner, line.job, 30) + "SIRET", partner, line.partner_siret, 14 + ) + job = self._prepare_field("Profession", partner, line.job, 30) amount_fields_list = [ self._prepare_field(x, partner, line[x], 10, numeric=True) - for x in AMOUNT_FIELDS] + for x in AMOUNT_FIELDS + ] if line.benefits_in_kind_amount: - bik_letters = '' - bik_letters += line.benefits_in_kind_food and 'N' or ' ' - bik_letters +=\ - line.benefits_in_kind_accomodation and 'L' or ' ' - bik_letters += line.benefits_in_kind_car and 'V' or ' ' - bik_letters += line.benefits_in_kind_other and 'A' or ' ' - bik_letters += line.benefits_in_kind_nict and 'T' or ' ' + bik_letters = "" + bik_letters += line.benefits_in_kind_food and "N" or " " + bik_letters += line.benefits_in_kind_accomodation and "L" or " " + bik_letters += line.benefits_in_kind_car and "V" or " " + bik_letters += line.benefits_in_kind_other and "A" or " " + bik_letters += line.benefits_in_kind_nict and "T" or " " else: - bik_letters = ' ' * 5 + bik_letters = " " * 5 if line.allowance_amount: - allow_letters = '' - allow_letters += line.allowance_fixed and 'F' or ' ' - allow_letters += line.allowance_real and 'R' or ' ' - allow_letters += line.allowance_employer and 'P' or ' ' + allow_letters = "" + allow_letters += line.allowance_fixed and "F" or " " + allow_letters += line.allowance_real and "R" or " " + allow_letters += line.allowance_employer and "P" or " " else: - allow_letters = ' ' * 3 + allow_letters = " " * 3 flines.append( - cprefix + '210' + partner_siret + lastname + firstname + - partner_name + job + address + ''.join(amount_fields_list) + - bik_letters + allow_letters + - ' ' * 2 + '0' * 10 + ' ' * 245) - rg = self.env['l10n.fr.das2.line'].read_group( - [('parent_id', '=', self.id)], AMOUNT_FIELDS, [])[0] + cprefix + + "210" + + partner_siret + + lastname + + firstname + + partner_name + + job + + address + + "".join(amount_fields_list) + + bik_letters + + allow_letters + + " " * 2 + + "0" * 10 + + " " * 245 + ) + rg = self.env["l10n.fr.das2.line"].read_group( + [("parent_id", "=", self.id)], AMOUNT_FIELDS, [] + )[0] total_fields_list = [ self._prepare_field(x, cpartner, rg[x], 12, numeric=True) - for x in AMOUNT_FIELDS] + for x in AMOUNT_FIELDS + ] contact_name = self._prepare_field( - 'Administrative contact name', contact, contact.name, 50) + "Administrative contact name", contact, contact.name, 50 + ) contact_email = self._prepare_field( - 'Administrative contact email', contact, contact.email, 60) + "Administrative contact email", contact, contact.email, 60 + ) phone = contact.phone or contact.mobile - phone = phone.replace(' ', '').replace('.', '').replace( - '-', '').replace('\u00A0', '') - if phone.startswith('+33'): - phone = '0%s' % phone[3:] + phone = ( + phone.replace(" ", "") + .replace(".", "") + .replace("-", "") + .replace("\u00A0", "") + ) + if phone.startswith("+33"): + phone = "0%s" % phone[3:] contact_phone = self._prepare_field( - 'Administrative contact phone', contact, phone, 10) + "Administrative contact phone", contact, phone, 10 + ) flines.append( - cprefix + '300' + ' ' * 36 + '0' * 12 * 9 + - ''.join(total_fields_list) + ' ' * 12 + '0' * 12 * 2 + '0' * 6 + - '0' * 12 * 5 + ' ' * 74 + - contact_name + contact_phone + contact_email + ' ' * 76) + cprefix + + "300" + + " " * 36 + + "0" * 12 * 9 + + "".join(total_fields_list) + + " " * 12 + + "0" * 12 * 2 + + "0" * 6 + + "0" * 12 * 5 + + " " * 74 + + contact_name + + contact_phone + + contact_email + + " " * 76 + ) lines_number = self._prepare_field( - 'Number of lines', cpartner, i, 6, numeric=True) + "Number of lines", cpartner, i, 6, numeric=True + ) flines.append( - csiren + '9' * 12 + '310' + '00001' + '0' * 6 + lines_number + - '0' * 6 * 3 + ' ' * 18 + '0' * 12 * 9 + - ''.join(total_fields_list) + ' ' * 12 + '0' * 12 * 2 + '0' * 6 + - '0' * 12 * 5 + ' ' * 253) + csiren + + "9" * 12 + + "310" + + "00001" + + "0" * 6 + + lines_number + + "0" * 6 * 3 + + " " * 18 + + "0" * 12 * 9 + + "".join(total_fields_list) + + " " * 12 + + "0" * 12 * 2 + + "0" * 6 + + "0" * 12 * 5 + + " " * 253 + ) for fline in flines: if len(fline) != 672: - raise UserError(_( - "One of the lines has a length of %d. " - "All lines should have a length of 672. Line: %s.") - % (len(fline), fline)) - file_content = '\r\n'.join(flines) + '\r\n' + raise UserError( + _( + "One of the lines has a length of %d. " + "All lines should have a length of 672. Line: %s." + ) + % (len(fline), fline) + ) + file_content = "\r\n".join(flines) + "\r\n" return file_content def generate_file(self): @@ -476,189 +640,246 @@ def generate_file(self): if not self.line_ids: raise UserError(_("The DAS2 has no lines.")) if not company.siret: - raise UserError(_( - "Missing SIRET on company '%s'.") % company.display_name) + raise UserError(_("Missing SIRET on company '%s'.") % company.display_name) if not company.ape: - raise UserError(_( - "Missing APE on company '%s'.") % company.display_name) + raise UserError(_("Missing APE on company '%s'.") % company.display_name) if not company.street: - raise UserError(_( - "Missing Street on company '%s'") % company.display_name) + raise UserError(_("Missing Street on company '%s'") % company.display_name) contact = self.contact_id if not contact: raise UserError(_("Missing administrative contact.")) if not contact.email: - raise UserError(_( - "The email is not set on the administrative contact " - "partner '%s'.") % contact.display_name) + raise UserError( + _("The email is not set on the administrative contact " "partner '%s'.") + % contact.display_name + ) if not contact.phone and not contact.mobile: - raise UserError(_( - "The phone number is not set on the administrative contact " - "partner '%s'.") % contact.display_name) + raise UserError( + _( + "The phone number is not set on the administrative contact " + "partner '%s'." + ) + % contact.display_name + ) if self.attachment_id: - raise UserError(_( - "An export file already exists. First, delete it via the " - "attachments and then re-generate it.")) + raise UserError( + _( + "An export file already exists. First, delete it via the " + "attachments and then re-generate it." + ) + ) file_content = self._prepare_file() try: - file_content_encoded = file_content.encode('latin1') + file_content_encoded = file_content.encode("latin1") except UnicodeEncodeError: - raise UserError(_( - "A special character in the DAS2 file is not in the latin1 " - "table. Please locate this special character and replace " - "it by a standard character and try again.")) - filename = 'DAS2_%s_%s.txt' % ( - self.year, company.name.replace(' ', '_')) - attach = self.env['ir.attachment'].create({ - 'name': filename, - 'res_id': self.id, - 'res_model': self._name, - 'datas': base64.encodebytes(file_content_encoded), - }) + raise UserError( + _( + "A special character in the DAS2 file is not in the latin1 " + "table. Please locate this special character and replace " + "it by a standard character and try again." + ) + ) + filename = "DAS2_{}_{}.txt".format(self.year, company.name.replace(" ", "_")) + attach = self.env["ir.attachment"].create( + { + "name": filename, + "res_id": self.id, + "res_model": self._name, + "datas": base64.encodebytes(file_content_encoded), + } + ) self.attachment_id = attach.id self.message_post(body=_("DAS2 file generated.")) def button_lines_fullscreen(self): self.ensure_one() - action = self.env.ref( - 'l10n_fr_das2.l10n_fr_das2_line_action').sudo().read()[0] - action.update({ - 'domain': [('parent_id', '=', self.id)], - 'views': False, - }) + action = self.env.ref("l10n_fr_das2.l10n_fr_das2_line_action").sudo().read()[0] + action.update( + { + "domain": [("parent_id", "=", self.id)], + "views": False, + } + ) return action class L10nFrDas2Line(models.Model): - _name = 'l10n.fr.das2.line' - _description = 'DAS2 line' + _name = "l10n.fr.das2.line" + _description = "DAS2 line" parent_id = fields.Many2one( - 'l10n.fr.das2', string='DAS2 Report', ondelete='cascade') + "l10n.fr.das2", string="DAS2 Report", ondelete="cascade" + ) partner_id = fields.Many2one( - 'res.partner', string='Supplier', ondelete='restrict', - domain=[('parent_id', '=', False)], - states={'done': [('readonly', True)]}, required=True) + "res.partner", + string="Supplier", + ondelete="restrict", + domain=[("parent_id", "=", False)], + states={"done": [("readonly", True)]}, + required=True, + ) partner_siret = fields.Char( - string='SIRET', size=14, states={'done': [('readonly', True)]}) + string="SIRET", size=14, states={"done": [("readonly", True)]} + ) company_id = fields.Many2one( - related='parent_id.company_id', store=True, readonly=True) + related="parent_id.company_id", store=True, readonly=True + ) currency_id = fields.Many2one( - related='parent_id.company_id.currency_id', store=True, readonly=True, - string='Company Currency') + related="parent_id.company_id.currency_id", + store=True, + readonly=True, + string="Company Currency", + ) fee_amount = fields.Integer( - string='Honoraires et vacations', - states={'done': [('readonly', True)]}) + string="Honoraires et vacations", states={"done": [("readonly", True)]} + ) commission_amount = fields.Integer( - string='Commissions', states={'done': [('readonly', True)]}) + string="Commissions", states={"done": [("readonly", True)]} + ) brokerage_amount = fields.Integer( - string='Courtages', states={'done': [('readonly', True)]}) + string="Courtages", states={"done": [("readonly", True)]} + ) discount_amount = fields.Integer( - string='Ristournes', states={'done': [('readonly', True)]}) + string="Ristournes", states={"done": [("readonly", True)]} + ) attendance_fee_amount = fields.Integer( - string='Jetons de présence', states={'done': [('readonly', True)]}) + string="Jetons de présence", states={"done": [("readonly", True)]} + ) copyright_royalties_amount = fields.Integer( - string="Droits d'auteur", states={'done': [('readonly', True)]}) + string="Droits d'auteur", states={"done": [("readonly", True)]} + ) licence_royalties_amount = fields.Integer( - string="Droits d'inventeur", states={'done': [('readonly', True)]}) + string="Droits d'inventeur", states={"done": [("readonly", True)]} + ) other_income_amount = fields.Integer( - string='Autre rémunérations', states={'done': [('readonly', True)]}) + string="Autre rémunérations", states={"done": [("readonly", True)]} + ) allowance_amount = fields.Integer( - string='Indemnités et remboursements', - states={'done': [('readonly', True)]}) + string="Indemnités et remboursements", states={"done": [("readonly", True)]} + ) benefits_in_kind_amount = fields.Integer( - string='Avantages en nature', states={'done': [('readonly', True)]}) + string="Avantages en nature", states={"done": [("readonly", True)]} + ) withholding_tax_amount = fields.Integer( - string='Retenue à la source', states={'done': [('readonly', True)]}) + string="Retenue à la source", states={"done": [("readonly", True)]} + ) total_amount = fields.Integer( - compute='_compute_total_amount', string='Total Amount', - store=True, readonly=True) + compute="_compute_total_amount", + string="Total Amount", + store=True, + readonly=True, + ) to_declare = fields.Boolean( - compute='_compute_total_amount', string='To Declare', readonly=True, - store=True) + compute="_compute_total_amount", string="To Declare", readonly=True, store=True + ) allowance_fixed = fields.Boolean( - 'Allocation forfaitaire', states={'done': [('readonly', True)]}) + "Allocation forfaitaire", states={"done": [("readonly", True)]} + ) allowance_real = fields.Boolean( - 'Sur frais réels', states={'done': [('readonly', True)]}) + "Sur frais réels", states={"done": [("readonly", True)]} + ) allowance_employer = fields.Boolean( - "Prise en charge directe par l'employeur", - states={'done': [('readonly', True)]}) + "Prise en charge directe par l'employeur", states={"done": [("readonly", True)]} + ) benefits_in_kind_food = fields.Boolean( - 'Nourriture', states={'done': [('readonly', True)]}) + "Nourriture", states={"done": [("readonly", True)]} + ) benefits_in_kind_accomodation = fields.Boolean( - 'Logement', states={'done': [('readonly', True)]}) + "Logement", states={"done": [("readonly", True)]} + ) benefits_in_kind_car = fields.Boolean( - 'Voiture', states={'done': [('readonly', True)]}) + "Voiture", states={"done": [("readonly", True)]} + ) benefits_in_kind_other = fields.Boolean( - 'Autres', states={'done': [('readonly', True)]}) + "Autres", states={"done": [("readonly", True)]} + ) benefits_in_kind_nict = fields.Boolean( - 'Outils issus des NTIC', states={'done': [('readonly', True)]}) - state = fields.Selection( - related='parent_id.state', store=True, readonly=True) + "Outils issus des NTIC", states={"done": [("readonly", True)]} + ) + state = fields.Selection(related="parent_id.state", store=True, readonly=True) note = fields.Text() job = fields.Char( - string='Profession', size=30, states={'done': [('readonly', True)]}) + string="Profession", size=30, states={"done": [("readonly", True)]} + ) _sql_constraints = [ ( - 'partner_parent_unique', - 'unique(partner_id, parent_id)', - 'Same partner used on several lines!'), + "partner_parent_unique", + "unique(partner_id, parent_id)", + "Same partner used on several lines!", + ), ( - 'fee_amount_positive', - 'CHECK(fee_amount >= 0)', - 'Negative amounts not allowed!'), + "fee_amount_positive", + "CHECK(fee_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'commission_amount_positive', - 'CHECK(commission_amount >= 0)', - 'Negative amounts not allowed!'), + "commission_amount_positive", + "CHECK(commission_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'brokerage_amount_positive', - 'CHECK(brokerage_amount >= 0)', - 'Negative amounts not allowed!'), + "brokerage_amount_positive", + "CHECK(brokerage_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'discount_amount_positive', - 'CHECK(discount_amount >= 0)', - 'Negative amounts not allowed!'), + "discount_amount_positive", + "CHECK(discount_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'attendance_fee_amount_positive', - 'CHECK(attendance_fee_amount >= 0)', - 'Negative amounts not allowed!'), + "attendance_fee_amount_positive", + "CHECK(attendance_fee_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'copyright_royalties_amount_positive', - 'CHECK(copyright_royalties_amount >= 0)', - 'Negative amounts not allowed!'), + "copyright_royalties_amount_positive", + "CHECK(copyright_royalties_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'licence_royalties_amount_positive', - 'CHECK(licence_royalties_amount >= 0)', - 'Negative amounts not allowed!'), + "licence_royalties_amount_positive", + "CHECK(licence_royalties_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'other_income_amount_positive', - 'CHECK(other_income_amount >= 0)', - 'Negative amounts not allowed!'), + "other_income_amount_positive", + "CHECK(other_income_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'allowance_amount_positive', - 'CHECK(allowance_amount >= 0)', - 'Negative amounts not allowed!'), + "allowance_amount_positive", + "CHECK(allowance_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'benefits_in_kind_amount_positive', - 'CHECK(benefits_in_kind_amount >= 0)', - 'Negative amounts not allowed!'), + "benefits_in_kind_amount_positive", + "CHECK(benefits_in_kind_amount >= 0)", + "Negative amounts not allowed!", + ), ( - 'withholding_tax_amount_positive', - 'CHECK(withholding_tax_amount >= 0)', - 'Negative amounts not allowed!'), - ] + "withholding_tax_amount_positive", + "CHECK(withholding_tax_amount >= 0)", + "Negative amounts not allowed!", + ), + ] @api.depends( - 'parent_id.partner_declare_threshold', - 'fee_amount', 'commission_amount', - 'brokerage_amount', 'discount_amount', - 'attendance_fee_amount', 'copyright_royalties_amount', - 'licence_royalties_amount', 'other_income_amount', - 'allowance_amount', 'benefits_in_kind_amount', - 'withholding_tax_amount') + "parent_id.partner_declare_threshold", + "fee_amount", + "commission_amount", + "brokerage_amount", + "discount_amount", + "attendance_fee_amount", + "copyright_royalties_amount", + "licence_royalties_amount", + "other_income_amount", + "allowance_amount", + "benefits_in_kind_amount", + "withholding_tax_amount", + ) def _compute_total_amount(self): for line in self: total_amount = 0 @@ -671,14 +892,13 @@ def _compute_total_amount(self): line.to_declare = to_declare line.total_amount = total_amount - @api.constrains('partner_siret') + @api.constrains("partner_siret") def check_siret(self): for line in self: if line.partner_siret and not is_valid(line.partner_siret): - raise ValidationError(_( - "SIRET '%s' is invalid.") % line.partner_siret) + raise ValidationError(_("SIRET '%s' is invalid.") % line.partner_siret) - @api.onchange('partner_id') + @api.onchange("partner_id") def partner_id_change(self): if self.partner_id: if self.partner_id.siren and self.partner_id.nic: diff --git a/l10n_fr_das2/models/res_company.py b/l10n_fr_das2/models/res_company.py index e18007a01..dc55313aa 100644 --- a/l10n_fr_das2/models/res_company.py +++ b/l10n_fr_das2/models/res_company.py @@ -6,13 +6,16 @@ class ResCompany(models.Model): - _inherit = 'res.company' + _inherit = "res.company" fr_das2_partner_declare_threshold = fields.Integer( - string='DAS2 Partner Declaration Threshold', - default=1200) + string="DAS2 Partner Declaration Threshold", default=1200 + ) - _sql_constraints = [( - 'fr_das2_partner_declare_threshold_positive', - 'CHECK(fr_das2_partner_declare_threshold >= 0)', - 'The DAS2 partner declaration threshold must be positive!')] + _sql_constraints = [ + ( + "fr_das2_partner_declare_threshold_positive", + "CHECK(fr_das2_partner_declare_threshold >= 0)", + "The DAS2 partner declaration threshold must be positive!", + ) + ] diff --git a/l10n_fr_das2/models/res_partner.py b/l10n_fr_das2/models/res_partner.py index bf5882cec..3679c93f9 100644 --- a/l10n_fr_das2/models/res_partner.py +++ b/l10n_fr_das2/models/res_partner.py @@ -6,19 +6,23 @@ class ResPartner(models.Model): - _inherit = 'res.partner' + _inherit = "res.partner" - fr_das2_type = fields.Selection([ - ('fee', 'Honoraires et vacations'), - ('commission', 'Commissions'), - ('brokerage', 'Courtages'), - ('discount', 'Ristournes'), - ('attendance_fee', 'Jetons de présence'), - ('copyright_royalties', "Droits d'auteur"), - ('licence_royalties', "Droits d'inventeur"), - ('other_income', 'Autre rémunérations'), - ('allowance', 'Indemnités et remboursements'), - ], string='DAS2 Type', tracking=100) + fr_das2_type = fields.Selection( + [ + ("fee", "Honoraires et vacations"), + ("commission", "Commissions"), + ("brokerage", "Courtages"), + ("discount", "Ristournes"), + ("attendance_fee", "Jetons de présence"), + ("copyright_royalties", "Droits d'auteur"), + ("licence_royalties", "Droits d'inventeur"), + ("other_income", "Autre rémunérations"), + ("allowance", "Indemnités et remboursements"), + ], + string="DAS2 Type", + tracking=100, + ) fr_das2_job = fields.Char( - string='DAS2 Job', size=30, - help="Used in the field 'Profession' of DAS2.") + string="DAS2 Job", size=30, help="Used in the field 'Profession' of DAS2." + ) diff --git a/l10n_fr_das2/security/das2_security.xml b/l10n_fr_das2/security/das2_security.xml index fca416f08..88c12ddf2 100644 --- a/l10n_fr_das2/security/das2_security.xml +++ b/l10n_fr_das2/security/das2_security.xml @@ -1,17 +1,17 @@ - + DAS2 multi-company - + [('company_id', 'in', company_ids)] DAS2 Line multi-company - + [('company_id', 'in', company_ids)] diff --git a/l10n_fr_das2/views/l10n_fr_das2.xml b/l10n_fr_das2/views/l10n_fr_das2.xml index 8fd06a9e4..965f7c641 100644 --- a/l10n_fr_das2/views/l10n_fr_das2.xml +++ b/l10n_fr_das2/views/l10n_fr_das2.xml @@ -1,10 +1,9 @@ - + - @@ -14,22 +13,45 @@
    -
    -