From 78fdd5d9b43061cd9be8da84973e8aaa30487f8e Mon Sep 17 00:00:00 2001 From: Anurag Mishra Date: Wed, 28 Oct 2020 15:46:51 +0530 Subject: [PATCH] fix: update status on salary Slip submission --- erpnext/payroll/doctype/gratuity/gratuity.py | 7 ++----- .../doctype/salary_slip/salary_slip.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/erpnext/payroll/doctype/gratuity/gratuity.py b/erpnext/payroll/doctype/gratuity/gratuity.py index 0693583c88..db353e9d71 100644 --- a/erpnext/payroll/doctype/gratuity/gratuity.py +++ b/erpnext/payroll/doctype/gratuity/gratuity.py @@ -14,11 +14,8 @@ class Gratuity(Document): data = calculate_work_experience_and_amount(self.employee, self.gratuity_rule) self.current_work_experience = data["current_work_experience"] self.amount = data["amount"] - - def before_submit(self): - self.status = "Unpaid" - if self.pay_via_salary_slip: - self.status = "Paid" + if self.docstatus == 1: + self.status = "Unpaid" def on_submit(self): self.create_additional_salary() diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.py b/erpnext/payroll/doctype/salary_slip/salary_slip.py index 20365b191d..68147269b3 100644 --- a/erpnext/payroll/doctype/salary_slip/salary_slip.py +++ b/erpnext/payroll/doctype/salary_slip/salary_slip.py @@ -74,9 +74,27 @@ class SalarySlip(TransactionBase): if (frappe.db.get_single_value("Payroll Settings", "email_salary_slip_to_employee")) and not frappe.flags.via_payroll_entry: self.email_salary_slip() + self.update_payment_status_for_gratuity() + + def update_payment_status_for_gratuity(self): + add_salary = frappe.db.get_all("Additional Salary", + filters = { + "payroll_date": ("BETWEEN", [self.start_date, self.end_date]), + "employee": self.employee, + "ref_doctype": "Gratuity", + "docstatus": 1, + }, fields = ["ref_docname", "name"])[0] + + status = "Paid" if self.docstatus == 1 else "Unpaid" + + + if add_salary and add_salary.name in [data.additional_salary for data in self.earnings]: + frappe.db.set_value("Gratuity", add_salary.ref_docname, "status", status) + def on_cancel(self): self.set_status() self.update_status() + self.update_payment_status_for_gratuity() self.cancel_loan_repayment_entry() def on_trash(self): @@ -566,6 +584,7 @@ class SalarySlip(TransactionBase): for d in self.get(key): if d.salary_component == struct_row.salary_component: component_row = d + if not component_row or (struct_row.get("is_additional_component") and not overwrite): if amount: self.append(key, {