From d11de5463c1b9ff44fdac3bec8e806ffbcc03e37 Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@le-filament.com>
Date: Mon, 14 Apr 2025 14:55:07 +0200
Subject: [PATCH] WIP

---
 __manifest__.py              |   7 +-
 data/company_type.xml        |  69 +++++++++++++++++++
 data/cooperative_form.xml    |  32 +++++++++
 data/federation.xml          |  24 +++++++
 data/union_regionale.xml     |  69 +++++++++++++++++++
 models/__init__.py           |   2 +-
 models/company_attrs.py      |  18 +++++
 models/company_size.py       |  43 ------------
 models/meeting_event.py      |   2 +-
 models/mgmt_event.py         |   6 +-
 models/mucs_contract.py      |   1 +
 models/res_partner.py        |  24 +++++--
 models/union_regionale.py    |   6 ++
 security/ir.model.access.csv |   3 +
 views/mucs_contract.xml      |  27 ++++++++
 views/res_partner.xml        | 129 +++++++++++++++++++++++++++++++----
 16 files changed, 393 insertions(+), 69 deletions(-)
 create mode 100644 data/company_type.xml
 create mode 100644 data/cooperative_form.xml
 create mode 100644 data/federation.xml
 create mode 100644 data/union_regionale.xml
 create mode 100644 models/company_attrs.py
 delete mode 100644 models/company_size.py
 create mode 100644 views/mucs_contract.xml

diff --git a/__manifest__.py b/__manifest__.py
index a8c586e..2318753 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -6,13 +6,18 @@
     "version": "18.0.1.0.0",
     "license": "AGPL-3",
     "depends": ["l10n_fr_state", "l10n_fr_department",
-                "l10n_fr_department_oversea"],
+                "l10n_fr_department_oversea", "lefilament_naf", "convention_collective"],
     "data": [
         "security/ir.model.access.csv",
         # datas
         "data/company_size.xml",
+        "data/union_regionale.xml",
+        "data/federation.xml",
+        "data/company_type.xml",
+        "data/cooperative_form.xml",
         # views
         "views/res_partner.xml",
+        "views/mucs_contract.xml",
         "views/union_regionale.xml",
         "views/menus.xml",
         # views menu
diff --git a/data/company_type.xml b/data/company_type.xml
new file mode 100644
index 0000000..6447864
--- /dev/null
+++ b/data/company_type.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" ?>
+<odoo>
+    <data noupdate="1">
+        <record id="riga_14675" model="company.type">
+            <field name="name">Artisan / Commerçant</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="asso" model="company.type">
+            <field name="name">Association loi 1901 ou assimilée</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="riga_14673" model="company.type">
+            <field name="name">Collectivité territoriale</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="riga_14674" model="company.type">
+            <field name="name">Profession libérale</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="SARL" model="company.type">
+            <field name="name">Société à Responsabilité Limitée (SARL)</field>
+            <field name="is_coop" eval="1" />
+        </record>
+
+        <record id="SARLU" model="company.type">
+            <field name="name">Société à Responsabilité Limitée (SARL) unipersonnelle</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="SA" model="company.type">
+            <field name="name">Société Anonyme à Conseil d'Administration</field>
+            <field name="is_coop" eval="1" />
+        </record>
+
+        <record id="SA" model="company.type">
+            <field name="name">Société Anonyme à directoire</field>
+            <field name="is_coop" eval="1" />
+        </record>
+
+        <record id="riga_14677" model="company.type">
+            <field name="name">Société civile coopérative</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="SCI" model="company.type">
+            <field name="name">Société Civile Immobilière (SCI)</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="SELAS" model="company.type">
+            <field name="name">Société d exercice libéral par action simplifiée (SELAS)</field>
+            <field name="is_coop" eval="0" />
+        </record>
+
+        <record id="SAS" model="company.type">
+            <field name="name">Société par actions simplifiée (SAS)</field>
+            <field name="is_coop" eval="1" />
+        </record>
+
+        <record id="SAS" model="company.type">
+            <field name="name">Société par actions simplifiée à associé unique (SASU)</field>
+            <field name="is_coop" eval="0" />
+        </record>
+    </data>
+</odoo>
diff --git a/data/cooperative_form.xml b/data/cooperative_form.xml
new file mode 100644
index 0000000..838cfaa
--- /dev/null
+++ b/data/cooperative_form.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<odoo>
+    <data noupdate="1">
+        <record id="form_coop47" model="cooperative.form">
+            <field name="name">COOP47</field>
+        </record>
+
+        <record id="form_lamaneur" model="cooperative.form">
+            <field name="name">Lamaneur</field>
+        </record>
+
+        <record id="form_scic" model="cooperative.form">
+            <field name="name">SCIC</field>
+        </record>
+
+        <record id="form_scop" model="cooperative.form">
+            <field name="name">SCOP</field>
+        </record>
+
+        <record id="form_ues" model="cooperative.form">
+            <field name="name">UES</field>
+        </record>
+
+        <record id="form_unionscop" model="cooperative.form">
+            <field name="name">UNIONSCOP</field>
+        </record>
+
+        <record id="form_noncooperative" model="cooperative.form">
+            <field name="name">Non coopérative</field>
+        </record>
+    </data>
+</odoo>
diff --git a/data/federation.xml b/data/federation.xml
new file mode 100644
index 0000000..fc7382c
--- /dev/null
+++ b/data/federation.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2019 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <data noupdate="1">
+
+        <record id="COM" model="res.partner.federation">
+            <field name="name">Fed. des scop de la communication</field>
+        </record>
+
+        <record id="IND" model="res.partner.federation">
+            <field name="name">Fed. des scop de l'industrie</field>
+        </record>
+
+        <record id="BTP" model="res.partner.federation">
+            <field name="name">Fed. des scop du BTP</field>
+        </record>
+
+        <record id="CAE" model="res.partner.federation">
+            <field name="name">Fed. des CAE</field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/data/union_regionale.xml b/data/union_regionale.xml
new file mode 100644
index 0000000..29c7e1a
--- /dev/null
+++ b/data/union_regionale.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" ?>
+<odoo>
+    <data noupdate="1">
+        <record id="riga_14231" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP ILE DE FRANCE CENTRE VAL DE LOIRE DOM-TOM</field>
+            <field name="name">IdF, Val de Loire, Dom Tom</field>
+        </record>
+
+        <record id="riga_14232" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP HAUTS DE FRANCE</field>
+            <field name="name">Hauts-de-France</field>
+        </record>
+
+        <record id="riga_14233" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP BOURGOGNE FRANCHE COMTE</field>
+            <field name="name">Bourgogne</field>
+        </record>
+
+        <record id="riga_14234" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP GRAND EST</field>
+            <field name="name">Est</field>
+        </record>
+
+        <record id="riga_14353" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP AUVERGNE RHONE ALPES</field>
+            <field name="name">AURA</field>
+        </record>
+
+        <record id="riga_14237" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP PROVENCE ALPES COTE D'AZUR CORSE</field>
+            <field name="name">Paca</field>
+        </record>
+
+        <record id="riga_14238" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP D'OCCITANIE POLE PYRENEES</field>
+            <field name="name">Occitanie pole Pyrénées</field>
+        </record>
+
+        <record id="riga_14239" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP LIMOUSIN</field>
+            <field name="name">Limousin Berry</field>
+        </record>
+
+        <record id="riga_14240" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP POITOU CHARENTES</field>
+            <field name="name">Poitou Charentes</field>
+        </record>
+
+        <record id="riga_14241" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP OUEST</field>
+            <field name="name">Ouest</field>
+        </record>
+
+        <record id="riga_14242" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP AQUITAINE</field>
+            <field name="name">Aquitaine</field>
+        </record>
+
+        <record id="riga_14243" model="union.regionale">
+            <field name="long_name">UNION REGIONALE DES SCOP D'OCCITANIE POLE MEDITERRANEE</field>
+            <field name="name">Occitanie pole Méditérranée</field>
+        </record>
+
+        <record id="ur_dom_tom" model="union.regionale">
+            <field name="long_name">PROGRAMME OUTRE MER</field>
+            <field name="name">POM</field>
+        </record>
+    </data>
+</odoo>
diff --git a/models/__init__.py b/models/__init__.py
index 9c05e4b..1f79d35 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,6 +1,6 @@
 from . import res_partner
 from . import union_regionale
-from . import company_size
+from . import company_attrs
 from . import mucs_contract
 from . import meeting_event
 from . import mgmt_event
diff --git a/models/company_attrs.py b/models/company_attrs.py
new file mode 100644
index 0000000..b337c3a
--- /dev/null
+++ b/models/company_attrs.py
@@ -0,0 +1,18 @@
+# Copyright 2024- Le Filament (https://le-filament.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
+
+from odoo import models, fields, api
+
+
+class CompanySize(models.Model):
+    _name = "company.size"
+    name = fields.Char("Taille d'entreprise")
+
+class CompanyType(models.Model):
+    _name = "company.type"
+    name = fields.Char("Type d'entreprise")
+    is_coop = fields.Boolean("Est un statut coopératif")
+
+class CooperativeForm(models.Model):
+    _name = "cooperative.form"
+    name = fields.Char("Forme coopérative")
diff --git a/models/company_size.py b/models/company_size.py
deleted file mode 100644
index 3c4296b..0000000
--- a/models/company_size.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2024- Le Filament (https://le-filament.com)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
-
-from odoo import models, fields, api
-from odoo.exceptions import ValidationError
-
-
-class CompanySize(models.Model):
-    _name = "company.size"
-
-    # ------------------------------------------------------
-    # Fields declaration
-    # ------------------------------------------------------
-
-    name = fields.Char("Taille d'entreprise")
-
-    # ------------------------------------------------------
-    # SQL Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Default methods
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Computed fields / Search Fields
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Onchange / Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # CRUD methods (ORM overrides)
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Actions
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Business methods
-    # ------------------------------------------------------
diff --git a/models/meeting_event.py b/models/meeting_event.py
index d0bc2cc..6ea798b 100644
--- a/models/meeting_event.py
+++ b/models/meeting_event.py
@@ -9,7 +9,7 @@ class MeetingEvent(models.Model):
 
     date = fields.Date("Date")
     name = fields.Char("Sujet")
-    description = fields.Char("Description")
+    description = fields.Html("Description")
     # TODO tags ?
     # categ_ids = fields.Many2one("X")
 
diff --git a/models/mgmt_event.py b/models/mgmt_event.py
index 63f29c5..482445a 100644
--- a/models/mgmt_event.py
+++ b/models/mgmt_event.py
@@ -7,10 +7,10 @@ from odoo import models, fields, api
 class MgmtEvent(models.Model):
     _name = "mgmt.event"
 
+    date = fields.Date("Date")
     qs = fields.Selection(string="Qualité de service", selection=[("s", "Satisfait")])
-    # TODO catégories ?
-    # theme = fields.Many2one(string="Thématique", comodel_name="")
-    topic = fields.Char("Sujet")
+    theme = fields.Char("Thématique")
+    topic = fields.Html("Sujet")
     resolution = fields.Char("Résolution")
 
     # relations
diff --git a/models/mucs_contract.py b/models/mucs_contract.py
index c38cd3d..a2fb5b3 100644
--- a/models/mucs_contract.py
+++ b/models/mucs_contract.py
@@ -10,6 +10,7 @@ class Contract(models.Model):
     number = fields.Char("Numéro de contrat")
     # On attend d'avoir des données
     # product_id = fields.Many2one("Type de couverture")
+    type = fields.Char("Type de couverture") # will be computed on product_id
     member_count = fields.Integer("Effectifs adhérents")
     maybe_member_count = fields.Integer("Potentiel adhérents")
 
diff --git a/models/res_partner.py b/models/res_partner.py
index d470b9d..8942e64 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -30,17 +30,21 @@ class ResPartner(models.Model):
         tracking=True
     )
     # Note : pour l'instant str, à changer vers m2o quand on y verra plus clair
-    ape = fields.Char("APE Code")
-    ape_label = fields.Char("APE Label")
-    ccn = fields.Char("CCN Code")
-    ccn_label = fields.Char("CCN Label")
+    ccn_idcc = fields.Char("CCN Code", related="ccn_id.idcc")
+    ccn_titre = fields.Char("CCN Label", related="ccn_id.titre")
 
-    is_member_sante = fields.Boolean("Adhérent Santé", compute="_compute_is_member_sante")
+    is_member_sante = fields.Boolean("Adhérent Santé",
+                                     compute="_compute_is_member_sante")
     is_member_unmi = fields.Boolean("Adhérent UNMI")
     is_member_mutex = fields.Boolean("Adhérent MUTEX")
     type_rma_aid = fields.Selection(string="Assistance RMA",
                                     selection=[("base", "Base")])
 
+    first_join_date = fields.Date("Date de première adhésion")
+    membership = fields.Boolean("Adhésion")
+    removal = fields.Boolean("Radiation")
+    motive = fields.Char("Motif")
+
     # overwrite state to compute it based on department which itself is computed from zip
     state_id = fields.Many2one("res.country.state", string='State',
                                ondelete='restrict',
@@ -50,12 +54,17 @@ class ResPartner(models.Model):
 
     # relations -----
 
+    company_form = fields.Many2one("company.type", "Forme juridique")
+    cooperative_form = fields.Many2one("cooperative.form", "Forme coopérative")
+
     ur_id = fields.Many2one(
         comodel_name="union.regionale",
         string="Union Régionale",
         index=True,
         ondelete="restrict",
     )
+    federation_ids = fields.Many2many(comodel_name="res.partner.federation",
+                                      string="Fédérations")
 
     contract_id = fields.One2many(
         string="Contrats",
@@ -101,7 +110,9 @@ class ResPartner(models.Model):
     @api.depends("contract_id")
     def _compute_is_member_sante(self):
         for partner in self:
+            partner.is_member_sante = True
             pass
+
     # ------------------------------------------------------
     # Onchange / Constraints
     # ------------------------------------------------------
@@ -110,7 +121,8 @@ class ResPartner(models.Model):
     def _check_individual_not_cooperative(self):
         for record in self:
             if record.is_cooperative and not record.is_company:
-                raise ValidationError("An individual can not be a cooperative")
+                # raise ValidationError("An individual can not be a cooperative")
+                pass # gênant pour les contacts créés à partir d'une coopérative
 
     # ------------------------------------------------------
     # CRUD methods (ORM overrides)
diff --git a/models/union_regionale.py b/models/union_regionale.py
index 77395da..fa8e486 100644
--- a/models/union_regionale.py
+++ b/models/union_regionale.py
@@ -16,3 +16,9 @@ class UnionRegional(models.Model):
     _sql_constraints = [
         ("name_uniq", "unique (name)", "Cette Union Régionale existe déjà !")
     ]
+
+class ResPartnerFederation(models.Model):
+    _name = "res.partner.federation"
+    _description = "Fédérations"
+
+    name = fields.Char("Fédération")
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 30fa26c..2e63121 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -5,3 +5,6 @@ access_company_size,access_company_size,model_company_size,base.group_user,1,0,0
 access_mucs_contract,access_mucs_contract,model_mucs_contract,base.group_user,1,1,1,1
 access_meeting_event,access_meeting_event,model_meeting_event,base.group_user,1,1,1,1
 access_mgmt_event,access_mgmt_event,model_mgmt_event,base.group_user,1,1,1,1
+access_res_partner_federation,access_res_partner_federation,model_res_partner_federation,base.group_user,1,1,1,1
+access_company_type,access_company_type,model_company_type,base.group_user,1,1,1,1
+access_cooperative_form,access_cooperative_form,model_cooperative_form,base.group_user,1,1,1,1
diff --git a/views/mucs_contract.xml b/views/mucs_contract.xml
new file mode 100644
index 0000000..8702b23
--- /dev/null
+++ b/views/mucs_contract.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2024- Le Filament (https://le-filament.com)
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <record id="mucs_contract_action" model="ir.actions.act_window">
+        <field name="name">Contracts</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">mucs.contract</field>
+        <field name="view_mode">list,form</field>
+        <field name="path">contract</field>
+    </record>
+
+    <record id="mucs_contract_view_list" model="ir.ui.view">
+        <field name="name">mucs.contract.list</field>
+        <field name="model">mucs.contract</field>
+        <field name="arch" type="xml">
+            <list>
+                <field name="number"/>
+                <field name="type"/>
+                <field name="member_count"/>
+                <field name="maybe_member_count"/>
+                <field name="partner_id"/>
+            </list>
+        </field>
+    </record>
+
+</odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
index b62eeb7..8566acd 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -9,61 +9,162 @@
         <field name="name">res.partner.form.inherit</field>
         <field name="model">res.partner</field>
         <field name="inherit_id" ref="base.view_partner_form"/>
+        <field name="priority">100</field>
         <field name="arch" type="xml">
+            <!-- hide fields added by ccn and naf module because they are shown later-->
+            <xpath expr="//field[@name='ccn_id']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//field[@name='naf_id']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//field[@name='vat']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//field[@name='category_id']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//field[@name='mobile']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//field[@name='street2']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//page[@name='sales_purchases']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <xpath expr="//page[@name='internal_notes']" position="attributes">
+                <attribute name="invisible">True</attribute>
+            </xpath>
+            <!-- focus on company details instead -->
+            <xpath expr="//page[@name='contact_addresses']"
+                   position="attributes">
+                <attribute name="autofocus">not is_company</attribute>
+            </xpath>
+            <!-- entreprise + environnement -->
             <xpath expr="//page[@name='contact_addresses']" position="before">
+                <!-- entreprise -->
                 <page
                     name="company"
                     string="Entreprise"
                     invisible="not is_company"
+                    autofocus="autofocus"
                 >
                     <group>
                         <group>
+                            <!--<field name="siret"/>-->
                             <field name="siret" readonly="1"
                                    widget="CopyClipboardChar"/>
                             <field name="siren" readonly="1"
                                    widget="CopyClipboardChar"/>
                             <field name="company_size_id"/>
                             <field name="company_size"/>
+                            <field name="company_form"/>
+                            <field name="naf_id" string="APE"/>
+                            <!--<field name="ccn_id"/>-->
+                            <field name="ccn_idcc" string="Numéro CCN"/>
+                            <field name="ccn_titre" string="Intitulé"/>
                         </group>
                         <group>
                             <field name="is_cooperative"/>
                             <field name="ur_id" invisible="not is_cooperative"/>
+                            <field name="federation_ids" widget="many2many_tags"
+                                   invisible="not is_cooperative"/>
+                            <field name="is_member_cgscop"
+                                   invisible="not is_cooperative"/>
+                            <field name="cooperative_form"
+                                   invisible="not is_cooperative"/>
                         </group>
                     </group>
-                </page>
-                <page
-                    name="leads"
-                    string="Opportunités"
-                >
-                    <group>
-<!--                        <field name="leads_id"/>-->
+                    <group string="Descriptif Activité">
+                        <field name="comment" nolabel="1"/>
                     </group>
                 </page>
+
+                <!-- environnement -->
                 <page
-                    name="contracts"
-                    string="Contrats"
+                    name="environment"
+                    string="Environnement"
                     invisible="not is_company"
                 >
                     <group>
-                        <field name="contract_id"/>
+                        <group>
+                            <field name="is_member_sante"/>
+                            <field name="is_member_unmi"/>
+                        </group>
+                        <group>
+                            <field name="is_member_mutex"/>
+                            <field name="type_rma_aid"/>
+                        </group>
+                    </group>
+                    <separator/>
+                    <group>
+                        <group>
+                            <field name="first_join_date"/>
+                            <field name="membership"/>
+                        </group>
+                        <group>
+                            <field name="removal"/>
+                            <field name="motive"/>
+                        </group>
+                    </group>
+                    <separator/>
+                    <group string="Contrats">
+                        <field name="contract_id" nolabel="1">
+                            <list>
+                                <field name="number"/>
+                                <field name="type"/>
+                                <field name="member_count"/>
+                                <field name="maybe_member_count"/>
+                            </list>
+                        </field>
                     </group>
                 </page>
+            </xpath>
+
+            <!-- suivi + opportunités + leads -->
+            <xpath expr="//page[@name='contact_addresses']" position="after">
+                <!-- suivi commercial-->
                 <page
                     name="suivi_commercial"
                     string="Suivi commercial"
                     invisible="not is_company"
                 >
-                    <group>
-                        <field name="meeting_ids"/>
+                    <group string="Synthèse activité développement">
+                        <field name="meeting_ids" nolabel="1">
+                            <list>
+                                <field name="date"/>
+                                <field name="name"/>
+                            </list>
+                        </field>
                     </group>
                 </page>
+                <!-- suivi gestion-->
                 <page
                     name="suivi_gestion"
                     string="Suivi gestion"
                     invisible="not is_company"
                 >
-                    <group>
-                        <field name="mgmt_event_ids"/>
+                    <group string="Synthèse activité gestion">
+                        <field name="mgmt_event_ids" nolabel="1">
+                            <list>
+                                <field name="date"/>
+                                <field name="qs"/>
+                                <field name="theme"/>
+                                <field name="topic"/>
+                                <field name="resolution"/>
+                            </list>
+                        </field>
+                    </group>
+                </page>
+                <!-- leads -->
+                <page
+                    name="leads"
+                    string="Opportunités"
+                    invisible="not is_company"
+                >
+                    <group string="Leads">
+                        <field name="lead_ids" nolabel="1"/>
                     </group>
                 </page>
             </xpath>
-- 
GitLab