From c124e90a89e526d5050f02f4c4992dd956fd3638 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 17 Jun 2026 13:19:08 +0530 Subject: [PATCH] fix(postgres): satisfy strict GROUP BY in Total Stock Summary report Wrap the non-aggregated, functionally-dependent column(s) in Max()/Min() (or add them to GROUP BY) so the report's grouped query is valid under PostgreSQL's strict GROUP BY. No behaviour change on MariaDB. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../report/total_stock_summary/total_stock_summary.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/erpnext/stock/report/total_stock_summary/total_stock_summary.py b/erpnext/stock/report/total_stock_summary/total_stock_summary.py index 4848c216e81..9d6bda685d5 100644 --- a/erpnext/stock/report/total_stock_summary/total_stock_summary.py +++ b/erpnext/stock/report/total_stock_summary/total_stock_summary.py @@ -4,7 +4,7 @@ import frappe from frappe import _ -from frappe.query_builder.functions import Sum +from frappe.query_builder.functions import Max, Sum def execute(filters=None): @@ -53,8 +53,9 @@ def get_total_stock(filters): else: query = query.select(wh.company).groupby(wh.company) - query = query.select(item.item_code, item.description, Sum(bin.actual_qty).as_("actual_qty")).groupby( - item.item_code - ) + # description is constant per grouped item_code -> Max() keeps the GROUP BY valid on postgres + query = query.select( + item.item_code, Max(item.description).as_("description"), Sum(bin.actual_qty).as_("actual_qty") + ).groupby(item.item_code) return query.run()