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>