From c9287b5b886c5b3a83c578cbd149e6a53d3cfbd5 Mon Sep 17 00:00:00 2001 From: Jamsheer Date: Wed, 16 May 2018 15:13:20 +0530 Subject: [PATCH] Manage grouping of salary component for flexible benefit --- .../employee_benefit_application.py | 11 ++++++++++- .../doctype/salary_component/salary_component.js | 14 +++++++++++--- .../doctype/salary_component/salary_component.json | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) 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 c9c2685a90..a01f6ac385 100644 --- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py +++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py @@ -92,13 +92,22 @@ def get_employee_benefit_application(salary_slip): def get_components(employee_benefit_application, salary_slip): salary_components_array = [] + group_component_amount = {} payroll_period_days = get_payroll_period_days(salary_slip.start_date, salary_slip.end_date, salary_slip.company) for employee_benefit in employee_benefit_application.employee_benefits: if employee_benefit.is_pro_rata_applicable == 1: struct_row = {} salary_components_dict = {} - salary_component = frappe.get_doc("Salary Component", employee_benefit.earning_component) amount = get_amount(payroll_period_days, salary_slip.start_date, salary_slip.end_date, employee_benefit.amount) + sc = frappe.get_doc("Salary Component", employee_benefit.earning_component) + salary_component = sc + if sc.earning_component_group and not sc.is_group and not sc.flexi_default: + salary_component = frappe.get_doc("Salary Component", sc.earning_component_group) + if group_component_amount and group_component_amount.has_key(sc.earning_component_group): + group_component_amount[sc.earning_component_group] += amount + else: + group_component_amount[sc.earning_component_group] = amount + amount = group_component_amount[sc.earning_component_group] struct_row['depends_on_lwp'] = salary_component.depends_on_lwp struct_row['salary_component'] = salary_component.name struct_row['abbr'] = salary_component.salary_component_abbr diff --git a/erpnext/hr/doctype/salary_component/salary_component.js b/erpnext/hr/doctype/salary_component/salary_component.js index 86203ab44e..e58a05e754 100644 --- a/erpnext/hr/doctype/salary_component/salary_component.js +++ b/erpnext/hr/doctype/salary_component/salary_component.js @@ -12,7 +12,15 @@ frappe.ui.form.on('Salary Component', { "is_group": 0, "company": d.company } - } - }) + }; + }); + frm.set_query("earning_component_group", function(frm) { + return { + filters: { + "is_group": 1, + "is_flexible_benefit": 1 + } + }; + }); } -}); \ No newline at end of file +}); diff --git a/erpnext/hr/doctype/salary_component/salary_component.json b/erpnext/hr/doctype/salary_component/salary_component.json index 3a9402f080..6764e0ca92 100644 --- a/erpnext/hr/doctype/salary_component/salary_component.json +++ b/erpnext/hr/doctype/salary_component/salary_component.json @@ -1001,7 +1001,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-05-15 18:53:09.115910", + "modified": "2018-05-16 12:27:03.005070", "modified_by": "Administrator", "module": "HR", "name": "Salary Component",