@@ -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
)
@@ -423,9 +423,12 @@ def get_applicable_tax(self):
423
423
tax_slab = emp_details .get ("income_tax_slab" )
424
424
if tax_slab :
425
425
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 )
427
427
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 ,
429
432
)
430
433
else :
431
434
tax_amount = 0.0
@@ -434,6 +437,28 @@ def get_applicable_tax(self):
434
437
tax_amount = rounded (tax_amount )
435
438
emp_details ["applicable_tax" ] = tax_amount
436
439
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
+
437
462
def get_total_deducted_tax (self ):
438
463
self .add_column ("Total Tax Deducted" )
439
464
0 commit comments