From 64ab99380a2f52b16449dbd11c29bd2e6831ec2f Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Tue, 22 Aug 2023 17:38:37 +0200
Subject: [PATCH] [update] remove lm_adhesion_id & update wizards

---
 __manifest__.py                               |   7 +-
 models/res_partner.py                         | 162 +++---------------
 security/ir.model.access.csv                  |   6 +-
 views/res_partner.xml                         |   7 +-
 wizard/__init__.py                            |   6 +-
 wizard/scop_adhesion_year_wizard.py           |  37 ----
 wizard/scop_adhesion_year_wizard.xml          |  30 ----
 wizard/scop_membership_liasse_wizard.py       | 102 +++++++++++
 wizard/scop_membership_liasse_wizard.xml      | 159 +++++++++++++++++
 ...ard.py => scop_membership_staff_wizard.py} |   4 +-
 wizard/scop_membership_staff_wizard.xml       |  47 +++++
 ...rd.py => scop_membership_submit_wizard.py} |   4 +-
 ....xml => scop_membership_submit_wizard.xml} |   6 +-
 .../scop_partner_staff_membership_wizard.xml  |  54 ------
 14 files changed, 350 insertions(+), 281 deletions(-)
 delete mode 100644 wizard/scop_adhesion_year_wizard.py
 delete mode 100644 wizard/scop_adhesion_year_wizard.xml
 create mode 100644 wizard/scop_membership_liasse_wizard.py
 create mode 100644 wizard/scop_membership_liasse_wizard.xml
 rename wizard/{scop_partner_staff_membership_wizard.py => scop_membership_staff_wizard.py} (92%)
 create mode 100644 wizard/scop_membership_staff_wizard.xml
 rename wizard/{scop_submit_membership_wizard.py => scop_membership_submit_wizard.py} (90%)
 rename wizard/{scop_submit_membership_wizard.xml => scop_membership_submit_wizard.xml} (90%)
 delete mode 100644 wizard/scop_partner_staff_membership_wizard.xml

diff --git a/__manifest__.py b/__manifest__.py
index b4417e0..4fb1fe5 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -10,6 +10,7 @@
     "depends": [
         "account",
         "cgscop_partner",
+        "cgscop_cotisation_cg",
         "cgscop_extranet",
         "cgscop_liste_ministere",
     ],
@@ -21,10 +22,10 @@
         "datas/mail_message_subtype.xml",
         "datas/scop_adhesion_file_data.xml",
         # wizard
-        "wizard/scop_adhesion_year_wizard.xml",
         "wizard/scop_compulsory_fields_suivi_wizard.xml",
-        "wizard/scop_partner_staff_membership_wizard.xml",
-        "wizard/scop_submit_membership_wizard.xml",
+        "wizard/scop_membership_liasse_wizard.xml",
+        "wizard/scop_membership_staff_wizard.xml",
+        "wizard/scop_membership_submit_wizard.xml",
         # views
         "views/assets.xml",
         "views/res_config_settings.xml",
diff --git a/models/res_partner.py b/models/res_partner.py
index 2925c90..c8e0b85 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -54,12 +54,6 @@ class ScopPartner(models.Model):
     date_transmission_cg = fields.Date("Date de transmission du dossier à la CG")
     date_bureau_validation = fields.Date("Date du bureau de validation")
 
-    lm_adhesion_id = fields.Many2one(
-        comodel_name="scop.liste.ministere", string="Liste Ministère adhésion"
-    )
-    lm_adhesion_year = fields.Integer(
-        string="Année dossier adhésion", related="lm_adhesion_id.year"
-    )
     invoice_adhesion_id = fields.Many2one(
         comodel_name="account.move", string="Facture d'adhésion"
     )
@@ -114,67 +108,6 @@ class ScopPartner(models.Model):
     # ------------------------------------------------------
     # Actions / Buttons
     # ------------------------------------------------------
