Employee Benefit Application - earning component filter by salary structure flexi component

This commit is contained in:
Jamsheer 2018-05-22 11:39:04 +05:30
parent 77a91f0d01
commit 43e191289c
2 changed files with 39 additions and 19 deletions

View File

@ -5,31 +5,28 @@ frappe.ui.form.on('Employee Benefit Application', {
setup: function(frm) { setup: function(frm) {
frm.set_query("earning_component", "employee_benefits", function() { frm.set_query("earning_component", "employee_benefits", function() {
return { return {
filters: { query : "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_earning_components",
type: "Earning", filters: {date: frm.doc.date, employee: frm.doc.employee}
is_flexible_benefit: true,
is_group: false,
flexi_default: false,
disabled: false
}
}; };
}); });
}, },
employee: function(frm) { employee: function(frm) {
frappe.call({ if(frm.doc.employee && frm.doc.date){
method: "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits", frappe.call({
args:{ method: "erpnext.hr.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits",
employee: frm.doc.employee, args:{
on_date: frm.doc.date employee: frm.doc.employee,
}, on_date: frm.doc.date
callback: function (data) { },
if(!data.exc){ callback: function (data) {
if(data.message){ if(!data.exc){
frm.set_value("max_benefits", data.message); if(data.message){
frm.set_value("max_benefits", data.message);
}
} }
} }
} });
}); }
} }
}); });

View File

@ -8,6 +8,7 @@ from frappe import _
from frappe.utils import nowdate, date_diff, getdate from frappe.utils import nowdate, date_diff, getdate
from frappe.model.document import Document from frappe.model.document import Document
from erpnext.hr.doctype.payroll_period.payroll_period import get_payroll_period_days from erpnext.hr.doctype.payroll_period.payroll_period import get_payroll_period_days
from frappe.desk.reportview import get_match_cond
class EmployeeBenefitApplication(Document): class EmployeeBenefitApplication(Document):
def validate(self): 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 amount_per_day = amount / payroll_period_days
total_amount = amount_per_day * salary_slip_days total_amount = amount_per_day * salary_slip_days
return total_amount 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 {}