From 9086b8ea36858dec37d182852db86de5cfe47c3d Mon Sep 17 00:00:00 2001 From: ravibharathi656 Date: Tue, 20 Jan 2026 13:01:59 +0530 Subject: [PATCH] fix(sales analytics): add curve filter (cherry picked from commit c2995f6800f6bdcd462590e2908837a7c590afb3) # Conflicts: # erpnext/selling/report/sales_analytics/sales_analytics.js # erpnext/selling/report/sales_analytics/sales_analytics.py --- .../report/sales_analytics/sales_analytics.js | 7 ++++++ .../report/sales_analytics/sales_analytics.py | 24 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.js b/erpnext/selling/report/sales_analytics/sales_analytics.js index 7c89be801db..cb2cd34aaa5 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.js +++ b/erpnext/selling/report/sales_analytics/sales_analytics.js @@ -90,12 +90,19 @@ frappe.query_reports["Sales Analytics"] = { label: __("Curves"), fieldtype: "Select", options: [ +<<<<<<< HEAD { value: "select", label: __("Select") }, +======= +>>>>>>> c2995f6800 (fix(sales analytics): add curve filter) { value: "all", label: __("All") }, { value: "non-zeros", label: __("Non-Zeros") }, { value: "total", label: __("Total Only") }, ], +<<<<<<< HEAD default: "select", +======= + default: "all", +>>>>>>> c2995f6800 (fix(sales analytics): add curve filter) reqd: 1, }, { diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.py b/erpnext/selling/report/sales_analytics/sales_analytics.py index f20f78d741d..c42abf271fd 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.py +++ b/erpnext/selling/report/sales_analytics/sales_analytics.py @@ -529,6 +529,7 @@ class Analytics: labels = [d.get("label") for d in self.columns[1 : length - 1]] datasets = [] +<<<<<<< HEAD if self.filters.curves != "select": for curve in self.data: data = { @@ -552,6 +553,29 @@ class Analytics: datasets[0]["name"] = _("Total") else: datasets.append(data) +======= + for curve in self.data: + data = { + "name": curve.get("entity_name", curve["entity"]), + "values": [curve.get(scrub(label), 0) for label in labels], + } + if self.filters.curves == "non-zeros" and not sum(data["values"]): + continue + elif self.filters.curves == "total" and "indent" in curve: + if curve["indent"] == 0: + datasets.append(data) + elif self.filters.curves == "total": + if datasets: + a = [ + data["values"][idx] + datasets[0]["values"][idx] for idx in range(len(data["values"])) + ] + datasets[0]["values"] = a + else: + datasets.append(data) + datasets[0]["name"] = _("Total") + else: + datasets.append(data) +>>>>>>> c2995f6800 (fix(sales analytics): add curve filter) self.chart = {"data": {"labels": labels, "datasets": datasets}, "type": "line"}