diff --git a/erpnext/hr/doctype/additional_salary/additional_salary.json b/erpnext/hr/doctype/additional_salary/additional_salary.json index 91bcdc394a..bf9d8192d0 100644 --- a/erpnext/hr/doctype/additional_salary/additional_salary.json +++ b/erpnext/hr/doctype/additional_salary/additional_salary.json @@ -163,7 +163,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2020-03-05 18:54:17.763244", + "modified": "2020-03-02 18:06:29.170878", "modified_by": "Administrator", "module": "HR", "name": "Additional Salary", diff --git a/erpnext/hr/doctype/additional_salary/additional_salary.py b/erpnext/hr/doctype/additional_salary/additional_salary.py index d1b602d243..d8f7444beb 100644 --- a/erpnext/hr/doctype/additional_salary/additional_salary.py +++ b/erpnext/hr/doctype/additional_salary/additional_salary.py @@ -50,7 +50,7 @@ class AdditionalSalary(Document): @frappe.whitelist() def get_additional_salary_component(employee, start_date, end_date, component_type): additional_components = frappe.db.sql(""" - select salary_component, sum(amount) as amount, overwrite_salary_structure_amount, deduct_full_tax_on_selected_payroll_date + select name, salary_component, amount, overwrite_salary_structure_amount, deduct_full_tax_on_selected_payroll_date from `tabAdditional Salary` where employee=%(employee)s and docstatus = 1 @@ -60,7 +60,6 @@ def get_additional_salary_component(employee, start_date, end_date, component_ty from_date <= %(to_date)s and to_date >= %(to_date)s ) and type = %(component_type)s - group by salary_component, overwrite_salary_structure_amount order by salary_component, overwrite_salary_structure_amount """, { 'employee': employee, @@ -70,8 +69,11 @@ def get_additional_salary_component(employee, start_date, end_date, component_ty }, as_dict=1) additional_components_list = [] + existing_salary_components = [] component_fields = ["depends_on_payment_days", "salary_component_abbr", "is_tax_applicable", "variable_based_on_taxable_salary", 'type'] for d in additional_components: + if d.salary_component in existing_salary_components: + frappe.throw(_('Multiple additional Salary is created for Salary Component {0}'.format(d.salary_component))) struct_row = frappe._dict({'salary_component': d.salary_component}) component = frappe.get_all("Salary Component", filters={'name': d.salary_component}, fields=component_fields) if component: @@ -79,6 +81,7 @@ def get_additional_salary_component(employee, start_date, end_date, component_ty struct_row['deduct_full_tax_on_selected_payroll_date'] = d.deduct_full_tax_on_selected_payroll_date struct_row['is_additional_component'] = 1 + struct_row['additional_salary'] = d.name additional_components_list.append(frappe._dict({ 'amount': d.amount, @@ -86,4 +89,5 @@ def get_additional_salary_component(employee, start_date, end_date, component_ty 'struct_row': struct_row, 'overwrite': d.overwrite_salary_structure_amount, })) + existing_salary_components.append(d.salary_component) return additional_components_list \ No newline at end of file diff --git a/erpnext/hr/doctype/employee/test_employee.py b/erpnext/hr/doctype/employee/test_employee.py index 906386db11..d3410de2eb 100644 --- a/erpnext/hr/doctype/employee/test_employee.py +++ b/erpnext/hr/doctype/employee/test_employee.py @@ -51,7 +51,7 @@ def make_employee(user, company=None): "doctype": "User", "email": user, "first_name": user, - "new_password": "qwerty123@12435", + "new_password": "password", "roles": [{"doctype": "Has Role", "role": "Employee"}] }).insert() diff --git a/erpnext/hr/doctype/salary_detail/salary_detail.json b/erpnext/hr/doctype/salary_detail/salary_detail.json index bde735d3bc..5a55593506 100644 --- a/erpnext/hr/doctype/salary_detail/salary_detail.json +++ b/erpnext/hr/doctype/salary_detail/salary_detail.json @@ -25,6 +25,7 @@ "tax_on_flexible_benefit", "tax_on_additional_salary", "section_break_11", + "additional_salary", "condition_and_formula_help" ], "fields": [ @@ -187,11 +188,18 @@ "fieldtype": "HTML", "label": "Condition and Formula Help", "options": "
Notes:
\n\nbase for using base salary of the EmployeeBS = Basic SalaryEmployment Type = employment_typeBranch = branchPayment Days = payment_daysLeave without pay = leave_without_paybase\nCondition: base < 10000\nFormula: base * .2BS \nCondition: BS > 2000\nFormula: BS * .1employment_type \nCondition: employment_type==\"Intern\"\nAmount: 1000