From d741bf85a2c4a82ff8f091c4fc6dfb75d3ff5a9c Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Wed, 11 Oct 2023 12:45:37 +0200
Subject: [PATCH] [ADD] update liasse button wizard for admin

---
 __manifest__.py                      |  1 +
 models/scop_bordereau_cg.py          |  2 +-
 security/ir.model.access.csv         |  1 +
 views/scop_bordereau_cg.xml          |  8 +++++
 wizard/__init__.py                   |  1 +
 wizard/scop_update_liasse_wizard.py  | 49 ++++++++++++++++++++++++++++
 wizard/scop_update_liasse_wizard.xml | 44 +++++++++++++++++++++++++
 7 files changed, 105 insertions(+), 1 deletion(-)
 create mode 100644 wizard/scop_update_liasse_wizard.py
 create mode 100644 wizard/scop_update_liasse_wizard.xml

diff --git a/__manifest__.py b/__manifest__.py
index 26c7db0..d69c844 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -48,6 +48,7 @@
         "wizard/scop_cotisation_cg_wizard.xml",
         "wizard/scop_bordereau_update_confirm_view.xml",
         "wizard/scop_bordereau_validate_confirm_view.xml",
+        "wizard/scop_update_liasse_wizard.xml",
         # Wizard dependency view
         "views/scop_bordereau_cg.xml",
         # Menus
diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index ff14234..5944e68 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -55,7 +55,7 @@ class Bordereau(models.Model):
     liasse_fiscale_id = fields.Many2one(
         comodel_name="scop.liasse.fiscale",
         string="Liasse fiscale de référence",
-        readonly=True,
+        domain="[('partner_id', '=', partner_id), ('is_qualified', '=', True)]",
         tracking=1,
     )
     liasse_count = fields.Integer(
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 4fc53d6..2add3e9 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -20,3 +20,4 @@ access_export_journal_cg_wizard,access_export_journal_cg_wizard,model_export_jou
 access_scop_bordereau_change_liasse_wizard,access_scop_bordereau_change_liasse_wizard,model_scop_bordereau_change_liasse_wizard,base.group_user,1,1,1,1
 access_scop_bordereau_change_payment_mode_wizard,access_scop_bordereau_change_payment_mode_wizard,model_scop_bordereau_change_payment_mode_wizard,base.group_user,1,1,1,1
 access_account_banking_mandate_change_bordereau_wizard,access_account_banking_mandate_change_bordereau_wizard,model_account_banking_mandate_change_bordereau_wizard,cgscop_cotisation_cg.group_cotisation_cg_administrative,1,1,1,1
+access_scop_update_liasse_wizard,access_scop_update_liasse_wizard,model_scop_update_liasse_wizard,cgscop_partner.group_cg_administrator,1,1,1,1
diff --git a/views/scop_bordereau_cg.xml b/views/scop_bordereau_cg.xml
index d8de854..62a9ad7 100644
--- a/views/scop_bordereau_cg.xml
+++ b/views/scop_bordereau_cg.xml
@@ -77,6 +77,13 @@
                             type="action"
                             states="new,validated"
                         />
+                        <button
+                            name="%(cgscop_cotisation_cg.scop_update_liasse_wizard_act_window)d"
+                            string="Modifier la liasse"
+                            type="action"
+                            states="validated,paid"
+                            groups="base.group_no_one,cgscop_partner.group_cg_administrator"
+                        />
                     </header>
                     <sheet>
                         <div class="oe_button_box" name="button_box">
@@ -211,6 +218,7 @@
                                 >Pas de liasse fiscale pour le calcul</span>
                                 <field
                                     name="liasse_fiscale_id"
+                                    readonly="1"
                                     attrs="{'invisible': [('liasse_fiscale_id', '=', False)]}"
                                 />
                                 <field
diff --git a/wizard/__init__.py b/wizard/__init__.py
index 5abd851..e1b93bb 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -12,3 +12,4 @@ from . import scop_bordereau_update_confirm
 from . import scop_bordereau_validate_confirm
 from . import scop_cotisation_cg_regul
 from . import scop_cotisation_cg_wizard
+from . import scop_update_liasse_wizard
diff --git a/wizard/scop_update_liasse_wizard.py b/wizard/scop_update_liasse_wizard.py
new file mode 100644
index 0000000..0a06b21
--- /dev/null
+++ b/wizard/scop_update_liasse_wizard.py
@@ -0,0 +1,49 @@
+# Copyright 2020 Le Filament
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from odoo import api, fields, models
+
+
+class ScopUpdateLiasseWizard(models.TransientModel):
+    _name = "scop.update.liasse.wizard"
+    _description = "Modification de la liasse des cotisations"
+
+    bordereau_id = fields.Many2one(
+        comodel_name="scop.bordereau",
+        string="Bordereau",
+        readonly=True,
+    )
+    partner_id = fields.Many2one(
+        comodel_name="res.partner",
+        string="Adhérent",
+        readonly=True,
+    )
+    liasse_fiscale_id = fields.Many2one(
+        comodel_name="scop.liasse.fiscale",
+        string="Liasse Fiscale de référence",
+        domain="[('partner_id', '=', partner_id), ('is_qualified', '=', True)]",
+    )
+
+    # ------------------------------------------------------
+    # Override ORM
+    # ------------------------------------------------------
+    @api.model
+    def default_get(self, fields):
+        res = super(ScopUpdateLiasseWizard, self).default_get(fields)
+        bordereau_id = self.env["scop.bordereau"].browse(
+            self.env.context.get("active_id")
+        )
+        res.update(
+            {
+                "bordereau_id": bordereau_id.id,
+                "partner_id": bordereau_id.partner_id.id,
+                "liasse_fiscale_id": bordereau_id.liasse_fiscale_id.id,
+            }
+        )
+        return res
+
+    # ------------------------------------------------------
+    # Action
+    # ------------------------------------------------------
+    def update_liasse(self):
+        self.bordereau_id.update({"liasse_fiscale_id": self.liasse_fiscale_id})
diff --git a/wizard/scop_update_liasse_wizard.xml b/wizard/scop_update_liasse_wizard.xml
new file mode 100644
index 0000000..322da61
--- /dev/null
+++ b/wizard/scop_update_liasse_wizard.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <!--  Copyright 2020 Le Filament
+          License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).  -->
+    <data>
+
+        <record id="scop_update_liasse_wizard_form_view" model="ir.ui.view">
+            <field name="name">scop.update.liasse.wizard.form</field>
+            <field name="model">scop.update.liasse.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Modification Liasse">
+                    <sheet>
+                        <group>
+                            <field name="bordereau_id" readonly="1" />
+                            <field name="partner_id" readonly="1" />
+                            <field
+                                name="liasse_fiscale_id"
+                                options="{'no_create': 1, 'no_edit': 1}"
+                            />
+                        </group>
+                    </sheet>
+                    <footer>
+                        <button
+                            name="update_liasse"
+                            type="object"
+                            string="Mettre à jour la liasse"
+                            class="oe_highlight"
+                        />
+                        <button string="Annuler" special="cancel" class="oe_link" />
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <record id="scop_update_liasse_wizard_act_window" model="ir.actions.act_window">
+            <field name="name">Mise à jour de la liasse</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">scop.update.liasse.wizard</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+    </data>
+</odoo>
-- 
GitLab