Employee Benefit Application - earning component filter by salary structure flexi component
diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.js b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.js
index 956c1fb..d38af3c 100644
--- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.js
+++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.js
@@ -5,31 +5,28 @@
setup: function(frm) {
frm.set_query("earning_component", "employee_benefits", function() {
return {
- filters: {
- type: "Earning",
- is_flexible_benefit: true,
- is_group: false,
- flexi_default: false,
- disabled: false
- }
+ query : "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_earning_components",
+ filters: {date: frm.doc.date, employee: frm.doc.employee}
};
});
},
employee: function(frm) {
- frappe.call({
- method: "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits",
- args:{
- employee: frm.doc.employee,
- on_date: frm.doc.date
- },
- callback: function (data) {
- if(!data.exc){
- if(data.message){
- frm.set_value("max_benefits", data.message);
+ if(frm.doc.employee && frm.doc.date){
+ frappe.call({
+ method: "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits",
+ args:{
+ employee: frm.doc.employee,
+ on_date: frm.doc.date
+ },
+ callback: function (data) {
+ if(!data.exc){
+ if(data.message){
+ frm.set_value("max_benefits", data.message);
+ }
}
}
- }
- });
+ });
+ }
}
});
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 b5da98e..56b711b 100644
--- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
+++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
@@ -8,6 +8,7 @@
from frappe.utils import nowdate, date_diff, getdate
from frappe.model.document import Document
from erpnext.hr.doctype.payroll_period.payroll_period import get_payroll_period_days
+from frappe.desk.reportview import get_match_cond
class EmployeeBenefitApplication(Document):
def validate(self):
@@ -130,3 +131,25 @@
amount_per_day = amount / payroll_period_days
total_amount = amount_per_day * salary_slip_days
return total_amount
+
+def get_earning_components(doctype, txt, searchfield, start, page_len, filters):
+ if len(filters) < 2:
+ return {}
+ employee = filters['employee']
+ date = filters['date']
+ salary_structure = get_assigned_salary_sturecture(employee, date)
+
+ if len(salary_structure) > 0:
+ query = """select salary_component from `tabSalary Detail` where parent = '{salary_structure}'
+ and is_flexible_benefit = 1
+ order by name"""
+
+ return frappe.db.sql(query.format(**{
+ "salary_structure": salary_structure[0][0],
+ "mcond": get_match_cond(doctype)
+ }), {
+ 'start': start,
+ 'page_len': page_len
+ })
+
+ return {}