[fix] duplicate columns in monthly salary report #6623
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
index 33f3784..2c6cf72 100644
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
+++ b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
@@ -38,25 +38,25 @@
 	columns = [
 		_("Salary Slip ID") + ":Link/Salary Slip:150",_("Employee") + ":Link/Employee:120", _("Employee Name") + "::140", _("Branch") + ":Link/Branch:120",
 		_("Department") + ":Link/Department:120", _("Designation") + ":Link/Designation:120",
-		 _("Company") + ":Link/Company:120", _("Month") + "::80", _("Leave Without Pay") + ":Float:130", 
+		_("Company") + ":Link/Company:120", _("Month") + "::80", _("Leave Without Pay") + ":Float:130",
 		_("Payment Days") + ":Float:120"
 	]
 	
-	earning_types = frappe.db.sql_list("""select distinct salary_component from `tabSalary Detail`
-		where amount != 0 and parent in (%s)""" % 
-		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]))
-		
-	ded_types = frappe.db.sql_list("""select distinct salary_component from `tabSalary Detail`
-		where amount != 0 and parent in (%s)""" % 
-		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]))
-		
-	columns = columns + [(e + ":Currency:120") for e in earning_types] + \
-		["Arrear Amount:Currency:120", "Leave Encashment Amount:Currency:150", 
-		"Gross Pay:Currency:120"] + [(d + ":Currency:120") for d in ded_types] + \
-		["Total Deduction:Currency:120", "Net Pay:Currency:120"]
+	salary_components = {_("Earning"): [], _("Deduction"): []}
 
-	return columns, earning_types, ded_types
-	
+	for component in frappe.db.sql("""select distinct sd.salary_component, sc.type
+		from `tabSalary Detail` sd, `tabSalary Component` sc
+		where sc.name=sd.salary_component and sd.amount != 0 and sd.parent in (%s)""" %
+		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1):
+		salary_components[component.type].append(component.salary_component)
+
+	columns = columns + [(e + ":Currency:120") for e in salary_components[_("Earning")]] + \
+		[ _("Arrear Amount") + ":Currency:120", _("Leave Encashment Amount") + ":Currency:150",
+		_("Gross Pay") + ":Currency:120"] + [(d + ":Currency:120") for d in salary_components[_("Deduction")]] + \
+		[_("Total Deduction") + ":Currency:120", _("Net Pay") + ":Currency:120"]
+
+	return columns, salary_components[_("Earning")], salary_components[_("Deduction")]
+
 def get_salary_slips(filters):
 	conditions, filters = get_conditions(filters)
 	salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where docstatus = 1 %s