added ctc fetch to bulk salary assignment
This commit is contained in:
parent
e02cc9ba06
commit
aaf08e8dc8
|
|
@ -0,0 +1,54 @@
|
||||||
|
import frappe
|
||||||
|
from frappe.query_builder.custom import ConstantColumn
|
||||||
|
from frappe.query_builder.functions import Coalesce
|
||||||
|
from frappe.query_builder.terms import SubQuery
|
||||||
|
|
||||||
|
from hrms.payroll.doctype.bulk_salary_structure_assignment.bulk_salary_structure_assignment import (
|
||||||
|
BulkSalaryStructureAssignment,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class CustomBulkSalaryStructureAssignment(BulkSalaryStructureAssignment):
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_employees(self, advanced_filters: list) -> list:
|
||||||
|
quick_filter_fields = [
|
||||||
|
"company",
|
||||||
|
"employment_type",
|
||||||
|
"branch",
|
||||||
|
"department",
|
||||||
|
"designation",
|
||||||
|
"grade",
|
||||||
|
]
|
||||||
|
filters = [[d, "=", self.get(d)] for d in quick_filter_fields if self.get(d)]
|
||||||
|
filters += advanced_filters
|
||||||
|
|
||||||
|
Assignment = frappe.qb.DocType("Salary Structure Assignment")
|
||||||
|
employees_with_assignments = SubQuery(
|
||||||
|
frappe.qb.from_(Assignment)
|
||||||
|
.select(Assignment.employee)
|
||||||
|
.distinct()
|
||||||
|
.where((Assignment.from_date == self.from_date) & (Assignment.docstatus == 1))
|
||||||
|
)
|
||||||
|
|
||||||
|
Employee = frappe.qb.DocType("Employee")
|
||||||
|
Grade = frappe.qb.DocType("Employee Grade")
|
||||||
|
query = (
|
||||||
|
frappe.qb.get_query(
|
||||||
|
Employee,
|
||||||
|
fields=[Employee.employee, Employee.employee_name, Employee.grade],
|
||||||
|
filters=filters,
|
||||||
|
)
|
||||||
|
.where(
|
||||||
|
(Employee.status == "Active")
|
||||||
|
& (Employee.date_of_joining <= self.from_date)
|
||||||
|
& ((Employee.relieving_date > self.from_date) | (Employee.relieving_date.isnull()))
|
||||||
|
& (Employee.employee.notin(employees_with_assignments))
|
||||||
|
)
|
||||||
|
.left_join(Grade)
|
||||||
|
.on(Employee.grade == Grade.name)
|
||||||
|
.select(
|
||||||
|
Coalesce(Employee.ctc, Grade.default_base_pay, 0).as_("base"),
|
||||||
|
ConstantColumn(0).as_("variable"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return query.run(as_dict=True)
|
||||||
|
|
@ -24,9 +24,9 @@ doctype_js = {
|
||||||
"Employee": "public/js/employee.js"
|
"Employee": "public/js/employee.js"
|
||||||
}
|
}
|
||||||
|
|
||||||
# override_doctype_class = {
|
override_doctype_class = {
|
||||||
# "Report": "jey_erp.custom_report.CustomReport"
|
"Bulk Salary Structure Assignment": "jey_erp.custom.bulk_salary_structure_assignment.CustomBulkSalaryStructureAssignment"
|
||||||
# }
|
}
|
||||||
|
|
||||||
doc_events = {
|
doc_events = {
|
||||||
"Employee Onboarding": {
|
"Employee Onboarding": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue