From 43e191289cde9d18cb21ed21ad5e6f0515f1d630 Mon Sep 17 00:00:00 2001 From: Jamsheer Date: Tue, 22 May 2018 11:39:04 +0530 Subject: [PATCH] Employee Benefit Application - earning component filter by salary structure flexi component --- .../employee_benefit_application.js | 35 +++++++++---------- .../employee_benefit_application.py | 23 ++++++++++++ 2 files changed, 39 insertions(+), 19 deletions(-) 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 956c1fb402..d38af3cb57 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 @@ frappe.ui.form.on('Employee Benefit Application', { 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 b5da98ef5f..56b711bccc 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 import _ 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 @@ def get_amount(payroll_period_days, start_date, end_date, amount): 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 {}