-    def scop_lm_adhesion(self):
-        """
-        Display liste ministere form used for adhesion
-        :return: Form View LM
-        """
-        self.ensure_one()
-        if not self.lm_adhesion_id:
-            self.lm_adhesion_id = self.get_lm_adhesion()
-        form_id = self.env.ref("cgscop_liste_ministere.view_liste_ministere_form")
-        action = {
-            "name": "Dossier d'adhésion",
-            "type": "ir.actions.act_window",
-            "res_model": "scop.liste.ministere",
-            "view_mode": "form",
-            "views": [[form_id.id, "form"]],
-            "res_id": self.lm_adhesion_id.id,
-            "context": {"create": False, "edit": True, "delete": False},
-        }
-        return action
-
-    def scop_liasse_adhesion(self):
-        """
-        Display liasse fiscale used for adhesion :
-        :return LF attached to LM adhesion or create new one type prévi
-        """
-        self.ensure_one()
-        if not self.lm_adhesion_id:
-            self.lm_adhesion_id = self.get_lm_adhesion()
-        liasse_adhesion = self.get_liasse_adhesion(self.lm_adhesion_id)
-        year_adhesion = self.lm_adhesion_year
-        if not liasse_adhesion.year == year_adhesion:
-            liasse_adhesion.update({"year": year_adhesion})
-        action = self.env["ir.actions.actions"]._for_xml_id(
-            "cgscop_liasse_fiscale.scop_liasse_fiscale_previsionnelle_act_window"
-        )
-        action.update(
-            {
-                "name": "Données financières",
-                "res_id": liasse_adhesion.id,
-                "context": {"create": False, "edit": True, "delete": False},
-            }
-        )
-        return action
-
-    def scop_change_year_dossier(self):
-        """
-        Open wizard to change year dossier adhesion
-        :return:
-        """
-        wizard = self.env["scop.adhesion.year.wizard"].create(
-            {"lm_adhesion_id": self.lm_adhesion_id.id}
-        )
-        return {
-            "name": "Modifier l'année du dossier",
-            "type": "ir.actions.act_window",
-            "view_mode": "form",
-            "res_model": "scop.adhesion.year.wizard",
-            "res_id": wizard.id,
-            "target": "new",
-        }
-
     def fill_membership_staff(self):
         self.ensure_one()
         staff_id = self.env["scop.partner.staff"].search(
@@ -199,82 +132,36 @@ class ScopPartner(models.Model):
                 }
             )
 
-        wizard = self.env["scop.partner.staff.membership.wizard"].create(
+        wizard = self.env["scop.membership.staff.wizard"].create(
             {"partner_id": self.id, "staff_id": staff_id.id}
         )
         return {
-            "name": "Effectif à l'adhésion",
+            "name": "Effectifs à l'adhésion",
             "type": "ir.actions.act_window",
             "view_mode": "form",
-            "res_model": "scop.partner.staff.membership.wizard",
+            "res_model": "scop.membership.staff.wizard",
             "res_id": wizard.id,
             "target": "new",
         }
 
-    # ------------------------------------------------------
-    # Business methods
-    # ------------------------------------------------------
-    def get_lm_adhesion(self, year=False):
-        """
-        - LM renouvellement existante en année N → on rattache à cette LM
-        - Pas de LM existante en année N
-            - LM connue dans l’historique → on crée une LM renouvellement
-            pour l’année N
-            - Pas de LM connue → on créée une LM inscription
-        """
+    def fill_membership_liasse(self):
         self.ensure_one()
-
-        lm_adhesion = self.lm_adhesion_id
-
-        if not lm_adhesion:
-            last_lm_ids = self.get_last_lm()
-            year = fields.Date.today().year if not year else year
-            if last_lm_ids:
-                lm_adhesion = last_lm_ids.filtered(lambda lm: lm.year == year)
-
-            if not lm_adhesion:
-                if not last_lm_ids:
-                    type_lm = "subscribe"
-                else:
-                    type_lm = "renew"
-                ListeMinistere = self.env["scop.liste.ministere"]
-                lm_adhesion_id = ListeMinistere.sudo().create_folder(
-                    self, year, type_lm
-                )
-                lm_adhesion = ListeMinistere.browse(lm_adhesion_id)
-                lm_adhesion.update_data_lm()
-                lm_adhesion.status = "2_publie"
-                self.lm_adhesion_id = lm_adhesion.id
-        else:
-            if not lm_adhesion.active:
-                lm_adhesion.write({"active": True})
-
-        return lm_adhesion
-
-    def get_last_lm(self):
-        """
-        Return last known lm for partner
-        """
-        self.ensure_one()
-        lm_ids = self.env["scop.liste.ministere"].search(
-            [("partner_id", "=", self.id), ("active", "in", [True, False])],
-            order="year desc",
+        wizard = self.env["scop.membership.liasse.wizard"].create(
+            {"partner_id": self.id,}
         )
-        return lm_ids
-
-    def get_liasse_adhesion(self, lm):
-        """
-        Return liasse linked to LM or create a new one
-        :param lm:
-        :return:
-        """
-        liasse_type_previ = "forecast"
-        liasse_adhesion = lm.sudo().create_liasse_fiscale(liasse_type_previ)
-        if not liasse_adhesion.L2052_FL:
-            liasse_adhesion.update({"L2052_FL": self.ca_previsionnel})
-        liasse_adhesion.is_qualified = True
-        return liasse_adhesion
+        return {
+            "name": "Données financières",
+            "type": "ir.actions.act_window",
+            "view_mode": "form",
+            "res_model": "scop.membership.liasse.wizard",
+            "res_id": wizard.id,
+            "target": "new",
+        }
 
+    # ------------------------------------------------------
+    # Business methods
+    # ------------------------------------------------------
+    # TODO: supprimer ou modifier (suppression fonction get_liasse_adhesion)
     def check_compulsory_fields(self, lm):
         """
         Vérification des champs de la liste ministère et de la liasse fiscale
@@ -287,6 +174,8 @@ class ScopPartner(models.Model):
             res += (
                 "<hr/><strong>Dossier d'Adhésion : </strong><ul>" + errors_lm + "</ul>"
             )
+
+
         liasse_adhesion = self.get_liasse_adhesion(lm)
         errors_lf = liasse_adhesion.check_compulsory_fields_lf()
         if errors_lf:
@@ -443,7 +332,7 @@ class ScopPartner(models.Model):
         """
         Ouvre le wizard et vérifie les effectifs
         """
-        wizard = self.env["scop.submit.membership.wizard"].create(
+        wizard = self.env["scop.membership.submit.wizard"].create(
             {
                 "partner_id": self.id,
                 "list_logs": self.list_logs,
@@ -453,7 +342,7 @@ class ScopPartner(models.Model):
             "name": "Confirmation de l'adhésion",
             "type": "ir.actions.act_window",
             "view_mode": "form",
-            "res_model": "scop.submit.membership.wizard",
+            "res_model": "scop.membership.submit.wizard",
             "res_id": wizard.id,
             "target": "new",
         }
@@ -522,13 +411,6 @@ class ScopPartner(models.Model):
         - create invoice adhesion
         - set liasse_fiscale_adhesion as qualified
         """
-
-        # TODO: Supprimer ?
-        # if not self.lm_adhesion_id:
-        #     raise ValidationError(
-        #         _("Cette coopérative n'a pas de dossier d'inscription")
-        #     )
-
         # Create period adhésions with num adherent
         num_adherent = self.member_number_int or self.create_num_adherent()
         self.create_period_adhesion_cg(num_adherent)
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 99f6ac7..8c6de3e 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -6,6 +6,6 @@ admin_res_partner_project_invoicing_status,admin_res_partner_project_invoicing_s
 access_scop_adhesion_file,access_scop_adhesion_file,model_scop_adhesion_file,base.group_user,1,0,0,0
 admin_scop_adhesion_file,admin_scop_adhesion_file,model_scop_adhesion_file,cgscop_partner.group_cg_administrator,1,1,1,1
 cg_access_compulsory_fields_suivi_wizard,cg_access_compulsory_fields_suivi_wizard,model_scop_compulsory_fields_suivi_wizard,base.group_user,1,1,1,0
-cg_access_adhesion_year_wizard,cg_access_adhesion_year_wizard,model_scop_adhesion_year_wizard,cgscop_partner.group_cg_administrative,1,1,1,0
-access_scop_partner_staff_membership_wizard,access_scop_partner_staff_membership_wizard,model_scop_partner_staff_membership_wizard,base.group_user,1,1,1,1
-access_scop_submit_membership_wizard,access_scop_submit_membership_wizard,model_scop_submit_membership_wizard,base.group_user,1,1,1,1
+access_scop_membership_liasse_wizard,access_scop_membership_liasse_wizard,model_scop_membership_liasse_wizard,base.group_user,1,1,1,1
+access_scop_membership_staff_wizard,access_scop_membership_staff_wizard,model_scop_membership_staff_wizard,base.group_user,1,1,1,1
+access_scop_membership_submit_wizard,access_scop_membership_submit_wizard,model_scop_membership_submit_wizard,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 53b16e7..6464898 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -71,7 +71,8 @@
                             type="object"
                         >les effectifs</button> et <button
                             class="btn btn-info btn-sm"
-                            name=""
+                            name="fill_membership_liasse"
+                            type="object"
                         >les données financières</button> pour valider l'adhésion.
                     </div>
                 </xpath>
@@ -211,7 +212,7 @@
                             <button
                                 string="Données financières"
                                 type="object"
-                                name="scop_liasse_adhesion"
+                                name="fill_membership_liasse"
                                 class="btn-info"
                                 attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}"
                             />
@@ -234,8 +235,6 @@
                                 string="Phase d'adhésion"
                                 attrs="{'invisible':[('project_status','in',('1_information','2_pre-diagnostic','3_accompagnement'))]}"
                             >
-                                <field name="lm_adhesion_id" invisible="1" />
-                                <field name="lm_adhesion_year" />
                                 <field name="file_full" widget="boolean_toggle" />
                                 <field name="date_transmission_cg" />
                                 <field name="date_bureau_validation" />
diff --git a/wizard/__init__.py b/wizard/__init__.py
index ea110ec..fb836cd 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -1,7 +1,7 @@
 # © 2021 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from . import scop_adhesion_year_wizard
 from . import scop_compulsory_fields_suivi_wizard
-from . import scop_partner_staff_membership_wizard
-from . import scop_submit_membership_wizard
+from . import scop_membership_liasse_wizard
+from . import scop_membership_staff_wizard
+from . import scop_membership_submit_wizard
diff --git a/wizard/scop_adhesion_year_wizard.py b/wizard/scop_adhesion_year_wizard.py
deleted file mode 100644
index b542d5a..0000000
--- a/wizard/scop_adhesion_year_wizard.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# © 2022 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-from odoo import fields, models
-
-
-class ScopAdhesionYearWizard(models.TransientModel):
-    _name = "scop.adhesion.year.wizard"
-    _description = "Wizard: Changer l'année du dossier d'adhésion"
-
-    lm_adhesion_id = fields.Many2one(
-        comodel_name="scop.liste.ministere", string="Lm_adhesion_id", required=False
-    )
-    current_year = fields.Integer(
-        string="Année actuelle", related="lm_adhesion_id.year"
-    )
-    choosen_year = fields.Selection(
-        [
-            (str(year), str(year))
-            for year in range(
-                fields.Date.today().year - 3, fields.Date.today().year + 2
-            )
-        ],
-        string="Année choisie",
-    )
-
-    # ------------------------------------------------------
-    # Actions / Buttons
-    # ------------------------------------------------------
-    def change_year(self):
-        """
-        Change l'année du dossier d'adhésion pour le partner
-        :return:
-        """
-        partner = self.lm_adhesion_id.partner_id
-        partner.lm_adhesion_id = partner.get_lm_adhesion(int(self.choosen_year))
-        return {"type": "ir.actions.act_window_close"}
diff --git a/wizard/scop_adhesion_year_wizard.xml b/wizard/scop_adhesion_year_wizard.xml
deleted file mode 100644
index 1405f19..0000000
--- a/wizard/scop_adhesion_year_wizard.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" ?>
-<!-- Copyright 2021 Le Filament
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-    <data>
-
-        <record model="ir.ui.view" id="scop_adhesion_year_wizard_form_view">
-            <field name="name">scop.adhesion.year.wizard.form</field>
-                <field name="model">scop.adhesion.year.wizard</field>
-            <field name="arch" type="xml">
-                <form string="Changer l'année du dossier d'adhésion">
-                    <group>
-                        <field name="current_year" />
-                        <field name="choosen_year" required="1" />
-                    </group>
-                    <footer>
-                        <button
-                            name="change_year"
-                            type="object"
-                            string="Valider"
-                            class="oe_highlight"
-                        />
-                        <button special="cancel" string="Annuler" />
-                    </footer>
-                </form>
-            </field>
-        </record>
-
-    </data>
-</odoo>
diff --git a/wizard/scop_membership_liasse_wizard.py b/wizard/scop_membership_liasse_wizard.py
new file mode 100644
index 0000000..75b842f
--- /dev/null
+++ b/wizard/scop_membership_liasse_wizard.py
@@ -0,0 +1,102 @@
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import api, fields, models
+
+
+class ScopMembershipLiasseWizard(models.TransientModel):
+    _name = "scop.membership.liasse.wizard"
+    _description = "Wizard: Données financières d'adhésion"
+
+    # ------------------------------------------------------
+    # Field declaration
+    # ------------------------------------------------------
+    partner_id = fields.Many2one(
+        comodel_name="res.partner",
+        string="Coopérative",
+        required=True
+    )
+    liasse_id = fields.Many2one(
+        comodel_name="scop.liasse.fiscale",
+        string="Liasse existante",
+    )
+    is_financial_data = fields.Boolean(compute="_compute_is_financial_data")
+    is_editable = fields.Boolean(compute="_compute_is_editable")
+
+    # Related fields
+    is_qualified = fields.Boolean(related="liasse_id.is_qualified")
+    year = fields.Integer(related="liasse_id.year")
+    type_id = fields.Selection(related="liasse_id.type_id")
+    source = fields.Selection(related="liasse_id.source")
+    dureeExercice = fields.Integer(related="liasse_id.dureeExercice")
+    L2050_DCLO = fields.Date(related="liasse_id.L2050_DCLO")
+    currency_id = fields.Many2one(related="liasse_id.currency_id")
+    L2052_FL = fields.Monetary(related="liasse_id.L2052_FL")
+    av_cg = fields.Monetary(related="liasse_id.av_cg")
+    av_lf = fields.Monetary(related="liasse_id.av_lf")
+    L2052_FY = fields.Monetary(related="liasse_id.L2052_FY")
+    L2053_HN = fields.Float(related="liasse_id.L2053_HN")
+    contribution_base_type = fields.Selection(related="liasse_id.contribution_base_type")
+    contribution_base_amount = fields.Integer(related="liasse_id.contribution_base_amount")
+    contribution_cg = fields.Float(related="liasse_id.contribution_cg")
+
+    # ------------------------------------------------------
+    # Compute
+    # ------------------------------------------------------
+    def _compute_is_financial_data(self):
+        for wizard in self:
+            liasse_ids = self.env["scop.liasse.fiscale"].search([
+                ("partner_id", "=", wizard.partner_id.id)
+            ])
+            wizard.is_financial_data = True if liasse_ids else False
+
+    @api.depends("liasse_id")
+    def _compute_is_editable(self):
+        for wizard in self:
+            if wizard.liasse_id.type_id == "forecast":
+                wizard.is_editable = True
+            else:
+                wizard.is_editable = False
+
+    # ------------------------------------------------------
+    # Actions / Buttons
+    # ------------------------------------------------------
+    def save_data(self):
+        """
+        Sauvegarder les données même avec erreurs
+        """
+        return {"type": "ir.actions.act_window_close"}
+
+    def new_forecast(self):
+        liasse_values = {
+            "partner_id": self.partner_id.id,
+            "year": fields.Date.today().year,
+            "effective_date": fields.Date.today(),
+            "source": "manual",
+            "type_id": "forecast",
+            "is_qualified": True,
+        }
+        liasse_fiscale_id = self.env["scop.liasse.fiscale"].create(
+            liasse_values
+        )
+
+        return self.open_forecast(liasse_fiscale_id)
+
+    def update_forecast(self):
+        return self.open_forecast(self.liasse_id)
+
+    # ------------------------------------------------------
+    # Business function
+    # ------------------------------------------------------
+    def open_forecast(self, liasse_id):
+        action = self.env["ir.actions.actions"]._for_xml_id(
+            "cgscop_liasse_fiscale.scop_liasse_fiscale_previsionnelle_act_window"
+        )
+        action.update(
+            {
+                "target": "new",
+                "res_id": liasse_id.id,
+                "flags": {"action_buttons": False},
+            }
+        )
+        return action
diff --git a/wizard/scop_membership_liasse_wizard.xml b/wizard/scop_membership_liasse_wizard.xml
new file mode 100644
index 0000000..82dedd2
--- /dev/null
+++ b/wizard/scop_membership_liasse_wizard.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <data>
+
+        <record model="ir.ui.view" id="scop_membership_liasse_wizard_form">
+            <field name="name">scop.membership.liasse.wizard.form</field>
+            <field name="model">scop.membership.liasse.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Effectifs à l'adhésion">
+                    <h3><field name="partner_id" readonly="1" options="{'no_open': True}" /></h3>
+                    <!-- Liasse existante -->
+                    <div
+                        role="alert"
+                        class="alert alert-warning"
+                        colspan="2"
+                        attrs="{'invisible': [('is_financial_data', '=', False)]}"
+                    >
+                        Veuillez sélectionner une liasse existante pour voir les données financières rattachées.
+                        Si une liasse parmi les liasses déjà présentes vous semble valide pour le calcul des cotisations, vous n'avez pas d'action supplémentaire à effectuer.
+                    </div>
+                    <group>
+                        <field name="is_financial_data" invisible="1"/>
+                        <group>
+                            <field
+                                name="liasse_id"
+                                domain="[('partner_id', '=', partner_id)]"
+                                attrs="{'invisible': [('is_financial_data', '=', False)]}"
+                                options="{'no_open': True, 'no_create': True}"
+                            />
+                        </group>
+                        <group>
+
+                        </group>
+                        <group attrs="{'invisible': [('liasse_id', '=', False)]}">
+                            <div colspan="2">
+                                <field name="is_qualified" invisible="1" />
+                                <span
+                                    class="badge badge-pill badge-success"
+                                    attrs="{'invisible': [('is_qualified', '=', False)]}"
+                                >Eligible cotisations</span>
+                            </div>
+                            <field name="year" readonly="1" />
+                            <field name="type_id" readonly="1" />
+                            <field name="source" readonly="1" />
+                            <field name="dureeExercice" readonly="1" />
+                            <field name="L2050_DCLO" readonly="1" />
+                        </group>
+                        <group attrs="{'invisible': [('liasse_id', '=', False)]}">
+                            <field name="currency_id" invisible="1" />
+                            <field name="L2052_FL" string="CA" readonly="1" />
+                            <field name="av_cg" readonly="1" />
+                            <field name="av_lf" readonly="1" />
+                            <field
+                                name="L2052_FY"
+                                readonly="1"
+                                string="Masse Salariale"
+                                widget="monetary"
+                            />
+                            <field
+                                name="L2053_HN"
+                                readonly="1"
+                                string="Bénéfice/Perte"
+                                widget="monetary"
+                            />
+                        </group>
+                        <group string="Simulation cotisations" attrs="{'invisible': [('liasse_id', '=', False)]}">
+                            <field
+                                name="contribution_base_type"
+                                string="Type Assiette"
+                            />
+                            <field
+                                name="contribution_base_amount"
+                                string="Montant Assiette"
+                            />
+                            <field name="contribution_cg" string="Cotisation CG Scop" />
+                        </group>
+                        <group attrs="{'invisible': [('liasse_id', '=', False)]}">
+                            <field name="is_editable" invisible="1"/>
+                            <div
+                                class="text-center"
+                                colspan="2"
+                                attrs="{'invisible': [('is_editable', '=', False)]}"
+                            >
+                                <button
+                                    string="Modifier la liasse prévisionnelle"
+                                    name="update_forecast"
+                                    type="object"
+                                    class="btn btn-outline-info btn-lg"
+                                    style="width: 250px;"
+                                />
+                            </div>
+                            <div
+                                class="text-center"
+                                colspan="2"
+                                attrs="{'invisible': [('is_editable', '=', True)]}"
+                            >
+                                <button
+                                    type="action"
+                                    name="%(cgscop_liasse_fiscale.scop_load_liasse_act_window)d"
+                                    class="btn btn-outline-info btn-lg"
+                                    style="width: 250px;"
+                                >
+                                    Importer une nouvelle liasse
+                                </button>
+                            </div>
+                        </group>
+                    </group>
+                    <!-- Pas de liasse -->
+                    <div
+                        role="alert"
+                        class="alert alert-warning"
+                        attrs="{'invisible': [('is_financial_data', '=', True)]}"
+                    >
+                        Aucune donnée financière n'est à ce jour associée à cette coopérative. Pour poursuivre l'adhésion, il est nécessaire de créer une liasse prévisionnelle ou de saisir une liasse existante.
+                    </div>
+                    <div
+                        class="text-center"
+                        attrs="{'invisible': [('is_financial_data', '=', True)]}"
+                    >
+                        <div
+                            class="btn-group"
+                            role="group"
+                            aria-label="Liasse Fiscales"
+                            style="padding-top: 15px; padding-bottom: 15px;"
+                        >
+                            <button
+                                string="Saisir une liasse prévisionnelle"
+                                name="new_forecast"
+                                type="object"
+                                class="btn btn-outline-info btn-lg"
+                                style="width: 250px;"
+                            />
+                            <button
+                                type="action"
+                                name="%(cgscop_liasse_fiscale.scop_load_liasse_act_window)d"
+                                class="btn btn-outline-info btn-lg"
+                                style="width: 250px;"
+                            >
+                                Importer une liasse
+                            </button>
+                        </div>
+                    </div>
+                    <footer>
+                        <button
+                            name="save_data"
+                            type="object"
+                            string="Sauvegarder"
+                            class="oe_highlight"
+                        />
+                        <button special="cancel" string="Annuler" />
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/wizard/scop_partner_staff_membership_wizard.py b/wizard/scop_membership_staff_wizard.py
similarity index 92%
rename from wizard/scop_partner_staff_membership_wizard.py
rename to wizard/scop_membership_staff_wizard.py
index 06020fc..ae1497e 100644
--- a/wizard/scop_partner_staff_membership_wizard.py
+++ b/wizard/scop_membership_staff_wizard.py
@@ -4,8 +4,8 @@
 from odoo import fields, models
 
 
-class ScopPartnerStaffMembershipWizard(models.TransientModel):
-    _name = "scop.partner.staff.membership.wizard"
+class ScopMembershipStaffWizard(models.TransientModel):
+    _name = "scop.membership.staff.wizard"
     _description = "Wizard: création modification de l'effectif d'adhésion"
 
     # ------------------------------------------------------
diff --git a/wizard/scop_membership_staff_wizard.xml b/wizard/scop_membership_staff_wizard.xml
new file mode 100644
index 0000000..865e30e
--- /dev/null
+++ b/wizard/scop_membership_staff_wizard.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <data>
+
+        <record model="ir.ui.view" id="scop_membership_staff_wizard_form">
+            <field name="name">scop.membership.staff.wizard.form</field>
+            <field name="model">scop.membership.staff.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Effectifs à l'adhésion">
+                    <h5><field name="partner_id" readonly="1" string="Coopérative" options="{'no_open': True}" /></h5>
+                    <group>
+                        <field name="staff_id" readonly="1" invisible="1" />
+                        <field name="effective_date" required="1" string="Date effective de l'information" />
+                        <field name="staff_count" required="1" string="Effectif total" />
+                        <field name="staff_shareholder_count" required="1" />
+                        <field name="staff_shareholder_total" required="1" string="Total associés y compris non salariés" />
+                        <field name="staff_average" required="1" />
+                        <field name="comment" />
+                    </group>
+                    <footer>
+                        <button
+                            name="save_data"
+                            type="object"
+                            string="Sauvegarder"
+                            class="oe_highlight"
+                        />
+                        <button special="cancel" string="Annuler" />
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <record
+            id="scop_membership_staff_wizard_action"
+            model="ir.actions.act_window"
+        >
+            <field name="name">Effectifs à l'adhésion</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">scop.membership.staff.wizard</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/wizard/scop_submit_membership_wizard.py b/wizard/scop_membership_submit_wizard.py
similarity index 90%
rename from wizard/scop_submit_membership_wizard.py
rename to wizard/scop_membership_submit_wizard.py
index 08f0ae1..514b6a8 100644
--- a/wizard/scop_submit_membership_wizard.py
+++ b/wizard/scop_membership_submit_wizard.py
@@ -4,8 +4,8 @@
 from odoo import fields, models
 
 
-class ScopSubmitMembershipWizard(models.TransientModel):
-    _name = "scop.submit.membership.wizard"
+class ScopMembershipSubmitWizard(models.TransientModel):
+    _name = "scop.membership.submit.wizard"
     _description = "Wizard: Confirmer les champs obligatoires l'adhésion"
 
     partner_id = fields.Many2one(
diff --git a/wizard/scop_submit_membership_wizard.xml b/wizard/scop_membership_submit_wizard.xml
similarity index 90%
rename from wizard/scop_submit_membership_wizard.xml
rename to wizard/scop_membership_submit_wizard.xml
index c61b8d1..db1cf9b 100644
--- a/wizard/scop_submit_membership_wizard.xml
+++ b/wizard/scop_membership_submit_wizard.xml
@@ -4,9 +4,9 @@
 <odoo>
     <data>
 
-        <record model="ir.ui.view" id="scop_submit_membership_wizard_form">
-            <field name="name">scop.submit.membership.wizard.form</field>
-            <field name="model">scop.submit.membership.wizard</field>
+        <record model="ir.ui.view" id="scop_membership_submit_wizard_form">
+            <field name="name">scop.membership.submit.wizard.form</field>
+            <field name="model">scop.membership.submit.wizard</field>
             <field name="arch" type="xml">
                 <form string="Confirmer les champs obligatoires">
                     <div
diff --git a/wizard/scop_partner_staff_membership_wizard.xml b/wizard/scop_partner_staff_membership_wizard.xml
deleted file mode 100644
index 2964c5a..0000000
--- a/wizard/scop_partner_staff_membership_wizard.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" ?>
-<!-- Copyright 2021 Le Filament
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-    <data>
-
-        <record model="ir.ui.view" id="scop_partner_staff_membership_wizard_form">
-            <field name="name">scop.partner.staff.membership.wizard.form</field>
-            <field name="model">scop.partner.staff.membership.wizard</field>
-            <field name="arch" type="xml">
-                <form string="Effectifs à l'adhésion">
-                    <h5>Effectifs à l'adhésion</h5>
-                    <hr />
-                    <group>
-                        <group>
-                            <field name="partner_id" readonly="1" />
-                            <field name="staff_id" readonly="1" invisible="1" />
-                            <field name="effective_date" required="1" />
-                        </group>
-                        <group>
-                            <field name="staff_count" required="1" />
-                            <field name="staff_shareholder_count" required="1" />
-                            <field name="staff_shareholder_total" required="1" />
-                            <field name="staff_average" required="1" />
-                        </group>
-                    </group>
-                    <label for="comment" />
-                    <field name="comment" />
-                    <footer>
-                        <button
-                            name="save_data"
-                            type="object"
-                            string="Sauvegarder"
-                            class="oe_highlight"
-                        />
-                        <button special="cancel" string="Annuler" />
-                    </footer>
-                </form>
-            </field>
-        </record>
-
-        <record
-            id="scop_partner_staff_membership_wizard_action"
-            model="ir.actions.act_window"
-        >
-            <field name="name">Effectif à l'adhésion</field>
-            <field name="type">ir.actions.act_window</field>
-            <field name="res_model">scop.partner.staff.membership.wizard</field>
-            <field name="view_mode">form</field>
-            <field name="target">new</field>
-        </record>
-
-    </data>
-</odoo>
-- 
GitLab