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 33f3784bc73..2c6cf72bda9 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 @@ def get_columns(salary_slips): 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"): []} + + 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")] - return columns, earning_types, ded_types - def get_salary_slips(filters): conditions, filters = get_conditions(filters) salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where docstatus = 1 %s