diff --git a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py index 3b736282cf..904513c39f 100644 --- a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py +++ b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py @@ -199,31 +199,39 @@ def get_mode_of_payment_details(filters): invoice_list = get_invoices(filters) invoice_list_names = ",".join('"' + invoice['name'] + '"' for invoice in invoice_list) if invoice_list: - inv_mop_detail = frappe.db.sql("""select a.owner, a.posting_date, - ifnull(b.mode_of_payment, '') as mode_of_payment, sum(b.base_amount) as paid_amount - from `tabSales Invoice` a, `tabSales Invoice Payment` b - where a.name = b.parent - and a.docstatus = 1 - and a.name in ({invoice_list_names}) - group by a.owner, a.posting_date, mode_of_payment - union - select a.owner,a.posting_date, - ifnull(b.mode_of_payment, '') as mode_of_payment, sum(b.base_paid_amount) as paid_amount - from `tabSales Invoice` a, `tabPayment Entry` b,`tabPayment Entry Reference` c - where a.name = c.reference_name - and b.name = c.parent - and b.docstatus = 1 - and a.name in ({invoice_list_names}) - group by a.owner, a.posting_date, mode_of_payment - union - select a.owner, a.posting_date, - ifnull(a.voucher_type,'') as mode_of_payment, sum(b.credit) - from `tabJournal Entry` a, `tabJournal Entry Account` b - where a.name = b.parent - and a.docstatus = 1 - and b.reference_type = "Sales Invoice" - and b.reference_name in ({invoice_list_names}) - group by a.owner, a.posting_date, mode_of_payment + inv_mop_detail = frappe.db.sql(""" + select t.owner, + t.posting_date, + t.mode_of_payment, + sum(t.paid_amount) as paid_amount + from ( + select a.owner, a.posting_date, + ifnull(b.mode_of_payment, '') as mode_of_payment, sum(b.base_amount) as paid_amount + from `tabSales Invoice` a, `tabSales Invoice Payment` b + where a.name = b.parent + and a.docstatus = 1 + and a.name in ({invoice_list_names}) + group by a.owner, a.posting_date, mode_of_payment + union + select a.owner,a.posting_date, + ifnull(b.mode_of_payment, '') as mode_of_payment, sum(c.allocated_amount) as paid_amount + from `tabSales Invoice` a, `tabPayment Entry` b,`tabPayment Entry Reference` c + where a.name = c.reference_name + and b.name = c.parent + and b.docstatus = 1 + and a.name in ({invoice_list_names}) + group by a.owner, a.posting_date, mode_of_payment + union + select a.owner, a.posting_date, + ifnull(a.voucher_type,'') as mode_of_payment, sum(b.credit) + from `tabJournal Entry` a, `tabJournal Entry Account` b + where a.name = b.parent + and a.docstatus = 1 + and b.reference_type = "Sales Invoice" + and b.reference_name in ({invoice_list_names}) + group by a.owner, a.posting_date, mode_of_payment + ) t + group by t.owner, t.posting_date, t.mode_of_payment """.format(invoice_list_names=invoice_list_names), as_dict=1) inv_change_amount = frappe.db.sql("""select a.owner, a.posting_date, @@ -231,7 +239,7 @@ def get_mode_of_payment_details(filters): from `tabSales Invoice` a, `tabSales Invoice Payment` b where a.name = b.parent and a.name in ({invoice_list_names}) - and b.mode_of_payment = 'Cash' + and b.type = 'Cash' and a.base_change_amount > 0 group by a.owner, a.posting_date, mode_of_payment""".format(invoice_list_names=invoice_list_names), as_dict=1) diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.js b/erpnext/selling/report/sales_analytics/sales_analytics.js index 6b03c7d92f..d527e42ea4 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.js +++ b/erpnext/selling/report/sales_analytics/sales_analytics.js @@ -82,62 +82,42 @@ frappe.query_reports["Sales Analytics"] = { const tree_type = frappe.query_report.filters[0].value; if (data_doctype != tree_type) return; - row_name = data[2].content; - length = data.length; - - if (tree_type == "Customer") { - row_values = data - .slice(4, length - 1) - .map(function (column) { - return column.content; - }); - } else if (tree_type == "Item") { - row_values = data - .slice(5, length - 1) - .map(function (column) { - return column.content; - }); - } else { - row_values = data - .slice(3, length - 1) - .map(function (column) { - return column.content; - }); - } - - entry = { - name: row_name, - values: row_values, - }; - - let raw_data = frappe.query_report.chart.data; - let new_datasets = raw_data.datasets; - - let element_found = new_datasets.some((element, index, array)=>{ - if(element.name == row_name){ - array.splice(index, 1) - return true + const row_name = data[2].content; + const raw_data = frappe.query_report.chart.data; + const new_datasets = raw_data.datasets; + const element_found = new_datasets.some( + (element, index, array) => { + if (element.name == row_name) { + array.splice(index, 1); + return true; + } + return false; } - return false - }) + ); + const slice_at = { Customer: 4, Item: 5 }[tree_type] || 3; if (!element_found) { - new_datasets.push(entry); + new_datasets.push({ + name: row_name, + values: data + .slice(slice_at, data.length - 1) + .map(column => column.content), + }); } - let new_data = { + const new_data = { labels: raw_data.labels, datasets: new_datasets, }; - chart_options = { + + frappe.query_report.render_chart({ data: new_data, type: "line", - }; - frappe.query_report.render_chart(chart_options); + }); frappe.query_report.raw_chart_data = new_data; }, }, }); }, -} +};