fixes issue #9013: Salary calculation Error. (#9044)
* fixes issue #9013:
Salary calculation Error.
* adds test case for scenario as in #9013
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index e18fc27..1cee022 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -91,7 +91,7 @@
frappe.throw(_("Name error: {0}".format(err)))
except SyntaxError as err:
frappe.throw(_("Syntax error in formula or condition: {0}".format(err)))
- except Exception, e:
+ except Exception as e:
frappe.throw(_("Error in formula or condition: {0}".format(e)))
raise
@@ -330,11 +330,18 @@
frappe.throw(_("Please set the Date Of Joining for employee {0}").format(frappe.bold(self.employee_name)))
for d in self.get(component_type):
- if self.salary_structure and ((cint(d.depends_on_lwp) == 1 and not self.salary_slip_based_on_timesheet) or\
- getdate(self.start_date) < joining_date or getdate(self.end_date) > relieving_date):
+ if (self.salary_structure and
+ cint(d.depends_on_lwp) and
+ (not
+ self.salary_slip_based_on_timesheet or
+ getdate(self.start_date) < joining_date or
+ getdate(self.end_date) > relieving_date
+ )):
- d.amount = rounded((flt(d.default_amount) * flt(self.payment_days)
- / cint(self.total_working_days)), self.precision("amount", component_type))
+ d.amount = rounded(
+ (flt(d.default_amount) * flt(self.payment_days)
+ / cint(self.total_working_days)), self.precision("amount", component_type)
+ )
elif not self.payment_days and not self.salary_slip_based_on_timesheet:
d.amount = 0
elif not d.amount: