[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