diff --git a/energy_selfconsumption/__init__.py b/energy_selfconsumption/__init__.py
index aee8895e7a319f82c43a3230c05bc9fe3ba58d89..4ba79402084324083a9dd48c484d021467cbdb99 100644
--- a/energy_selfconsumption/__init__.py
+++ b/energy_selfconsumption/__init__.py
@@ -1,2 +1,3 @@
 from . import models
 from . import wizards
+from . import controllers
diff --git a/energy_selfconsumption/__manifest__.py b/energy_selfconsumption/__manifest__.py
index f684b7a0153e1fe9907e620f8d78d932e7056855..37e48c7e7ca44dba4129aaa3f37e1abb77d43d67 100644
--- a/energy_selfconsumption/__manifest__.py
+++ b/energy_selfconsumption/__manifest__.py
@@ -28,6 +28,7 @@
         "views/res_partner_views.xml",
         "views/distribution_table_views.xml",
         "views/supply_point_assignation_views.xml",
+        "views/report_wizard_view.xml",
         "wizards/selfconsumption_import_wizard_views.xml",
         "wizards/distribution_table_import_wizard_views.xml",
         "reports/selfconsumption_reports.xml",
diff --git a/energy_selfconsumption/controllers/__init__.py b/energy_selfconsumption/controllers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e046e49fbe22a4768c49bca1ed4cc0b0487c66c3
--- /dev/null
+++ b/energy_selfconsumption/controllers/__init__.py
@@ -0,0 +1 @@
+from . import controllers
diff --git a/energy_selfconsumption/controllers/controllers.py b/energy_selfconsumption/controllers/controllers.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4c9d0c4b137a14a05e589098e6143d88eda4419
--- /dev/null
+++ b/energy_selfconsumption/controllers/controllers.py
@@ -0,0 +1,18 @@
+from odoo import http
+from odoo.http import request
+
+
+class ReportController(http.Controller):
+    @http.route("/energy_selfconsumption/download_report", type="http", auth="user")
+    def download_report(self, **kw):
+        wizard = request.env["energy_selfconsumption.report_wizard"].browse(
+            int(kw.get("id"))
+        )
+        content = wizard.report_data
+        return request.make_response(
+            content,
+            [
+                ("Content-Type", "application/text"),
+                ("Content-Disposition", "attachment; filename=" + wizard.file_name),
+            ],
+        )
diff --git a/energy_selfconsumption/models/selfconsumption.py b/energy_selfconsumption/models/selfconsumption.py
index 002452af8b74acbc38c34118182a4dd231627808..9c874683f24dad60d4fdd38b68e2c00981669292 100644
--- a/energy_selfconsumption/models/selfconsumption.py
+++ b/energy_selfconsumption/models/selfconsumption.py
@@ -45,8 +45,6 @@ class Selfconsumption(models.Model):
         "energy_project.inscription", "project_id", readonly=True
     )
     inscription_count = fields.Integer(compute=_compute_inscription_count)
-    report_file = fields.Binary(string="Report File", attachment=True)
-    report_file_name = fields.Char(string="Report File Name")
 
     def get_distribution_tables(self):
         self.ensure_one()
@@ -141,20 +139,24 @@ class Selfconsumption(models.Model):
                         "coefficient": assignation.coefficient,
                     }
                 )
+
         file_content = ""
         for data in report_data:
             line = f"{data['code']};{str(data['coefficient']).replace('.', ',')}\n"
             file_content += line
