fix: Return data as dict if the report is grouped by Invoice
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 6d8623c..b260279 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -41,14 +41,35 @@
 
 	columns = get_columns(group_wise_columns, filters)
 
-	for src in gross_profit_data.grouped_data:
-		row = []
-		for col in group_wise_columns.get(scrub(filters.group_by)):
-			row.append(src.get(col))
+	if filters.group_by == 'Invoice':
+		column_names = get_column_names()
 
-		row.append(filters.currency)
-		data.append(row)
+		for src in gross_profit_data.si_list:	
+			row = frappe._dict()
+			row['currency'] = filters.currency
 
+			for col in group_wise_columns.get(scrub(filters.group_by)):
+				row[column_names[col]] = src.get(col)
+
+			if row.item_code:
+				row.indent = 1.0
+				row.parent_invoice = src.parent_invoice
+			else:
+				row.indent = 0.0
+				row.parent_invoice = ''
+
+			data.append(row)
+
+	else:
+		for src in gross_profit_data.grouped_data:		
+			row = []
+			row.append(filters.currency)
+
+			for col in group_wise_columns.get(scrub(filters.group_by)):
+				row.append(src.get(col))
+
+			data.append(row)
+	
 	return columns, data
 
 def get_columns(group_wise_columns, filters):
@@ -91,12 +112,38 @@
 
 	return columns
 
+def get_column_names():
+	return frappe._dict({
+		'parent': 'sales_invoice',     
+		'customer': 'customer', 
+		'customer_group': 'customer_group', 
+		'posting_date': 'posting_date', 
+		'item_code': 'item_code', 
+		'item_name': 'item_name', 
+		'item_group': 'item_group', 
+		'brand': 'brand', 
+		'description': 'description', 
+		'warehouse': 'warehouse', 
+		'qty': 'qty', 
+		'base_rate': 'avg._selling_rate', 
+		'buying_rate': 'valuation_rate', 
+		'base_amount': 'selling_amount', 
+		'buying_amount': 'buying_amount', 
+		'gross_profit': 'gross_profit', 
+		'gross_profit_percent': 'gross_profit_%', 
+		'project': 'project'
+	})
+
 class GrossProfitGenerator(object):
 	def __init__(self, filters=None):
 		self.data = []
 		self.average_buying_rate = {}
 		self.filters = frappe._dict(filters)
 		self.load_invoice_items()
+
+		# if filters.group_by == 'Invoice':
+		# 	self.group_items_by_invoice()
+
 		self.load_stock_ledger_entries()
 		self.load_product_bundle()
 		self.load_non_stock_items()