diff --git a/erpnext/hr/report/salary_register/salary_register.js b/erpnext/hr/report/salary_register/salary_register.js index 794dcb5b6d..c99d002ec2 100644 --- a/erpnext/hr/report/salary_register/salary_register.js +++ b/erpnext/hr/report/salary_register/salary_register.js @@ -4,10 +4,17 @@ frappe.query_reports["Salary Register"] = { "filters": [ { - "fieldname":"date_range", - "label": __("Date Range"), - "fieldtype": "DateRange", - "default": [frappe.datetime.add_months(frappe.datetime.get_today(),-1), frappe.datetime.get_today()], + "fieldname":"from_date", + "label": __("From"), + "fieldtype": "Date", + "default": frappe.datetime.add_months(frappe.datetime.get_today(),-1), + "reqd": 1 + }, + { + "fieldname":"to_date", + "label": __("To"), + "fieldtype": "Date", + "default": frappe.datetime.get_today(), "reqd": 1 }, { diff --git a/erpnext/hr/report/salary_register/salary_register.py b/erpnext/hr/report/salary_register/salary_register.py index 8b93182d34..2599b5007c 100644 --- a/erpnext/hr/report/salary_register/salary_register.py +++ b/erpnext/hr/report/salary_register/salary_register.py @@ -9,6 +9,8 @@ from frappe import _ def execute(filters=None): if not filters: filters = {} salary_slips = get_salary_slips(filters) + if not salary_slips: return [], [] + columns, earning_types, ded_types = get_columns(salary_slips) ss_earning_map = get_ss_earning_map(salary_slips) ss_ded_map = get_ss_ded_map(salary_slips) @@ -23,7 +25,7 @@ def execute(filters=None): if not ss.department == None: columns[4] = columns[4].replace('-1','120') if not ss.designation == None: columns[5] = columns[5].replace('-1','120') if not ss.leave_withut_pay == None: columns[9] = columns[9].replace('-1','130') - + for e in earning_types: row.append(ss_earning_map.get(ss.name, {}).get(e)) @@ -53,7 +55,7 @@ def get_columns(salary_slips): _("Department") + ":Link/Department:-1", _("Designation") + ":Link/Designation:-1", _("Company") + ":Link/Company:120", _("Start Date") + "::80", _("End Date") + "::80", _("Leave Without Pay") + ":Float:-1", _("Payment Days") + ":Float:120" - ] + ] salary_components = {_("Earning"): [], _("Deduction"): []} @@ -70,20 +72,17 @@ def get_columns(salary_slips): return columns, salary_components[_("Earning")], salary_components[_("Deduction")] def get_salary_slips(filters): - filters.update({"from_date": filters.get("date_range")[0], "to_date":filters.get("date_range")[1]}) + filters.update({"from_date": filters.get("from_date"), "to_date":filters.get("to_date")}) conditions, filters = get_conditions(filters) salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where docstatus = 1 %s order by employee""" % conditions, filters, as_dict=1) - if not salary_slips: - frappe.throw(_("No salary slip found between {0} and {1}").format( - filters.get("from_date"), filters.get("to_date"))) - return salary_slips + return salary_slips or [] def get_conditions(filters): conditions = "" - if filters.get("date_range"): conditions += " and start_date >= %(from_date)s" - if filters.get("date_range"): conditions += " and end_date <= %(to_date)s" + if filters.get("from_date"): conditions += " and start_date >= %(from_date)s" + if filters.get("to_date"): conditions += " and end_date <= %(to_date)s" if filters.get("company"): conditions += " and company = %(company)s" if filters.get("employee"): conditions += " and employee = %(employee)s"