-        txt_file = io.BytesIO(file_content.encode())
-        file_name = "Coeficiente de reparto.txt"
-        self.write(
-            {
-                "report_file": base64.b64encode(txt_file.getvalue()),
-                "report_file_name": file_name,
-            }
+
+        wizard = self.env["energy_selfconsumption.report_wizard"].create(
+            {"report_data": file_content, "file_name": "Coeficiente_de_reparto.txt"}
         )
+
         return {
-            "type": "ir.actions.act_url",
-            "url": f"web/content/{self._name}/{self.id}/report_file/{file_name}?download=true",
+            "name": _("Download Partition Coefficient"),
+            "type": "ir.actions.act_window",
+            "res_model": "energy_selfconsumption.report_wizard",
+            "view_mode": "form",
+            "view_id": self.env.ref(
+                "energy_selfconsumption.view_energy_selfconsumption_report_wizard_form"
+            ).id,
+            "res_id": wizard.id,
             "target": "new",
         }
diff --git a/energy_selfconsumption/security/ir.model.access.csv b/energy_selfconsumption/security/ir.model.access.csv
index 96bb5295f1ebe1c7308db50e6102f6538655d4f1..2c6ebce772d96c440da3778d775fadd1c0ea3a5a 100644
--- a/energy_selfconsumption/security/ir.model.access.csv
+++ b/energy_selfconsumption/security/ir.model.access.csv
@@ -9,3 +9,5 @@ access_energy_selfconsumption_distribution_table_admin,energy_selfconsumption.di
 access_energy_selfconsumption_supply_point_assignation_admin,energy_selfconsumption.supply_point_assignation.admin,model_energy_selfconsumption_supply_point_assignation,energy_project.group_admin,1,1,1,1
 access_energy_selfconsumption_selfconsumption_import_wizard_admin,energy_selfconsumption.selfconsumption_import.wizard.admin,model_energy_selfconsumption_selfconsumption_import_wizard,energy_project.group_admin,1,1,1,1
 access_energy_selfconsumption_distribution_table_import_wizard_admin,energy_selfconsumption.distribution_table_import.wizard.admin,model_energy_selfconsumption_distribution_table_import_wizard,energy_project.group_admin,1,1,1,1
+access_energy_selfconsumption_report_wizard_user,energy_selfconsumption.report_wizard.user,model_energy_selfconsumption_report_wizard,energy_project.group_user,1,0,0,0
+access_energy_selfconsumption_report_wizard_admin,energy_selfconsumption.report_wizard.admin,model_energy_selfconsumption_report_wizard,energy_project.group_admin,1,1,1,1
diff --git a/energy_selfconsumption/views/report_wizard_view.xml b/energy_selfconsumption/views/report_wizard_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4dcaabd1ec776db36cb04b11168c69bdc441d2f8
--- /dev/null
+++ b/energy_selfconsumption/views/report_wizard_view.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <record id="view_energy_selfconsumption_report_wizard_form" model="ir.ui.view">
+        <field name="name">energy_selfconsumption.report_wizard.form</field>
+        <field name="model">energy_selfconsumption.report_wizard</field>
+        <field name="arch" type="xml">
+            <form string="Generate Partition Coefficient Report">
+                <group>
+                    <field name="report_data" readonly="1" />
+                    <field name="file_name" readonly="1" />
+                </group>
+                <footer>
+                    <button
+            string="Download Report"
+            class="btn-primary"
+            type="object"
+            name="download_report"
+          />
+                    <button string="Close" class="btn-secondary" special="cancel" />
+                </footer>
+            </form>
+        </field>
+    </record>
+
+    <record
+    id="action_energy_selfconsumption_report_wizard"
+    model="ir.actions.act_window"
+  >
+        <field name="name">Generate Partition Coefficient Report</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">energy_selfconsumption.report_wizard</field>
+        <field name="view_mode">form</field>
+        <field name="view_id" ref="view_energy_selfconsumption_report_wizard_form" />
+    </record>
+
+    <menuitem
+    name="Generate Partition Coefficient Report"
+    id="menu_energy_selfconsumption_report_wizard"
+    action="action_energy_selfconsumption_report_wizard"
+  />
+</odoo>
diff --git a/energy_selfconsumption/wizards/__init__.py b/energy_selfconsumption/wizards/__init__.py
index c2a09fbb5700199ada0a25086dcd1d0ff1c10990..1a0ecf2f6852e1b57b369ec3324e16d49fc45b66 100644
--- a/energy_selfconsumption/wizards/__init__.py
+++ b/energy_selfconsumption/wizards/__init__.py
@@ -1,2 +1,3 @@
 from . import selfconsumption_import_wizard
 from . import distribution_table_import_wizard
+from . import report_wizard
diff --git a/energy_selfconsumption/wizards/report_wizard.py b/energy_selfconsumption/wizards/report_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..f64dea42d84e9e03fc9080e9d99e87012140e551
--- /dev/null
+++ b/energy_selfconsumption/wizards/report_wizard.py
@@ -0,0 +1,18 @@
+from odoo import _, api, fields, models
+
+
+class ReportWizard(models.TransientModel):
+    _name = "energy_selfconsumption.report_wizard"
+    _description = "Generate Partition Coefficient Report"
+
+    report_data = fields.Text("Report Data", readonly=True)
+    file_name = fields.Char("File Name", readonly=True)
+    file_data = fields.Binary("File", readonly=True)
+
+    def download_report(self):
+        url = "/energy_selfconsumption/download_report?id=%s" % self.id
+        return {
+            "type": "ir.actions.act_url",
+            "url": url,
+            "target": "self",
+        }