From 8b54d45d1a28809a295ab8d102c0eb178c367ec1 Mon Sep 17 00:00:00 2001 From: krantheman Date: Mon, 11 Dec 2023 13:12:05 +0530 Subject: [PATCH 1/2] fix: including current document while looking for existing Additional Salaries with Overwrite Amount enabled (cherry picked from commit 3d9b61bef9cb0198a69016643c3b535eafc5fc96) --- hrms/payroll/doctype/additional_salary/additional_salary.py | 1 + 1 file changed, 1 insertion(+) diff --git a/hrms/payroll/doctype/additional_salary/additional_salary.py b/hrms/payroll/doctype/additional_salary/additional_salary.py index 9a1cc28cfa..eee0063351 100644 --- a/hrms/payroll/doctype/additional_salary/additional_salary.py +++ b/hrms/payroll/doctype/additional_salary/additional_salary.py @@ -120,6 +120,7 @@ def validate_duplicate_additional_salary(self): existing_additional_salary = frappe.db.exists( "Additional Salary", { + "name": ["!=", self.name], "salary_component": self.salary_component, "payroll_date": self.payroll_date, "overwrite_salary_structure_amount": 1, From a67971630a139358189f06a1fe89dd2f0531203e Mon Sep 17 00:00:00 2001 From: krantheman Date: Mon, 11 Dec 2023 14:35:58 +0530 Subject: [PATCH 2/2] test: Overwrite Salary Structure Amount (cherry picked from commit 0df5142082da7bb67f99aca80281027db8c49f81) --- .../test_additional_salary.py | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/hrms/payroll/doctype/additional_salary/test_additional_salary.py b/hrms/payroll/doctype/additional_salary/test_additional_salary.py index f3e084b31e..24d0927ecc 100644 --- a/hrms/payroll/doctype/additional_salary/test_additional_salary.py +++ b/hrms/payroll/doctype/additional_salary/test_additional_salary.py @@ -101,18 +101,38 @@ def test_non_recurring_additional_salary(self): self.assertIsNone(amount) self.assertIsNone(salary_component) + def test_overwrite_salary_structure_amount(self): + emp_id = make_employee("test_additional@salary.com") + + # Salary Structure created with HRA Salary Component amount as 3000 + salary_structure = make_salary_structure( + "Test Salary Structure Additional Salary", "Monthly", employee=emp_id + ) + self.assertEqual(salary_structure.earnings[1].amount, 3000) + + date = nowdate() + + # this will overwrite HRA Salary Component amount as 5000 + get_additional_salary( + emp_id, recurring=False, payroll_date=date, salary_component="HRA", overwrite_salary_structure=1 + ) + salary_slip = make_salary_slip(salary_structure.name, employee=emp_id, posting_date=date) + self.assertEqual(salary_slip.earnings[1].amount, 5000) + -def get_additional_salary(emp_id, recurring=True, payroll_date=None): +def get_additional_salary( + emp_id, recurring=True, payroll_date=None, salary_component=None, overwrite_salary_structure=0 +): create_salary_component("Recurring Salary Component") add_sal = frappe.new_doc("Additional Salary") add_sal.employee = emp_id - add_sal.salary_component = "Recurring Salary Component" + add_sal.salary_component = salary_component or "Recurring Salary Component" add_sal.is_recurring = 1 if recurring else 0 add_sal.from_date = add_days(nowdate(), -50) add_sal.to_date = add_days(nowdate(), 180) add_sal.payroll_date = payroll_date - add_sal.overwrite_salary_structure_amount = 0 + add_sal.overwrite_salary_structure_amount = overwrite_salary_structure add_sal.amount = 5000 add_sal.currency = erpnext.get_default_currency()