Skip to content

Commit e1d6118

Browse files
authored
Merge pull request #1689 from krantheman/fix-income-tax-computation
fix(Income Tax Computation): eval locals for Income Tax Slab
2 parents 2db78b6 + bd55a52 commit e1d6118

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

hrms/payroll/report/income_tax_computation/income_tax_computation.py

+26-4
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def get_last_salary_slip(self, employee):
160160
"docstatus": 1,
161161
"start_date": ["between", [self.payroll_period_start_date, self.payroll_period_end_date]],
162162
},
163-
["start_date", "end_date", "salary_structure", "payroll_frequency"],
163+
["name", "start_date", "end_date", "salary_structure", "payroll_frequency"],
164164
order_by="start_date desc",
165165
as_dict=1,
166166
)
@@ -421,12 +421,12 @@ def get_applicable_tax(self):
421421
tax_slab = emp_details.get("income_tax_slab")
422422
if tax_slab:
423423
tax_slab = frappe.get_cached_doc("Income Tax Slab", tax_slab)
424-
employee_dict = frappe.get_doc("Employee", emp).as_dict()
424+
eval_globals, eval_locals = self.get_data_for_eval(emp, emp_details)
425425
tax_amount = calculate_tax_by_tax_slab(
426426
emp_details["total_taxable_amount"],
427427
tax_slab,
428-
eval_globals=None,
429-
eval_locals=employee_dict,
428+
eval_globals=eval_globals,
429+
eval_locals=eval_locals,
430430
)
431431
else:
432432
tax_amount = 0.0
@@ -435,6 +435,28 @@ def get_applicable_tax(self):
435435
tax_amount = rounded(tax_amount)
436436
emp_details["applicable_tax"] = tax_amount
437437

438+
def get_data_for_eval(self, emp: str, emp_details: dict) -> tuple:
439+
last_ss = self.get_last_salary_slip(emp)
440+
441+
if last_ss:
442+
salary_slip = frappe.get_cached_doc("Salary Slip", last_ss.name)
443+
else:
444+
salary_slip = frappe.new_doc("Salary Slip")
445+
salary_slip.employee = emp
446+
salary_slip.salary_structure = emp_details.salary_structure
447+
salary_slip.start_date = self.payroll_period_start_date
448+
salary_slip.payroll_frequency = frappe.db.get_value(
449+
"Salary Structure", emp_details.salary_structure, "payroll_frequency"
450+
)
451+
salary_slip.end_date = get_start_end_dates(
452+
salary_slip.payroll_frequency, salary_slip.start_date
453+
).end_date
454+
salary_slip.process_salary_structure()
455+
456+
eval_locals, __ = salary_slip.get_data_for_eval()
457+
458+
return salary_slip.whitelisted_globals, eval_locals
459+
438460
def get_total_deducted_tax(self):
439461
self.add_column("Total Tax Deducted")
440462

0 commit comments

Comments
 (0)