Skip to content
33 changes: 33 additions & 0 deletions hrms/hr/doctype/leave_application/leave_application.py
Original file line number Diff line number Diff line change
Expand Up @@ -938,6 +938,28 @@ def get_allocation_expiry_for_cf_leaves(
return expiry[0][0] if expiry else ""


@frappe.whitelist()
def get_leave_metrics_and_details(
employee: str,
leave_type: str,
from_date: datetime.date,
to_date: datetime.date,
half_day: int | str | None = None,
half_day_date: datetime.date | str | None = None,
) -> dict:
frappe.has_permission("Employee", "read", employee, throw=True)
number_of_leave_days = get_number_of_leave_days(
employee, leave_type, from_date, to_date, half_day, half_day_date
)

details = get_leave_details(employee, from_date)

return {
"number_of_leave_days": number_of_leave_days,
"leave_allocation": details["leave_allocation"],
}


@frappe.whitelist()
def get_number_of_leave_days(
employee: str,
Expand Down Expand Up @@ -1523,3 +1545,14 @@ def get_leave_approver(employee: str) -> str:

def on_doctype_update():
frappe.db.add_index("Leave Application", ["employee", "from_date", "to_date"])


@frappe.whitelist()
def get_leave_approver_and_mandatory(employee: str) -> dict:
frappe.has_permission("Employee", "read", employee, throw=True)
mandatory = frappe.db.get_single_value("HR Settings", "leave_approver_mandatory_in_leave_application")

return {
"is_mandatory": 1 if mandatory else 0,
"leave_approver": get_leave_approver(employee),
}
Loading
Loading