@@ -160,7 +160,7 @@ def get_last_salary_slip(self, employee):
160
160
"docstatus" : 1 ,
161
161
"start_date" : ["between" , [self .payroll_period_start_date , self .payroll_period_end_date ]],
162
162
},
163
- ["start_date" , "end_date" , "salary_structure" , "payroll_frequency" ],
163
+ ["name" , " start_date" , "end_date" , "salary_structure" , "payroll_frequency" ],
164
164
order_by = "start_date desc" ,
165
165
as_dict = 1 ,
166
166
)
@@ -421,12 +421,12 @@ def get_applicable_tax(self):
421
421
tax_slab = emp_details .get ("income_tax_slab" )
422
422
if tax_slab :
423
423
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 )
425
425
tax_amount = calculate_tax_by_tax_slab (
426
426
emp_details ["total_taxable_amount" ],
427
427
tax_slab ,
428
- eval_globals = None ,
429
- eval_locals = employee_dict ,
428
+ eval_globals = eval_globals ,
429
+ eval_locals = eval_locals ,
430
430
)
431
431
else :
432
432
tax_amount = 0.0
@@ -435,6 +435,28 @@ def get_applicable_tax(self):
435
435
tax_amount = rounded (tax_amount )
436
436
emp_details ["applicable_tax" ] = tax_amount
437
437
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
+
438
460
def get_total_deducted_tax (self ):
439
461
self .add_column ("Total Tax Deducted" )
440
462
0 commit comments