Manage grouping of salary component for flexible benefit
diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
index c9c2685..a01f6ac 100644
--- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
+++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
@@ -92,13 +92,22 @@
 
 def get_components(employee_benefit_application, salary_slip):
 	salary_components_array = []
+	group_component_amount = {}
 	payroll_period_days = get_payroll_period_days(salary_slip.start_date, salary_slip.end_date, salary_slip.company)
 	for employee_benefit in employee_benefit_application.employee_benefits:
 		if employee_benefit.is_pro_rata_applicable == 1:
 			struct_row = {}
 			salary_components_dict = {}
-			salary_component = frappe.get_doc("Salary Component", employee_benefit.earning_component)
 			amount = get_amount(payroll_period_days, salary_slip.start_date, salary_slip.end_date, employee_benefit.amount)
+			sc = frappe.get_doc("Salary Component", employee_benefit.earning_component)
+			salary_component = sc
+			if sc.earning_component_group and not sc.is_group and not sc.flexi_default:
+				salary_component = frappe.get_doc("Salary Component", sc.earning_component_group)
+				if group_component_amount and group_component_amount.has_key(sc.earning_component_group):
+					group_component_amount[sc.earning_component_group] += amount
+				else:
+					group_component_amount[sc.earning_component_group] = amount
+				amount = group_component_amount[sc.earning_component_group]
 			struct_row['depends_on_lwp'] = salary_component.depends_on_lwp
 			struct_row['salary_component'] = salary_component.name
 			struct_row['abbr'] = salary_component.salary_component_abbr
diff --git a/erpnext/hr/doctype/salary_component/salary_component.js b/erpnext/hr/doctype/salary_component/salary_component.js
index 86203ab..e58a05e 100644
--- a/erpnext/hr/doctype/salary_component/salary_component.js
+++ b/erpnext/hr/doctype/salary_component/salary_component.js
@@ -12,7 +12,15 @@
 					"is_group": 0,
 					"company": d.company
 				}
-			}
-		})
+			};
+		});
+		frm.set_query("earning_component_group", function(frm) {
+			return {
+				filters: {
+					"is_group": 1,
+					"is_flexible_benefit": 1
+				}
+			};
+		});
 	}
-});
\ No newline at end of file
+});
diff --git a/erpnext/hr/doctype/salary_component/salary_component.json b/erpnext/hr/doctype/salary_component/salary_component.json
index 3a9402f..6764e0c 100644
--- a/erpnext/hr/doctype/salary_component/salary_component.json
+++ b/erpnext/hr/doctype/salary_component/salary_component.json
@@ -1001,7 +1001,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-05-15 18:53:09.115910", 
+ "modified": "2018-05-16 12:27:03.005070", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Component",