Skip to content

Commit 45bdc54

Browse files
authored
Merge pull request #1714 from frappe/mergify/bp/version-15-hotfix/pr-1689
fix(Income Tax Computation): eval locals for Income Tax Slab (backport #1689)
2 parents 2407fc9 + 7d416c3 commit 45bdc54

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

hrms/payroll/report/income_tax_computation/income_tax_computation.py

+28-3
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
)
@@ -423,9 +423,12 @@ def get_applicable_tax(self):
423423
tax_slab = emp_details.get("income_tax_slab")
424424
if tax_slab:
425425
tax_slab = frappe.get_cached_doc("Income Tax Slab", tax_slab)
426-
employee_dict = frappe.get_doc("Employee", emp).as_dict()
426+
eval_globals, eval_locals = self.get_data_for_eval(emp, emp_details)
427427
tax_amount = calculate_tax_by_tax_slab(
428-
emp_details["total_taxable_amount"], tax_slab, eval_globals=None, eval_locals=employee_dict
428+
emp_details["total_taxable_amount"],
429+
tax_slab,
430+
eval_globals=eval_globals,
431+
eval_locals=eval_locals,
429432
)
430433
else:
431434
tax_amount = 0.0
@@ -434,6 +437,28 @@ def get_applicable_tax(self):
434437
tax_amount = rounded(tax_amount)
435438
emp_details["applicable_tax"] = tax_amount
436439

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

0 commit comments

Comments
 (0)