Fix: if there is no component
diff --git a/erpnext/payroll/report/income_tax_deductions/income_tax_deductions.py b/erpnext/payroll/report/income_tax_deductions/income_tax_deductions.py
index 3bad587..8a79416 100644
--- a/erpnext/payroll/report/income_tax_deductions/income_tax_deductions.py
+++ b/erpnext/payroll/report/income_tax_deductions/income_tax_deductions.py
@@ -6,8 +6,8 @@
from frappe import _
def execute(filters=None):
- columns = get_columns(filters)
data = get_data(filters)
+ columns = get_columns(filters) if len(data) else []
return columns, data
@@ -78,8 +78,11 @@
if filters.get("company"):
conditions.append("sal.company = '%s' " % (filters["company"]) )
- if filters.get("period"):
- conditions.append("month(sal.start_date) = '%s' " % (filters["period"]))
+ if filters.get("month"):
+ conditions.append("month(sal.start_date) = '%s' " % (filters["month"]))
+
+ if filters.get("year"):
+ conditions.append("year(start_date) = '%s' " % (filters["year"]))
return " and ".join(conditions)
@@ -96,6 +99,9 @@
component_types = [comp_type[0] for comp_type in component_types]
+ if not len(component_types):
+ return []
+
conditions = get_conditions(filters)
entry = frappe.db.sql(""" select sal.employee, sal.employee_name, sal.posting_date, ded.salary_component, ded.amount,sal.gross_pay
diff --git a/erpnext/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.py b/erpnext/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.py
index 073bd91..d09745c 100644
--- a/erpnext/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.py
+++ b/erpnext/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.py
@@ -84,9 +84,11 @@
if filters.get("company"):
conditions.append("company = '%s' " % (filters["company"]) )
- if filters.get("period"):
- conditions.append("month(start_date) = '%s' " % (filters["period"]))
- conditions.append("year(start_date) = '%s' " % (frappe.utils.getdate().year))
+ if filters.get("month"):
+ conditions.append("month(start_date) = '%s' " % (filters["month"]))
+
+ if filters.get("year"):
+ conditions.append("year(start_date) = '%s' " % (filters["year"]))
return " and ".join(conditions)
diff --git a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py b/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py
index 900fe96..acde68a 100644
--- a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py
+++ b/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py
@@ -7,8 +7,8 @@
from erpnext.regional.report.provident_fund_deductions.provident_fund_deductions import get_conditions
def execute(filters=None):
- columns = get_columns(filters)
data = get_data(filters)
+ columns = get_columns(filters) if len(data) else []
return columns, data
@@ -45,6 +45,9 @@
component_type_dict = frappe._dict(frappe.db.sql(""" select name, component_type from `tabSalary Component`
where component_type = 'Professional Tax' """))
+ if not len(component_type_dict):
+ return []
+
conditions = get_conditions(filters)
entry = frappe.db.sql(""" select sal.employee, sal.employee_name, ded.salary_component, ded.amount
diff --git a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py b/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py
index 9f58957..a79931c 100644
--- a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py
+++ b/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py
@@ -6,8 +6,8 @@
from frappe import _
def execute(filters=None):
- columns = get_columns(filters)
data = get_data(filters)
+ columns = get_columns(filters) if len(data) else []
return columns, data
@@ -71,10 +71,13 @@
conditions.append("sal.branch = '%s' " % (filters["branch"]) )
if filters.get("company"):
- conditions.append("sal.company = '%s' " % (filters["company"]) )
+ conditions.append("sal.company = '%s' " % (filters["company"]))
- if filters.get("period"):
- conditions.append("month(sal.start_date) = '%s' " % (filters["period"]))
+ if filters.get("month"):
+ conditions.append("month(sal.start_date) = '%s' " % (filters["month"]))
+
+ if filters.get("year"):
+ conditions.append("year(start_date) = '%s' " % (filters["year"]))
if filters.get("mode_of_payment"):
conditions.append("sal.mode_of_payment = '%s' " % (filters["mode_of_payment"]))
@@ -114,6 +117,9 @@
component_type_dict = frappe._dict(frappe.db.sql(""" select name, component_type from `tabSalary Component`
where component_type in ('Provident Fund', 'Additional Provident Fund', 'Provident Fund Loan')"""))
+ if not len(component_type_dict):
+ return []
+
entry = frappe.db.sql(""" select sal.name, sal.employee, sal.employee_name, ded.salary_component, ded.amount
from `tabSalary Slip` sal, `tabSalary Detail` ded
where sal.name = ded.parent
@@ -150,4 +156,12 @@
data.append(employee)
- return data
\ No newline at end of file
+ return data
+
+@frappe.whitelist()
+def get_years():
+ year_list = frappe.db.sql_list("""select distinct YEAR(end_date) from `tabSalary Slip` ORDER BY YEAR(end_date) DESC""")
+ if not year_list:
+ year_list = [getdate().year]
+
+ return "\n".join(str(year) for year in year_list)
\ No newline at end of file