From 2d6901d5dc75bd70e1245c32696be8615dabe95b Mon Sep 17 00:00:00 2001 From: Jamsheer Date: Tue, 15 May 2018 12:36:12 +0530 Subject: [PATCH] Employee Benefit Application - validate max benefit amount for component --- .../employee_benefit_application.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py index 061eb12f72..edc7288259 100644 --- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py +++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py @@ -11,6 +11,21 @@ from frappe.model.document import Document class EmployeeBenefitApplication(Document): def before_submit(self): self.validate_duplicate_on_payroll_period() + self.validate_max_benefit_for_component() + + def validate_max_benefit_for_component(self): + if self.employee_benefits: + for employee_benefit in self.employee_benefits: + self.validate_max_benefit(employee_benefit.earning_component) + + def validate_max_benefit(self, earning_component_name): + max_benefit_amount = frappe.db.get_value("Salary Component", earning_component_name, "max_benefit_amount") + benefit_amount = 0 + for employee_benefit in self.employee_benefits: + if employee_benefit.earning_component == earning_component_name: + benefit_amount += employee_benefit.amount + if benefit_amount > max_benefit_amount: + frappe.throw(_("Maximum benefit amount of component {0} exceeds {1}").format(earning_component_name, max_benefit_amount)) def validate_duplicate_on_payroll_period(self): application = frappe.db.exists(