added ctc fetch to bulk salary assignment

This commit is contained in:
Ali 2026-03-06 16:19:17 +04:00
parent e02cc9ba06
commit aaf08e8dc8
2 changed files with 57 additions and 3 deletions

View File

@ -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)

View File

@ -24,9 +24,9 @@ doctype_js = {
"Employee": "public/js/employee.js"
}
# override_doctype_class = {
# "Report": "jey_erp.custom_report.CustomReport"
# }
override_doctype_class = {
"Bulk Salary Structure Assignment": "jey_erp.custom.bulk_salary_structure_assignment.CustomBulkSalaryStructureAssignment"
}
doc_events = {
"Employee Onboarding": {