diff --git a/erpnext/accounts/doctype/account/account.json b/erpnext/accounts/doctype/account/account.json
index 876a392..460c025 100644
--- a/erpnext/accounts/doctype/account/account.json
+++ b/erpnext/accounts/doctype/account/account.json
@@ -640,7 +640,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:(((doc.account_type==\"Income Account\") || (doc.account_type==\"Expense Account\")) && (doc.is_group != 1))", 
+   "depends_on": "eval:(doc.report_type == 'Profit and Loss' && !doc.is_group)", 
    "fieldname": "include_in_gross", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -678,7 +678,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2019-02-08 11:30:46.790603", 
+ "modified": "2019-03-04 14:42:07.208893", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Account", 
diff --git a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
index a0432db..6550981 100644
--- a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
+++ b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py
@@ -26,9 +26,9 @@
 	columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
 
 
-	gross_income = get_revenue(income, period_list, 'gross')
+	gross_income = get_revenue(income, period_list)
 
-	gross_expense = get_revenue(expense, period_list, 'gross')
+	gross_expense = get_revenue(expense, period_list)
 
 	if(len(gross_income)==0 and len(gross_expense)== 0):
 		data.append({"account_name": "'" + _("Nothing is included in gross") + "'",
@@ -49,11 +49,11 @@
 	gross_profit = get_profit(gross_income, gross_expense, period_list, filters.company, 'Gross Profit',filters.presentation_currency)
 	data.append(gross_profit)
 
-	non_gross_income = get_revenue(income, period_list, 'non_gross')
+	non_gross_income = get_revenue(income, period_list, 0)
 	data.append({})
 	data.extend(non_gross_income or [])
 
-	non_gross_expense = get_revenue(expense, period_list, 'non_gross')
+	non_gross_expense = get_revenue(expense, period_list, 0)
 	data.append({})
 	data.extend(non_gross_expense or [])
 
@@ -63,21 +63,17 @@
 
 	return columns, data
 
-def get_revenue(data, period_list, revenue_type):
+def get_revenue(data, period_list, include_in_gross=1):
+	revenue = [item for item in data if item['include_in_gross']==include_in_gross or item['is_group']==1]
 
-	if revenue_type == 'gross':
-		revenue = [item for item in data if item['include_in_gross']==1 or item['is_group']==1]
-	elif revenue_type == 'non_gross':
-		revenue = [item for item in data if item['include_in_gross']==0 or item['is_group']==1]
-
-	revenue, status = remove_parent_with_no_child(revenue, period_list)
-	while status == "data to be removed":
-		revenue, status = remove_parent_with_no_child(revenue, period_list)
+	data_to_be_removed =True
+	while data_to_be_removed:
+		revenue, data_to_be_removed = remove_parent_with_no_child(revenue, period_list)
 	revenue = adjust_account(revenue, period_list)
 	return copy.deepcopy(revenue)
 
 def remove_parent_with_no_child(data, period_list):
-	status = "nothing to remove"
+	data_to_be_removed = False
 	for parent in data:
 		if 'is_group' in parent and parent.get("is_group") == 1:
 			have_child = False
@@ -87,10 +83,10 @@
 					break
 
 			if not have_child:
-				status = "data to be removed"
+				data_to_be_removed = True
 				data.remove(parent)
 
-	return data, status
+	return data, data_to_be_removed
 
 def adjust_account(data, period_list, consolidated= False):
 	leaf_nodes = [item for item in data if item['is_group'] == 0]
@@ -127,7 +123,7 @@
 
 	for period in period_list:
 		key = period if consolidated else period.key
-		profit_loss[key] = flt(gross_income[0][key] if len(gross_income) else 0) - flt(gross_expense[0][key] if len(gross_expense) else 0)
+		profit_loss[key] = flt(gross_income[0].get(key, 0)) - flt(gross_expense[0].get(key, 0))
 
 		if profit_loss[key]:
 			has_value=True
@@ -147,8 +143,8 @@
 
 	for period in period_list:
 		key = period if consolidated else period.key
-		total_income = flt(gross_income[0][key] if len(gross_income) else 0) + flt(non_gross_income[0][key] if len(non_gross_income) else 0)
-		total_expense = flt(gross_expense[0][key] if len(gross_expense) else 0) + flt(non_gross_expense[0][key] if len(non_gross_expense) else 0)
+		total_income = flt(gross_income[0].get(key, 0)) + flt(non_gross_income[0].get(key, 0))
+		total_expense = flt(gross_expense[0].get(key, 0)) + flt(non_gross_expense[0].get(key, 0))
 		profit_loss[key] = flt(total_income) - flt(total_expense)
 
 		if profit_loss[key]:
