feat: Compute year_to_date
diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.py b/erpnext/payroll/doctype/salary_slip/salary_slip.py
index 20365b1..27de46a 100644
--- a/erpnext/payroll/doctype/salary_slip/salary_slip.py
+++ b/erpnext/payroll/doctype/salary_slip/salary_slip.py
@@ -35,6 +35,9 @@
def autoname(self):
self.name = make_autoname(self.series)
+ def before_save(self):
+ self.compute_year_to_date()
+
def validate(self):
self.status = self.get_status()
self.validate_dates()
@@ -1125,6 +1128,26 @@
self.gross_pay += self.earnings[i].amount
self.net_pay = flt(self.gross_pay) - flt(self.total_deduction)
+ def compute_year_to_date(self):
+ year_to_date = 0
+ fiscal_year = frappe.get_list('Fiscal Year',
+ fields = ['year','year_start_date','year_end_date'],
+ filters= {'year_start_date' : ['<=', self.start_date],
+ 'year_end_date' : ['>=', self.end_date]
+ })[0]
+ salary_slips_from_current_fiscal_year = frappe.get_list('Salary Slip',
+ fields = ['employee_name', 'start_date', 'end_date', 'net_pay'],
+ filters = {'employee_name' : self.employee_name,
+ 'start_date' : ['>=', fiscal_year.year_start_date],
+ 'end_date' : ['<=', fiscal_year.year_end_date]
+ })
+
+ for salary_slip in salary_slips_from_current_fiscal_year:
+ year_to_date += salary_slip.net_pay
+
+ year_to_date += self.net_pay
+ self.year_to_date = year_to_date
+
def unlink_ref_doc_from_salary_slip(ref_no):
linked_ss = frappe.db.sql_list("""select name from `tabSalary Slip`
where journal_entry=%s and docstatus < 2""", (ref_no))
@@ -1135,4 +1158,4 @@
def generate_password_for_pdf(policy_template, employee):
employee = frappe.get_doc("Employee", employee)
- return policy_template.format(**employee.as_dict())
+ return policy_template.format(**employee.as_dict())
\ No newline at end of file