From c0bca6321370961d5d3d63832b0fd3cfad6a458e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <remi@le-filament.com>
Date: Tue, 1 Apr 2025 11:10:14 +0200
Subject: [PATCH] [ADD] multi release button

---
 __manifest__.py                               |  4 +++
 .../src/js/list_multi_release_button.esm.js   | 26 +++++++++++++++++
 static/src/xml/list_multi_release_button.xml  | 20 +++++++++++++
 templates/header_template.xml                 | 29 -------------------
 views/res_partner_release.xml                 |  7 ++---
 wizard/multi_partner_release_wizard.xml       | 13 ++-------
 6 files changed, 55 insertions(+), 44 deletions(-)
 create mode 100644 static/src/js/list_multi_release_button.esm.js
 create mode 100644 static/src/xml/list_multi_release_button.xml
 delete mode 100644 templates/header_template.xml

diff --git a/__manifest__.py b/__manifest__.py
index f8fae2f..0195889 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -28,6 +28,10 @@
         "views/menus.xml",
     ],
     "assets": {
+        "web.assets_backend": [
+            "lefilament_release/static/src/js/list_multi_release_button.esm.js",
+            "lefilament_release/static/src/xml/list_multi_release_button.xml",
+        ],
         "web.assets_frontend": ["lefilament_release/static/src/css/portal.css"],
     },
     "installable": True,
diff --git a/static/src/js/list_multi_release_button.esm.js b/static/src/js/list_multi_release_button.esm.js
new file mode 100644
index 0000000..2f4057d
--- /dev/null
+++ b/static/src/js/list_multi_release_button.esm.js
@@ -0,0 +1,26 @@
+import {ListController} from "@web/views/list/list_controller";
+import {listView} from "@web/views/list/list_view";
+import {registry} from "@web/core/registry";
+
+export class MultiReleaseListController extends ListController {
+    setup() {
+        super.setup();
+    }
+
+    onMultiCustomerClick() {
+        this.actionService.doAction({
+            type: "ir.actions.act_window",
+            res_model: "multi.partner.release.wizard",
+            name: "Saisir pour plusieurs clients",
+            views: [[false, "form"]],
+            target: "new",
+            res_id: false,
+        });
+    }
+}
+
+registry.category("views").add("list_multi_release_button", {
+    ...listView,
+    Controller: MultiReleaseListController,
+    buttonTemplate: "button_multi_release.buttons",
+});
diff --git a/static/src/xml/list_multi_release_button.xml b/static/src/xml/list_multi_release_button.xml
new file mode 100644
index 0000000..b8761d2
--- /dev/null
+++ b/static/src/xml/list_multi_release_button.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<odoo>
+    <t
+        t-name="button_multi_release.buttons"
+        t-inherit="web.ListView.Buttons"
+        t-inherit-mode="primary"
+    >
+        <xpath expr="//div[hasclass('o_list_buttons')]" position="after">
+            <button
+                type="button"
+                class="btn btn-outline-info"
+                style="width: 200px;"
+                tabindex="3"
+                t-on-click="onMultiCustomerClick"
+            >
+                Saisir pour plusieurs clients
+            </button>
+        </xpath>
+    </t>
+</odoo>
diff --git a/templates/header_template.xml b/templates/header_template.xml
deleted file mode 100644
index a60722d..0000000
--- a/templates/header_template.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<odoo>
-    <template id="header_template" name="lefilament_release.header_template">
-        <div id="release" style="background-color: #fff; padding: 16px 0">
-            <div class="container">
-                <div class="row">
-                    <div class="col-12 text-center">
-                        <div
-                            class="btn-group"
-                            role="group"
-                            aria-label="Releases"
-                            style="padding-top: 5px; padding-bottom: 5px;"
-                        >
-                            <a
-                                type="action"
-                                name="%(lefilament_release.multi_partner_release_wizard_act_window)d"
-                                class="btn btn-outline-info"
-                                style="width: 250px;"
-                                tabindex="4"
-                            >
-                                Saisir pour plusieurs clients
-                            </a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </template>
-</odoo>
diff --git a/views/res_partner_release.xml b/views/res_partner_release.xml
index 65999aa..69189bc 100644
--- a/views/res_partner_release.xml
+++ b/views/res_partner_release.xml
@@ -66,10 +66,10 @@
                                 options="{'string': 'Copier le lien'}"
                             />
                         </group>
-                        <hr colspan="12" />
+                        <hr colspan="2" />
                         <label for="description" class="font-weight-bold" />
                         <field name="description" />
-                        <hr colspan="12" />
+                        <hr colspan="2" />
                         <label for="release_module_ids" class="font-weight-bold" />
                         <field name="release_module_ids">
                             <list editable="top">
@@ -93,8 +93,7 @@
         <field name="name">res.partner.release.tree</field>
         <field name="model">res.partner.release</field>
         <field name="arch" type="xml">
-            <!-- TODO: make JS action to create releases for multiple customers -->
-            <list>
+            <list js_class="list_multi_release_button">
                 <field name="release_date" />
                 <field name="user_id" />
                 <field name="partner_id" />
diff --git a/wizard/multi_partner_release_wizard.xml b/wizard/multi_partner_release_wizard.xml
index 8eff0d3..5d223c8 100644
--- a/wizard/multi_partner_release_wizard.xml
+++ b/wizard/multi_partner_release_wizard.xml
@@ -24,10 +24,10 @@
                         />
                         <field name="create_date" string="Créé le" />
                     </group>
-                    <hr />
+                    <hr colspan="2" />
                     <label for="description" class="font-weight-bold" />
                     <field name="description" />
-                    <hr />
+                    <hr colspan="2" />
                     <label for="release_module_ids" class="font-weight-bold" />
                     <field name="release_module_ids">
                         <list editable="top">
@@ -52,13 +52,4 @@
             </form>
         </field>
     </record>
-
-    <!-- Action Window -->
-    <record id="multi_partner_release_wizard_act_window" model="ir.actions.act_window">
-        <field name="name">Releases Client</field>
-        <field name="type">ir.actions.act_window</field>
-        <field name="res_model">multi.partner.release.wizard</field>
-        <field name="view_mode">form</field>
-        <field name="target">new</field>
-    </record>
 </odoo>
-- 
GitLab