diff --git a/l10n_fr_association/__manifest__.py b/l10n_fr_association/__manifest__.py index 150b6cb..8f997a8 100644 --- a/l10n_fr_association/__manifest__.py +++ b/l10n_fr_association/__manifest__.py @@ -18,9 +18,18 @@ "contacts", "l10n_fr", "l10n_fr_department_state", + "partner_multi_relation", ], "data": [ + # Base data + "data/res_partner_relation_instance.xml", + # "data/res_partner_relation_type.xml", + # Security + "security/ir.model.access.csv", + # Views "views/res_partner.xml", + "views/res_partner_relation_instance.xml", + "views/res_partner_relation_type.xml", ], "assets": {}, "demo": [], diff --git a/l10n_fr_association/data/res_partner_relation_instance.xml b/l10n_fr_association/data/res_partner_relation_instance.xml new file mode 100644 index 0000000..cd65f2d --- /dev/null +++ b/l10n_fr_association/data/res_partner_relation_instance.xml @@ -0,0 +1,37 @@ + + + + + Councile + Coun. + adm + + + + Office + Offi. + adm + + + + + Supervision staff + Staff + sup + + + + Volunteer supervision + Volu. + sup + + + + + Employed supervision + Empl. + sup + + + + \ No newline at end of file diff --git a/l10n_fr_association/data/res_partner_relation_type.xml b/l10n_fr_association/data/res_partner_relation_type.xml new file mode 100644 index 0000000..55a77a1 --- /dev/null +++ b/l10n_fr_association/data/res_partner_relation_type.xml @@ -0,0 +1,8 @@ + + + + + President + + + \ No newline at end of file diff --git a/l10n_fr_association/i18n/fr.po b/l10n_fr_association/i18n/fr.po index f33126b..8e11bc3 100644 --- a/l10n_fr_association/i18n/fr.po +++ b/l10n_fr_association/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0-20230613\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-26 14:32+0000\n" -"PO-Revision-Date: 2024-05-26 14:32+0000\n" +"POT-Creation-Date: 2024-05-26 22:57+0000\n" +"PO-Revision-Date: 2024-05-26 22:57+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,6 +20,16 @@ msgstr "" msgid "ANR number" msgstr "Numéro RNA" +#. module: l10n_fr_association +#: model:ir.model.fields.selection,name:l10n_fr_association.selection__res_partner_relation_instance__inst_type__adm +msgid "Administration" +msgstr "" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_type__insctance_id +msgid "Asso instance" +msgstr "Instance asso." + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__asso_project_file #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__asso_project_file @@ -43,12 +53,22 @@ msgstr "" msgid "Association National Register declaration date" msgstr "Date d'enregistrement au Registre National des Associations" +#. module: l10n_fr_association +#: model_terms:ir.ui.view,arch_db:l10n_fr_association.view_res_partner_filter_inherit_base +msgid "Associations" +msgstr "" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__company_registry #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__company_registry msgid "Company ID" msgstr "ID de la société" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__child_ids +msgid "Composing instances" +msgstr "Composé des instances" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__constituent_ga_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__constituent_ga_date @@ -66,12 +86,59 @@ msgstr "Date de l'Assemblée Générale Constitutive" msgid "Contact" msgstr "" +#. module: l10n_fr_association +#: model:res.partner.relation.instance,short:l10n_fr_association.relation_insctance_councile +msgid "Coun." +msgstr "C.A." + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,name:l10n_fr_association.relation_insctance_councile +msgid "Councile" +msgstr "Conseil d'Administration" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__create_date +msgid "Created on" +msgstr "Créé le" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__prefecture_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__prefecture_date msgid "Declaration date" msgstr "Date de déclaration" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__display_name +msgid "Display Name" +msgstr "Nom d'affichange" + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,short:l10n_fr_association.relation_insctance_sup_emp +msgid "Empl." +msgstr "Pro." + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,name:l10n_fr_association.relation_insctance_sup_emp +msgid "Employed supervision" +msgstr "Encadrement professionnel" + +#. module: l10n_fr_association +#: model:ir.model.fields.selection,name:l10n_fr_association.selection__res_partner_relation_type__relation_type__1 +msgid "Employee" +msgstr "Employé" + +#. module: l10n_fr_association +#. odoo-python +#: code:addons/l10n_fr_association/models/res_partner_relation_instance.py:0 +#, python-format +msgid "Error ! You cannot create recursive instances." +msgstr "Erreur ! vous ne pouvez pas créer des instances recursives." + #. module: l10n_fr_association #: model_terms:ir.ui.view,arch_db:l10n_fr_association.view_partner_form_inherit_base msgid "Foundation" @@ -83,6 +150,27 @@ msgstr "Fondation" msgid "French partner" msgstr "Partenaire français" +#. module: l10n_fr_association +#: model:ir.model.fields.selection,name:l10n_fr_association.selection__res_partner_relation_instance__inst_type__ag +msgid "General Assembly" +msgstr "Asemblée Ganérale" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__id +msgid "ID" +msgstr "" + +#. module: l10n_fr_association +#: model_terms:ir.ui.view,arch_db:l10n_fr_association.res_partner_relation_type_view_search +msgid "Instance" +msgstr "" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__inst_type +#: model_terms:ir.ui.view,arch_db:l10n_fr_association.res_partner_relation_instance_view_search +msgid "Instance type" +msgstr "Type d'instance" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__internal_regul_update_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__internal_regul_update_date @@ -112,6 +200,21 @@ msgstr "Documents internes" msgid "Is an association" msgstr "Association" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__write_uid +msgid "Last Updated by" +msgstr "Dernière modification par" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__last_ga_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__last_ga_date @@ -134,6 +237,11 @@ msgstr "Informations légales" msgid "NAF/APE code" msgstr "Code NAF/APE" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__name +msgid "Name" +msgstr "Nom" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__official_journal_dept_id #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__official_journal_dept_id @@ -146,6 +254,16 @@ msgstr "Département du JO" msgid "OJ reference" msgstr "Référence du JO" +#. module: l10n_fr_association +#: model:res.partner.relation.instance,short:l10n_fr_association.relation_insctance_office +msgid "Offi." +msgstr "Bur." + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,name:l10n_fr_association.relation_insctance_office +msgid "Office" +msgstr "Bureau" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__official_journal_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__official_journal_date @@ -170,6 +288,26 @@ msgstr "Département de publication au Journal Officiel" msgid "Official Journal reference" msgstr "Numéro du Journal Officiel" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__parent_path +msgid "Parent Path" +msgstr "Chemin parent" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__parents_and_self +msgid "Parents And Self" +msgstr "Parents et instance" + +#. module: l10n_fr_association +#: model:ir.model,name:l10n_fr_association.model_res_partner_relation_type +msgid "Partner Relation Type" +msgstr "Type de relation de partenaire" + +#. module: l10n_fr_association +#: model:ir.model,name:l10n_fr_association.model_res_partner_relation_instance +msgid "Partners relation instance" +msgstr "Instance de relation de partenaire" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__prefecture #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__prefecture @@ -194,6 +332,11 @@ msgstr "Date de déclaration en préfecture" msgid "Project update" msgstr "Màj du Projet" +#. module: l10n_fr_association +#: model_terms:ir.ui.view,arch_db:l10n_fr_association.form_res_partner_relation_type_inherit_ffck +msgid "Properties" +msgstr "Propriétés" + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__company_registry_date #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__company_registry_date @@ -201,10 +344,28 @@ msgid "Registration date" msgstr "Date d'enregistrement" #. module: l10n_fr_association +#: model:ir.actions.act_window,name:l10n_fr_association.relation_instance_action +#: model:ir.ui.menu,name:l10n_fr_association.relation_instance_menu +msgid "Relation instances" +msgstr "Instances de relation" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_type__relation_type +#: model_terms:ir.ui.view,arch_db:l10n_fr_association.res_partner_relation_type_view_search +msgid "Relation type" +msgstr "Type de relation" + +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__short #: model_terms:ir.ui.view,arch_db:l10n_fr_association.view_partner_form_inherit_base msgid "Short name" msgstr "Initiales" +#. module: l10n_fr_association +#: model:res.partner.relation.instance,short:l10n_fr_association.relation_insctance_sup_staff +msgid "Staff" +msgstr "Enc." + #. module: l10n_fr_association #: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner__statuses_file #: model:ir.model.fields,field_description:l10n_fr_association.field_res_users__statuses_file @@ -223,6 +384,21 @@ msgstr "Nom du fichier Statuts" msgid "Statuses update" msgstr "Màj des statuts" +#. module: l10n_fr_association +#: model:ir.model.fields,field_description:l10n_fr_association.field_res_partner_relation_instance__parent_id +msgid "Superior instance" +msgstr "Instance supérieure" + +#. module: l10n_fr_association +#: model:ir.model.fields.selection,name:l10n_fr_association.selection__res_partner_relation_instance__inst_type__sup +msgid "Supervision" +msgstr "Encadrement" + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,name:l10n_fr_association.relation_insctance_sup_staff +msgid "Supervision staff" +msgstr "Équipe pédagogique" + #. module: l10n_fr_association #: model:ir.model.fields,help:l10n_fr_association.field_res_partner__company_registry #: model:ir.model.fields,help:l10n_fr_association.field_res_users__company_registry @@ -233,3 +409,18 @@ msgstr "" "Le numéro de registre de la société. Utilisez-le s'il est différent du " "numéro d'identification fiscale. Il doit être unique parmi tous les " "partenaires d'un même pays" + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,short:l10n_fr_association.relation_insctance_sup_vol +msgid "Volu." +msgstr "Bén." + +#. module: l10n_fr_association +#: model:ir.model.fields.selection,name:l10n_fr_association.selection__res_partner_relation_type__relation_type__0 +msgid "Volunteer" +msgstr "Bénévole" + +#. module: l10n_fr_association +#: model:res.partner.relation.instance,name:l10n_fr_association.relation_insctance_sup_vol +msgid "Volunteer supervision" +msgstr "Encadrement bénévole" diff --git a/l10n_fr_association/models/__init__.py b/l10n_fr_association/models/__init__.py index 0fbdfcf..b8b5ea8 100644 --- a/l10n_fr_association/models/__init__.py +++ b/l10n_fr_association/models/__init__.py @@ -1,2 +1,4 @@ # -*- coding: utf-8 -*- +from . import res_partner_relation_instance +from . import res_partner_relation_type from . import res_partner diff --git a/l10n_fr_association/models/res_partner_relation_instance.py b/l10n_fr_association/models/res_partner_relation_instance.py new file mode 100644 index 0000000..6987284 --- /dev/null +++ b/l10n_fr_association/models/res_partner_relation_instance.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api + +TYPES = [ + ("adm", "Administration"), + ("sup", "Supervision"), + ("ag", "General Assembly"), +] + + +class ResPartnerRelationInsctance(models.Model): + _name = "res.partner.relation.instance" + _description = "Partners relation instance" + _order = "inst_type, short, name, id" + + name = fields.Char( + string="Name", + translate=True, + required=True, + ) + short = fields.Char( + string="Short name", + translate=True, + required=True, + ) + inst_type = fields.Selection( + selection=TYPES, + string="Instance type", + required=True, + ) + parent_id = fields.Many2one( + comodel_name="res.partner.relation.instance", + string="Superior instance", + ) + parent_path = fields.Char( + unaccent=False, + ) + parents_and_self = fields.Many2many( + comodel_name="res.partner.relation.instance", + compute="_compute_parents_and_self", + ) + child_ids = fields.One2many( + comodel_name="res.partner.relation.instance", + inverse_name="parent_id", + string="Composing instances", + ) + + def name_get(self): + res = [] + for instance in self: + res.append( + (instance.id, " / ".join(instance.parents_and_self.mapped("name"))) + ) + return res + + def _compute_parents_and_self(self): + for instance in self: + if instance.parent_path: + instance.parents_and_self = self.env[self._model].browse( + [int(p) for p in instance.parent_path.split("/")[:-1]] + ) + else: + instance.parents_and_self = instance + + @api.constrains("parent_id") + def check_parent_id(self): + if not self._check_recursion(): + raise ValueError(_("Error ! You cannot create recursive instances.")) diff --git a/l10n_fr_association/models/res_partner_relation_type.py b/l10n_fr_association/models/res_partner_relation_type.py new file mode 100644 index 0000000..738fc4a --- /dev/null +++ b/l10n_fr_association/models/res_partner_relation_type.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields + +INSTANCES = [ + ("1", "Office"), + ("2", "Councile"), + ("3", "Commission"), + ("4", "Supervision"), + ("5", "Active member"), +] + +TYPES = [ + ("0", "Volunteer"), + ("1", "Employee"), +] + + +class ResPartnerRelationType(models.Model): + _inherit = "res.partner.relation.type" + + insctance_id = fields.Many2one( + comodel_name="res.partner.relation.instance", + string="Asso instance", + ) + relation_type = fields.Selection( + selection=TYPES, + string="Relation type", + ) diff --git a/l10n_fr_association/security/ir.model.access.csv b/l10n_fr_association/security/ir.model.access.csv new file mode 100644 index 0000000..47bd6cc --- /dev/null +++ b/l10n_fr_association/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_res_partner_relation_instance_all,All res.partner.relation.instance,model_res_partner_relation_instance,,1,0,0,0 +access_res_partner_relation_instance_group_partner_manager,Partner manager res.partner.relation.instance,model_res_partner_relation_instance,base.group_system,1,1,1,0 \ No newline at end of file diff --git a/l10n_fr_association/security/ir_rule.xml b/l10n_fr_association/security/ir_rule.xml new file mode 100644 index 0000000..c5d0d52 --- /dev/null +++ b/l10n_fr_association/security/ir_rule.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/l10n_fr_association/security/res_groups.xml b/l10n_fr_association/security/res_groups.xml new file mode 100644 index 0000000..86dbb2c --- /dev/null +++ b/l10n_fr_association/security/res_groups.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/l10n_fr_association/views/res_partner.xml b/l10n_fr_association/views/res_partner.xml index 524b018..2ff10ab 100644 --- a/l10n_fr_association/views/res_partner.xml +++ b/l10n_fr_association/views/res_partner.xml @@ -73,4 +73,15 @@ + + res.partner.view.search.inherit + res.partner + + + + + + + + \ No newline at end of file diff --git a/l10n_fr_association/views/res_partner_relation_instance.xml b/l10n_fr_association/views/res_partner_relation_instance.xml new file mode 100644 index 0000000..b1bac77 --- /dev/null +++ b/l10n_fr_association/views/res_partner_relation_instance.xml @@ -0,0 +1,64 @@ + + + + + res.partner.relation.instance.view.form + res.partner.relation.instance + +
+ +
+ +
+ + + + + +
+
+
+
+ + + res.partner.relation.instance.view.tree + res.partner.relation.instance + + + + + + + + + + + + res.partner.relation.instance.view.search + res.partner.relation.instance + + + + + + + + + + + Relation instances + res.partner.relation.instance + tree,form + [] + {} + + + + +
\ No newline at end of file diff --git a/l10n_fr_association/views/res_partner_relation_type.xml b/l10n_fr_association/views/res_partner_relation_type.xml new file mode 100644 index 0000000..d06c582 --- /dev/null +++ b/l10n_fr_association/views/res_partner_relation_type.xml @@ -0,0 +1,50 @@ + + + + + res.partner.relation.type.view.form.inherit + res.partner.relation.type + + + + + + + + + + + + + + + + + + + + res.partner.relation.type.view.tree.inherit + res.partner.relation.type + + + + + + + + + + + res.partner.relation.type.view.search + res.partner.relation.type + + + + + + + + + + + \ No newline at end of file