From a19207c2f12162aafb19752176dcee412fc0a67b Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Tue, 20 Apr 2021 14:21:25 +0530 Subject: [PATCH] fix: Pass aggregate_on_doctype to properly create the query --- frappe/desk/reportview.py | 13 +++++++------ frappe/public/js/frappe/ui/group_by/group_by.js | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index 3d04c171a7..86f8ec0aa7 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -126,13 +126,14 @@ def setup_group_by(data): if data.group_by: if data.aggregate_function.lower() not in ('count', 'sum', 'avg'): frappe.throw(_('Invalid aggregate function')) - if '`' in data.aggregate_on: - raise_invalid_field(data.aggregate_on) - data.fields.append('{aggregate_function}(`tab{doctype}`.`{aggregate_on}`) AS _aggregate_column'.format(**data)) - if data.aggregate_on: - data.fields.append(data.aggregate_on) - data.pop('aggregate_on') + if frappe.db.has_column(data.aggregate_on_doctype, data.aggregate_on_field): + data.fields.append('{aggregate_function}(`tab{aggregate_on_doctype}`.`{aggregate_on_field}`) AS _aggregate_column'.format(**data)) + else: + raise_invalid_field(data.aggregate_on_field) + + data.pop('aggregate_on_doctype') + data.pop('aggregate_on_field') data.pop('aggregate_function') def raise_invalid_field(fieldname): diff --git a/frappe/public/js/frappe/ui/group_by/group_by.js b/frappe/public/js/frappe/ui/group_by/group_by.js index 53e4914f0d..3ebf9c9d3d 100644 --- a/frappe/public/js/frappe/ui/group_by/group_by.js +++ b/frappe/public/js/frappe/ui/group_by/group_by.js @@ -313,7 +313,8 @@ frappe.ui.GroupBy = class { Object.assign(args, { with_comment_count: false, - aggregate_on: this.aggregate_on || 'name', + aggregate_on_field: this.aggregate_on_field || 'name', + aggregate_on_doctype: this.aggregate_on_doctype || this.doctype, aggregate_function: this.aggregate_function || 'count', group_by: this.report_view.group_by || null, order_by: '_aggregate_column desc',