diff --git a/controllers/main.py b/controllers/main.py
index 7464927517051852ef98c0d6478beb47777f8f4d..18def2422d68d88b9bc69531f8192a3de1d402a9 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -174,3 +174,34 @@ class CustomerPortal(CustomerPortal):
)
return vals
+
+ @http.route(
+ ["/chart/export_cdc"],
+ type="http",
+ auth="user",
+ methods=["GET"],
+ website=True,
+ csrf=False,
+ )
+ def chart_export_cdc(
+ self,
+ operation_id=None,
+ partner_id=None,
+ prm_id=None,
+ start_date=None,
+ end_date=None,
+ data_type=None,
+ **kw,
+ ):
+ """
+ This route is called :
+ - When click on button export
+ """
+ operation = request.env["acc.operation"].sudo().browse(int(operation_id))
+ file_values = operation.export_cdc(
+ start_date, end_date, partner_id, prm_id, data_type
+ )
+
+ return request.make_response(
+ file_values.get("data"), headers=file_values.get("headers")
+ )
diff --git a/static/src/js/operation_chart.js b/static/src/js/operation_chart.js
index ee70055e775aa984d5c3122daaab19fc839721a7..8749de3d05fdad7fdd03faf5b78c268568ea93cf 100644
--- a/static/src/js/operation_chart.js
+++ b/static/src/js/operation_chart.js
@@ -11,6 +11,7 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
selector: ".operation_chart",
events: {
"click .btn-period": "_onBtnPeriodClick",
+ "click #export-data": "_onBtnExportClick",
"click #previous-period": "_onPreviousPeriod",
"click #next-period": "_onNextPeriod",
"change select[name='endpoint']": "_onChangePrm",
@@ -652,10 +653,27 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
"</h3>";
title_cdc.replaceWith(title_upd);
}
+
self._updateDataTemplate(data);
});
},
+ _exportChartData: function (title_name) {
+
+ var self = this;
+ var url = "/chart/export_cdc?operation_id=" + self.operation;
+ url = url + "&start_date=" + self.first_day;
+ url = url + "&end_date=" + self.last_day;
+ url = url + "&data_type=" + self.data_type
+ if(self.partner_id) {
+ url = url + "&partner_id=" + self.partner_id;
+ }
+ if(self.prm_id) {
+ url = url + "&prm_id=" + self.prm_id
+ }
+ window.open(url, "_blank")
+ },
+
_updateDataTemplate: function (data) {
var self = this;
@@ -748,6 +766,10 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
this._updateChartData(this.title_name);
},
+ _onBtnExportClick: function (ev) {
+ this._exportChartData(this.title_name);
+ },
+
_onChangePrm: function (ev) {
var selected = $(ev.currentTarget).find("option:selected");
this.title_name = selected.data("name");
diff --git a/templates/operation_templates_page.xml b/templates/operation_templates_page.xml
index 7f77670ebff9de205892c3cc1e4f07db1c5d9ce6..fb91347694c32e4738b77e7233ed495fc7c89f51 100644
--- a/templates/operation_templates_page.xml
+++ b/templates/operation_templates_page.xml
@@ -198,7 +198,7 @@
class="col-10 col-xl-5 align-self-center mt-4 mt-lg-0"
t-if="partners"
>
- <div class="prm-selection align-items-center d-flex">
+ <div class="prm-selection align-items-between justify-content-around d-flex">
<select
class="form-select"
aria-label="prm-selection"
@@ -248,6 +248,10 @@
</t>
</t>
</select>
+ <a href="#" title="Export" target="_blank" class="fa fa-cloud-download btn btn-primary" id="export-data" >
+ Exporter les<br/> données
+ </a>
+
</div>
</div>
</div>