SYMBOL INDEX (3107 symbols across 500 files) FILE: .github/helper/documentation.py function uri_validator (line 6) | def uri_validator(x): function docs_link_exists (line 11) | def docs_link_exists(body): FILE: frontend/public/frappe-push-notification.js class FrappePushNotification (line 10) | class FrappePushNotification { method relayServerBaseURL (line 11) | static get relayServerBaseURL() { method constructor (line 33) | constructor(projectName) { method initialize (line 57) | async initialize(serviceWorkerRegistration) { method appendConfigToServiceWorkerURL (line 75) | async appendConfigToServiceWorkerURL(url, parameter_name = "config") { method fetchWebConfig (line 86) | async fetchWebConfig() { method fetchVapidPublicKey (line 108) | async fetchVapidPublicKey() { method onMessage (line 138) | onMessage(callback) { method isNotificationEnabled (line 150) | isNotificationEnabled() { method enableNotification (line 160) | async enableNotification() { method disableNotification (line 213) | async disableNotification() { method registerTokenHandler (line 245) | async registerTokenHandler(token) { method unregisterTokenHandler (line 272) | async unregisterTokenHandler(token) { FILE: frontend/public/sw.js function isChrome (line 20) | function isChrome() { FILE: frontend/src/composables/index.js function getFileReader (line 3) | function getFileReader() { class FileAttachment (line 9) | class FileAttachment { method constructor (line 10) | constructor(fileObj) { method upload (line 15) | async upload(documentType, documentName, fieldName) { method delete (line 51) | delete() { function guessStatusColor (line 74) | async function guessStatusColor(doctype, status) { FILE: frontend/src/composables/realtime.js function useListUpdate (line 5) | function useListUpdate(socket, doctype, callback) { function subscribe (line 14) | function subscribe(socket, doctype) { FILE: frontend/src/composables/workflow.js function useWorkflow (line 5) | function useWorkflow(doctype) { FILE: frontend/src/data/advances.js method transform (line 14) | transform(data) { FILE: frontend/src/data/attendance.js method transform (line 57) | transform(data) { method transform (line 77) | transform(data) { method transform (line 92) | transform(data) { FILE: frontend/src/data/claims.js method transform (line 26) | transform(data) { method onSuccess (line 29) | onSuccess() { method transform (line 44) | transform(data) { method transform (line 54) | transform(data) { FILE: frontend/src/data/config/requestSummaryFields.js constant LEAVE_FIELDS (line 4) | const LEAVE_FIELDS = [ constant EXPENSE_CLAIM_FIELDS (line 57) | const EXPENSE_CLAIM_FIELDS = [ constant ATTENDANCE_REQUEST_FIELDS (line 116) | const ATTENDANCE_REQUEST_FIELDS = [ constant SHIFT_FIELDS (line 154) | const SHIFT_FIELDS = [ constant SHIFT_REQUEST_FIELDS (line 187) | const SHIFT_REQUEST_FIELDS = [ constant EMPLOYEE_CHECKIN_FIELDS (line 220) | const EMPLOYEE_CHECKIN_FIELDS = [ FILE: frontend/src/data/currencies.js function getCompanyCurrency (line 13) | function getCompanyCurrency(company) { function getCompanyCurrencySymbol (line 17) | function getCompanyCurrencySymbol(company) { function getCurrencySymbol (line 21) | function getCurrencySymbol(currency) { FILE: frontend/src/data/employee.js method onError (line 7) | onError(error) { FILE: frontend/src/data/employees.js method transform (line 11) | transform(data) { method onError (line 20) | onError(error) { function getEmployeeInfo (line 27) | function getEmployeeInfo(employeeID) { function getEmployeeInfoByUserID (line 33) | function getEmployeeInfoByUserID(userID) { FILE: frontend/src/data/leaves.js method transform (line 31) | transform(data) { method onSuccess (line 34) | onSuccess() { method transform (line 49) | transform(data) { FILE: frontend/src/data/notifications.js method onSuccess (line 26) | onSuccess() { FILE: frontend/src/data/session.js function sessionUser (line 7) | function sessionUser() { function handleLogin (line 16) | function handleLogin(response) { method onSuccess (line 39) | onSuccess() { FILE: frontend/src/data/user.js method onError (line 7) | onError(error) { FILE: frontend/src/plugins/translationsPlugin.js function makeTranslationFunction (line 1) | function makeTranslationFunction() { method isReady (line 70) | async isReady() { method install (line 73) | install(/** @type {import('vue').App} */ app, options) { FILE: frontend/src/socket.js function initSocket (line 7) | function initSocket() { FILE: frontend/src/utils/commonUtils.js function useDownloadPDF (line 3) | function useDownloadPDF() { FILE: frontend/vite.config.js function getProxyOptions (line 92) | function getProxyOptions() { function getCommonSiteConfig (line 111) | function getCommonSiteConfig() { FILE: hrms/__init__.py function refetch_resource (line 6) | def refetch_resource(cache_key: str | list, user=None): FILE: hrms/api/__init__.py function get_current_user_info (line 31) | def get_current_user_info() -> dict: function get_current_employee_info (line 42) | def get_current_employee_info() -> dict: function get_all_employees (line 63) | def get_all_employees() -> list[dict]: function get_current_employee (line 81) | def get_current_employee() -> str: function get_hr_settings (line 90) | def get_hr_settings() -> dict: function get_unread_notifications_count (line 100) | def get_unread_notifications_count() -> int: function mark_all_notifications_as_read (line 108) | def mark_all_notifications_as_read() -> None: function are_push_notifications_enabled (line 119) | def are_push_notifications_enabled() -> bool: function get_attendance_calendar_events (line 129) | def get_attendance_calendar_events(from_date: str, to_date: str) -> dict... function get_attendance_for_calendar (line 147) | def get_attendance_for_calendar(employee: str, from_date: str, to_date: ... function get_holidays_for_calendar (line 156) | def get_holidays_for_calendar(employee: str, from_date: str, to_date: st... function get_shift_requests (line 168) | def get_shift_requests( function get_attendance_requests (line 207) | def get_attendance_requests( function get_filters (line 244) | def get_filters( function get_shift_request_approvers (line 275) | def get_shift_request_approvers(employee: str) -> str | list[str]: function get_shifts (line 305) | def get_shifts() -> list[dict[str, str]]: function get_leave_applications (line 332) | def get_leave_applications( function get_leave_balance_map (line 377) | def get_leave_balance_map() -> dict[str, dict[str, float]]: function get_holidays_for_employee (line 405) | def get_holidays_for_employee(employee: str) -> list[dict]: function get_leave_approval_details (line 425) | def get_leave_approval_details(employee: str) -> dict: function get_department_approvers (line 455) | def get_department_approvers(department: str, parentfield: str) -> list[... function get_leave_types (line 484) | def get_leave_types(employee: str, date: str) -> list: function get_expense_claims (line 497) | def get_expense_claims( function get_expense_claim_summary (line 540) | def get_expense_claim_summary() -> dict: function get_expense_type_description (line 588) | def get_expense_type_description(expense_type: str) -> str: function get_expense_claim_types (line 593) | def get_expense_claim_types() -> list[dict]: function get_expense_approval_details (line 600) | def get_expense_approval_details(employee: str) -> dict: function get_employee_advance_balance (line 630) | def get_employee_advance_balance() -> list[dict]: function get_advance_account (line 660) | def get_advance_account(company: str) -> str | None: function get_company_currencies (line 666) | def get_company_currencies() -> dict: function get_currency_symbols (line 687) | def get_currency_symbols() -> dict: function get_company_cost_center_and_expense_account (line 696) | def get_company_cost_center_and_expense_account(company: str) -> dict: function get_doctype_fields (line 704) | def get_doctype_fields(doctype: str) -> list[dict]: function get_doctype_states (line 714) | def get_doctype_states(doctype: str) -> dict: function get_attachments (line 721) | def get_attachments(dt: str, dn: str): function upload_base64_file (line 730) | def upload_base64_file(content, filename, dt=None, dn=None, fieldname=No... function delete_attachment (line 770) | def delete_attachment(filename: str): function _download_pdf (line 775) | def _download_pdf(doctype: str, docname: str) -> str: function get_workflow (line 795) | def get_workflow(doctype: str) -> dict: function get_workflow_state_field (line 802) | def get_workflow_state_field(doctype: str) -> str | None: function get_allowed_states_for_workflow (line 818) | def get_allowed_states_for_workflow(workflow: dict, user_id: str) -> lis... function get_permitted_fields_for_write (line 825) | def get_permitted_fields_for_write(doctype: str) -> list[str]: FILE: hrms/api/oauth.py function oauth_providers (line 5) | def oauth_providers(): FILE: hrms/api/roster.py function get_default_company (line 13) | def get_default_company() -> str: function get_events (line 18) | def get_events( function get_schedule_from_assignment (line 36) | def get_schedule_from_assignment(shift_schedule_assignment: str): function create_shift_schedule_assignment (line 46) | def create_shift_schedule_assignment( function delete_shift_schedule_assignment (line 79) | def delete_shift_schedule_assignment(shift_schedule_assignment: str) -> ... function swap_shift (line 91) | def swap_shift( function break_shift (line 129) | def break_shift(assignment: str | ShiftAssignment, date: str) -> None: function insert_shift (line 159) | def insert_shift( function get_holidays (line 195) | def get_holidays(month_start: str, month_end: str, employee_filters: dic... function get_leaves (line 215) | def get_leaves(month_start: str, month_end: str, employee_filters: dict[... function get_shifts (line 244) | def get_shifts( function group_by_employee (line 286) | def group_by_employee(events: list[dict]) -> dict[str, list[dict]]: FILE: hrms/api/system_settings.py function get_user_pass_login_disabled (line 5) | def get_user_pass_login_disabled(): FILE: hrms/config/desktop.py function get_data (line 4) | def get_data(): FILE: hrms/config/docs.py function get_context (line 10) | def get_context(context): FILE: hrms/controllers/employee_boarding_controller.py class EmployeeBoardingController (line 14) | class EmployeeBoardingController(Document): method validate (line 20) | def validate(self): method on_submit (line 26) | def on_submit(self): method create_task_and_notify_user (line 51) | def create_task_and_notify_user(self): method get_holiday_list (line 102) | def get_holiday_list(self): method get_task_dates (line 114) | def get_task_dates(self, activity, holiday_list): method update_if_holiday (line 127) | def update_if_holiday(self, date, holiday_list): method assign_task_to_users (line 132) | def assign_task_to_users(self, task, users): method on_cancel (line 143) | def on_cancel(self): function get_onboarding_details (line 159) | def get_onboarding_details(parent, parenttype): function update_employee_boarding_status (line 177) | def update_employee_boarding_status(project, event=None): function update_task (line 196) | def update_task(task, event=None): FILE: hrms/controllers/employee_reminders.py function send_reminders_in_advance_weekly (line 16) | def send_reminders_in_advance_weekly(): function send_reminders_in_advance_monthly (line 25) | def send_reminders_in_advance_monthly(): function send_advance_holiday_reminders (line 34) | def send_advance_holiday_reminders(frequency): function send_holidays_reminder_in_advance (line 57) | def send_holidays_reminder_in_advance(employee, holidays): function send_birthday_reminders (line 87) | def send_birthday_reminders(): function get_birthday_reminder_text_and_message (line 114) | def get_birthday_reminder_text_and_message(birthday_persons): function send_birthday_reminder (line 130) | def send_birthday_reminder(recipients, reminder_text, birthday_persons, ... function get_employees_who_are_born_today (line 145) | def get_employees_who_are_born_today(): function get_employees_having_an_event_today (line 150) | def get_employees_having_an_event_today(event_type): function send_work_anniversary_reminders (line 207) | def send_work_anniversary_reminders(): function get_work_anniversary_reminder_text (line 237) | def get_work_anniversary_reminder_text(anniversary_persons: list) -> str: function get_year_label (line 264) | def get_year_label(years: int) -> str: function send_work_anniversary_reminder (line 268) | def send_work_anniversary_reminder( function get_sender_email (line 289) | def get_sender_email() -> str | None: FILE: hrms/controllers/tests/test_employee_reminders.py class TestEmployeeReminders (line 20) | class TestEmployeeReminders(HRMSTestSuite): method setUp (line 21) | def setUp(self): method get_test_holiday_dates (line 70) | def get_test_holiday_dates(cls): method test_is_holiday (line 81) | def test_is_holiday(self): method test_birthday_reminders (line 99) | def test_birthday_reminders(self): method test_work_anniversary_reminders (line 123) | def test_work_anniversary_reminders(self): method test_work_anniversary_reminder_not_sent_for_0_years (line 152) | def test_work_anniversary_reminder_not_sent_for_0_years(self): method test_send_holidays_reminder_in_advance (line 169) | def test_send_holidays_reminder_in_advance(self): method test_advance_holiday_reminders_monthly (line 186) | def test_advance_holiday_reminders_monthly(self): method test_advance_holiday_reminders_weekly (line 213) | def test_advance_holiday_reminders_weekly(self): method test_reminder_not_sent_if_no_holdays (line 240) | def test_reminder_not_sent_if_no_holdays(self): function setup_hr_settings (line 256) | def setup_hr_settings(frequency=None): FILE: hrms/hr/dashboard_chart_source/employees_by_age/employees_by_age.py function get_data (line 15) | def get_data( function get_ranges (line 47) | def get_ranges() -> list[tuple[int, int]]: function get_age_list (line 58) | def get_age_list(employees) -> list[int]: function get_employees_by_age (line 69) | def get_employees_by_age(age_list, ranges) -> tuple[list[str], list[int]]: FILE: hrms/hr/dashboard_chart_source/hiring_vs_attrition_count/hiring_vs_attrition_count.py function get_data (line 15) | def get_data( function get_records (line 61) | def get_records(from_date: str, to_date: str, datefield: str, company: s... FILE: hrms/hr/doctype/appointment_letter/appointment_letter.py class AppointmentLetter (line 9) | class AppointmentLetter(Document): function get_appointment_letter_details (line 36) | def get_appointment_letter_details(template: str) -> list: FILE: hrms/hr/doctype/appointment_letter/test_appointment_letter.py class TestAppointmentLetter (line 8) | class TestAppointmentLetter(HRMSTestSuite): FILE: hrms/hr/doctype/appointment_letter_content/appointment_letter_content.py class AppointmentLettercontent (line 9) | class AppointmentLettercontent(Document): FILE: hrms/hr/doctype/appointment_letter_template/appointment_letter_template.py class AppointmentLetterTemplate (line 9) | class AppointmentLetterTemplate(Document): FILE: hrms/hr/doctype/appointment_letter_template/test_appointment_letter_template.py class TestAppointmentLetterTemplate (line 8) | class TestAppointmentLetterTemplate(HRMSTestSuite): FILE: hrms/hr/doctype/appraisal/appraisal.js method refresh (line 5) | refresh(frm) { method appraisal_template (line 16) | appraisal_template(frm) { method appraisal_cycle (line 25) | appraisal_cycle(frm) { method add_custom_buttons (line 55) | add_custom_buttons(frm) { method show_feedback_history (line 66) | show_feedback_history(frm) { method setup_chart (line 76) | setup_chart(frm) { method calculate_total (line 115) | calculate_total(frm) { method score (line 127) | score(frm, cdt, cdn) { method per_weightage (line 139) | per_weightage(frm, cdt, cdn) { method goals_remove (line 143) | goals_remove(frm, cdt, cdn) { method set_score_earned (line 147) | set_score_earned(frm, cdt, cdn) { FILE: hrms/hr/doctype/appraisal/appraisal.py class Appraisal (line 16) | class Appraisal(Document, AppraisalMixin): method validate (line 54) | def validate(self): method validate_duplicate (line 68) | def validate_duplicate(self): method set_kra_evaluation_method (line 102) | def set_kra_evaluation_method(self): method set_appraisal_template (line 114) | def set_appraisal_template(self): method set_kras_and_rating_criteria (line 133) | def set_kras_and_rating_criteria(self): method calculate_total_score (line 165) | def calculate_total_score(self): method calculate_self_appraisal_score (line 201) | def calculate_self_appraisal_score(self): method calculate_avg_feedback_score (line 211) | def calculate_avg_feedback_score(self, update=False): method calculate_final_score (line 224) | def calculate_final_score(self): method add_feedback (line 250) | def add_feedback(self, feedback: str, feedback_ratings: list) -> Docum... method set_goal_score (line 276) | def set_goal_score(self, update=False): function get_feedback_history (line 309) | def get_feedback_history(employee: str, appraisal: str) -> dict: function get_kras_for_employee (line 363) | def get_kras_for_employee( FILE: hrms/hr/doctype/appraisal/test_appraisal.py class TestAppraisal (line 20) | class TestAppraisal(HRMSTestSuite): method setUp (line 21) | def setUp(self): method test_validate_duplicate (line 36) | def test_validate_duplicate(self): method test_manual_kra_rating (line 51) | def test_manual_kra_rating(self): method test_final_score (line 70) | def test_final_score(self): method test_final_score_using_formula (line 77) | def test_final_score_using_formula(self): method setup_appraisal (line 92) | def setup_appraisal(self, cycle): method test_goal_score (line 123) | def test_goal_score(self): method test_goal_score_after_parent_goal_change (line 165) | def test_goal_score_after_parent_goal_change(self): method test_goal_score_after_kra_change (line 219) | def test_goal_score_after_kra_change(self): method test_goal_score_after_goal_deletion (line 243) | def test_goal_score_after_goal_deletion(self): method test_calculate_self_appraisal_score (line 261) | def test_calculate_self_appraisal_score(self): method test_cycle_completion (line 277) | def test_cycle_completion(self): method test_cycle_summary (line 301) | def test_cycle_summary(self): FILE: hrms/hr/doctype/appraisal_cycle/appraisal_cycle.js method refresh (line 5) | refresh(frm) { method show_custom_buttons (line 19) | show_custom_buttons(frm) { method get_employees (line 104) | get_employees(frm) { method create_appraisals (line 117) | create_appraisals(frm) { method complete_cycle (line 129) | complete_cycle(frm) { method show_appraisal_summary (line 149) | show_appraisal_summary(frm) { FILE: hrms/hr/doctype/appraisal_cycle/appraisal_cycle.py class AppraisalCycle (line 11) | class AppraisalCycle(Document): method onload (line 37) | def onload(self): method validate (line 40) | def validate(self): method validate_evaluation_method_change (line 44) | def validate_evaluation_method_change(self): method check_if_appraisals_exist (line 56) | def check_if_appraisals_exist(self): method set_employees (line 63) | def set_employees(self): method get_employees_for_appraisal (line 96) | def get_employees_for_appraisal(self): method get_appraisal_template_map (line 122) | def get_appraisal_template_map(self): method create_appraisals (line 132) | def create_appraisals(self): method show_missing_template_message (line 159) | def show_missing_template_message(self, raise_exception=False): method complete_cycle (line 171) | def complete_cycle(self): function create_appraisals_for_cycle (line 189) | def create_appraisals_for_cycle(appraisal_cycle: AppraisalCycle, publish... function validate_active_appraisal_cycle (line 224) | def validate_active_appraisal_cycle(appraisal_cycle: str) -> None: function get_appraisal_cycle_summary (line 236) | def get_appraisal_cycle_summary(cycle_name: str) -> dict: function get_employees_without_goals (line 251) | def get_employees_without_goals(cycle_name: str) -> int: function get_employees_without_feedback (line 277) | def get_employees_without_feedback(cycle_name: str | None = None) -> int: FILE: hrms/hr/doctype/appraisal_cycle/test_appraisal_cycle.py class TestAppraisalCycle (line 14) | class TestAppraisalCycle(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_set_employees (line 28) | def test_set_employees(self): method test_create_appraisals (line 34) | def test_create_appraisals(self): function create_appraisal_cycle (line 55) | def create_appraisal_cycle(**args): FILE: hrms/hr/doctype/appraisal_goal/appraisal_goal.py class AppraisalGoal (line 8) | class AppraisalGoal(Document): FILE: hrms/hr/doctype/appraisal_kra/appraisal_kra.py class AppraisalKRA (line 8) | class AppraisalKRA(Document): FILE: hrms/hr/doctype/appraisal_template/appraisal_template.js method setup (line 5) | setup(frm) { FILE: hrms/hr/doctype/appraisal_template/appraisal_template.py class AppraisalTemplate (line 13) | class AppraisalTemplate(Document, AppraisalMixin): method validate (line 31) | def validate(self): FILE: hrms/hr/doctype/appraisal_template/test_appraisal_template.py class TestAppraisalTemplate (line 9) | class TestAppraisalTemplate(HRMSTestSuite): method test_incorrect_weightage_allocation (line 10) | def test_incorrect_weightage_allocation(self): function create_kras (line 21) | def create_kras(kras): function create_criteria (line 32) | def create_criteria(criteria): function create_appraisal_template (line 43) | def create_appraisal_template(title=None, kras=None, rating_criteria=None): FILE: hrms/hr/doctype/appraisal_template_goal/appraisal_template_goal.py class AppraisalTemplateGoal (line 8) | class AppraisalTemplateGoal(Document): FILE: hrms/hr/doctype/appraisee/appraisee.py class Appraisee (line 8) | class Appraisee(Document): FILE: hrms/hr/doctype/attendance/attendance.js method refresh (line 5) | refresh(frm) { FILE: hrms/hr/doctype/attendance/attendance.py class DuplicateAttendanceError (line 33) | class DuplicateAttendanceError(frappe.ValidationError): class OverlappingShiftAttendanceError (line 37) | class OverlappingShiftAttendanceError(frappe.ValidationError): class Attendance (line 41) | class Attendance(Document): method before_insert (line 74) | def before_insert(self): method validate (line 78) | def validate(self): method on_cancel (line 89) | def on_cancel(self): method validate_attendance_date (line 92) | def validate_attendance_date(self): method validate_duplicate_record (line 104) | def validate_duplicate_record(self): method get_duplicate_attendance_record (line 118) | def get_duplicate_attendance_record(self) -> str | None: method validate_overlapping_shift_attendance (line 150) | def validate_overlapping_shift_attendance(self): method get_overlapping_shift_attendance (line 164) | def get_overlapping_shift_attendance(self) -> dict: method validate_employee_status (line 187) | def validate_employee_status(self): method check_leave_record (line 191) | def check_leave_record(self): method validate_employee (line 243) | def validate_employee(self): method unlink_attendance_from_checkins (line 250) | def unlink_attendance_from_checkins(self): method on_update (line 277) | def on_update(self): method after_delete (line 280) | def after_delete(self): method publish_update (line 283) | def publish_update(self): function get_events (line 289) | def get_events(start: date | str, end: date | str, filters: str | list |... function add_attendance (line 306) | def add_attendance(filters): function add_holidays (line 324) | def add_holidays(events, start, end, employee=None): function mark_attendance (line 341) | def mark_attendance( function mark_bulk_attendance (line 379) | def mark_bulk_attendance(data: str | dict): function process_bulk_attendance_in_batches (line 407) | def process_bulk_attendance_in_batches(data, chunk_size=20): function get_unmarked_days (line 432) | def get_unmarked_days( FILE: hrms/hr/doctype/attendance/attendance_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/attendance/attendance_list.js method primary_action (line 98) | primary_action(data) { FILE: hrms/hr/doctype/attendance/test_attendance.py class TestAttendance (line 38) | class TestAttendance(HRMSTestSuite): method setUp (line 39) | def setUp(self): method test_duplicate_attendance (line 42) | def test_duplicate_attendance(self): method test_duplicate_attendance_with_shift (line 59) | def test_duplicate_attendance_with_shift(self): method test_overlapping_shift_attendance_validation (line 95) | def test_overlapping_shift_attendance_validation(self): method test_allow_attendance_with_different_shifts (line 120) | def test_allow_attendance_with_different_shifts(self): method test_mark_absent (line 142) | def test_mark_absent(self): method test_unmarked_days (line 152) | def test_unmarked_days(self): method test_unmarked_days_excluding_holidays (line 178) | def test_unmarked_days_excluding_holidays(self): method test_unmarked_days_excluding_holidays_across_two_holiday_list_assignments (line 202) | def test_unmarked_days_excluding_holidays_across_two_holiday_list_assi... method test_unmarked_days_as_per_joining_and_relieving_dates (line 224) | def test_unmarked_days_as_per_joining_and_relieving_dates(self): method test_duplicate_attendance_when_created_from_checkins_and_tool (line 254) | def test_duplicate_attendance_when_created_from_checkins_and_tool(self): method test_get_events_returns_attendance (line 275) | def test_get_events_returns_attendance(self): method test_bulk_attendance_marking_through_bg (line 299) | def test_bulk_attendance_marking_through_bg(self): method tearDown (line 329) | def tearDown(self): FILE: hrms/hr/doctype/attendance_request/attendance_request.js method refresh (line 4) | refresh(frm) { method show_attendance_warnings (line 8) | show_attendance_warnings(frm) { FILE: hrms/hr/doctype/attendance_request/attendance_request.py class OverlappingAttendanceRequestError (line 16) | class OverlappingAttendanceRequestError(frappe.ValidationError): class AttendanceRequest (line 20) | class AttendanceRequest(Document): method validate (line 44) | def validate(self): method validate_half_day (line 51) | def validate_half_day(self): method validate_no_attendance_to_create (line 56) | def validate_no_attendance_to_create(self): method validate_request_overlap (line 69) | def validate_request_overlap(self): method throw_overlap_error (line 89) | def throw_overlap_error(self, overlapping_request: str): method on_submit (line 97) | def on_submit(self): method on_cancel (line 100) | def on_cancel(self): method create_attendance_records (line 109) | def create_attendance_records(self): method create_or_update_attendance (line 116) | def create_or_update_attendance(self, date: str): method should_mark_attendance (line 159) | def should_mark_attendance(self, attendance_date: str) -> bool: method has_leave_record (line 180) | def has_leave_record(self, attendance_date: str) -> str | None: method get_attendance_doc (line 192) | def get_attendance_doc(self, attendance_date: str) -> str | None: method get_attendance_status (line 203) | def get_attendance_status(self, attendance_date: str) -> str: method status_unchanged (line 211) | def status_unchanged(self, attendance_date): method on_update (line 218) | def on_update(self): method after_delete (line 221) | def after_delete(self): method publish_update (line 224) | def publish_update(self): method get_attendance_warnings (line 230) | def get_attendance_warnings(self) -> list: FILE: hrms/hr/doctype/attendance_request/attendance_request_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/attendance_request/test_attendance_request.py class TestAttendanceRequest (line 18) | class TestAttendanceRequest(HRMSTestSuite): method setUp (line 19) | def setUp(self): method test_attendance_request_overlap (line 23) | def test_attendance_request_overlap(self): method test_on_duty_attendance_request (line 52) | def test_on_duty_attendance_request(self): method test_work_from_home_attendance_request (line 75) | def test_work_from_home_attendance_request(self): method test_overwrite_attendance (line 89) | def test_overwrite_attendance(self): method test_skip_attendance_on_holiday (line 101) | def test_skip_attendance_on_holiday(self): method test_skip_attendance_on_leave (line 116) | def test_skip_attendance_on_leave(self): method test_include_holidays_check (line 140) | def test_include_holidays_check(self): method get_attendance_records (line 159) | def get_attendance_records(self, attendance_request: str) -> list[dict]: method test_validate_no_attendance_to_create (line 168) | def test_validate_no_attendance_to_create(self): method test_half_day_status_change (line 195) | def test_half_day_status_change(self): method test_half_day_status_change_when_existing_attendance_is_updated (line 216) | def test_half_day_status_change_when_existing_attendance_is_updated(se... function get_employee (line 248) | def get_employee(): function create_attendance_request (line 252) | def create_attendance_request(**args: dict) -> dict: FILE: hrms/hr/doctype/compensatory_leave_request/compensatory_leave_request.py class CompensatoryLeaveRequest (line 21) | class CompensatoryLeaveRequest(Document): method validate (line 43) | def validate(self): method validate_attendance (line 57) | def validate_attendance(self): method validate_holidays (line 81) | def validate_holidays(self): method on_submit (line 94) | def on_submit(self): method on_cancel (line 128) | def on_cancel(self): method get_existing_allocation (line 147) | def get_existing_allocation(self, comp_leave_valid_from: datetime.date... method create_leave_allocation (line 163) | def create_leave_allocation(self, leave_period, date_difference): FILE: hrms/hr/doctype/compensatory_leave_request/test_compensatory_leave_request.py class TestCompensatoryLeaveRequest (line 18) | class TestCompensatoryLeaveRequest(HRMSTestSuite): method setUp (line 19) | def setUp(self): method test_leave_balance_on_submit (line 27) | def test_leave_balance_on_submit(self): method test_leave_balance_on_cancel (line 41) | def test_leave_balance_on_cancel(self): method test_allocation_update_on_submit (line 60) | def test_allocation_update_on_submit(self): method test_allocation_update_on_submit_on_multiple_allocations (line 88) | def test_allocation_update_on_submit_on_multiple_allocations(self): method test_creation_of_leave_ledger_entry_on_submit (line 136) | def test_creation_of_leave_ledger_entry_on_submit(self): method test_half_day_compensatory_leave (line 162) | def test_half_day_compensatory_leave(self): method test_request_on_leave_period_boundary (line 193) | def test_request_on_leave_period_boundary(self): function get_compensatory_leave_request (line 222) | def get_compensatory_leave_request(employee, leave_date=None): function mark_attendance (line 251) | def mark_attendance(employee, date=None, status="Present", half_day_stat... function create_holiday_list (line 271) | def create_holiday_list(from_date=None, to_date=None): FILE: hrms/hr/doctype/daily_work_summary/daily_work_summary.py class DailyWorkSummary (line 13) | class DailyWorkSummary(Document): method send_mails (line 27) | def send_mails(self, dws_group, emails): method send_summary (line 44) | def send_summary(self): method get_message_details (line 59) | def get_message_details(self): function get_user_emails_from_group (line 119) | def get_user_emails_from_group(group): function get_users_email (line 132) | def get_users_email(doc): FILE: hrms/hr/doctype/daily_work_summary/test_daily_work_summary.py class TestDailyWorkSummary (line 14) | class TestDailyWorkSummary(HRMSTestSuite): method test_email_trigger (line 15) | def test_email_trigger(self): method test_email_trigger_failed (line 24) | def test_email_trigger_failed(self): method test_incoming (line 37) | def test_incoming(self): method setup_and_prepare_test (line 62) | def setup_and_prepare_test(self, hour=None): method setup_groups (line 85) | def setup_groups(self, hour=None): FILE: hrms/hr/doctype/daily_work_summary_group/daily_work_summary_group.py class DailyWorkSummaryGroup (line 15) | class DailyWorkSummaryGroup(Document): method validate (line 61) | def validate(self): function trigger_emails (line 69) | def trigger_emails(): function is_current_hour (line 89) | def is_current_hour(hour): function send_summary (line 93) | def send_summary(): function is_incoming_account_enabled (line 100) | def is_incoming_account_enabled(): FILE: hrms/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.py class DailyWorkSummaryGroupUser (line 8) | class DailyWorkSummaryGroupUser(Document): FILE: hrms/hr/doctype/department_approver/department_approver.py class DepartmentApprover (line 11) | class DepartmentApprover(Document): function get_approvers (line 31) | def get_approvers(doctype: str, txt: str, searchfield: str, start: int, ... FILE: hrms/hr/doctype/designation_skill/designation_skill.py class DesignationSkill (line 9) | class DesignationSkill(Document): FILE: hrms/hr/doctype/earned_leave_schedule/earned_leave_schedule.py class EarnedLeaveSchedule (line 8) | class EarnedLeaveSchedule(Document): FILE: hrms/hr/doctype/employee_advance/employee_advance.py class EmployeeAdvanceOverPayment (line 18) | class EmployeeAdvanceOverPayment(frappe.ValidationError): class EmployeeAdvance (line 22) | class EmployeeAdvance(Document): method onload (line 54) | def onload(self): method validate (line 59) | def validate(self): method before_submit (line 66) | def before_submit(self): method on_cancel (line 98) | def on_cancel(self): method on_update (line 103) | def on_update(self): method after_delete (line 106) | def after_delete(self): method publish_update (line 109) | def publish_update(self): method validate_advance_account_type (line 113) | def validate_advance_account_type(self): method validate_advance_account_currency (line 125) | def validate_advance_account_currency(self): method set_status (line 135) | def set_status(self, update=False): method on_discard (line 174) | def on_discard(self): method set_total_advance_paid (line 177) | def set_total_advance_paid(self): method update_claimed_amount (line 245) | def update_claimed_amount(self): method set_pending_amount (line 265) | def set_pending_amount(self): method check_linked_payment_entry (line 278) | def check_linked_payment_entry(self): function make_bank_entry (line 290) | def make_bank_entry(dt: str, dn: str) -> dict: function create_return_through_additional_salary (line 331) | def create_return_through_additional_salary(doc: str | dict | Document) ... function make_return_entry (line 350) | def make_return_entry( function get_same_currency_bank_cash_account (line 402) | def get_same_currency_bank_cash_account(company, currency, mode_of_payme... function get_voucher_type (line 437) | def get_voucher_type(mode_of_payment=None): FILE: hrms/hr/doctype/employee_advance/employee_advance_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/employee_advance/test_employee_advance.py class TestEmployeeAdvance (line 27) | class TestEmployeeAdvance(HRMSTestSuite): method setUp (line 28) | def setUp(self): method test_paid_amount_and_status (line 34) | def test_paid_amount_and_status(self): method test_paid_amount_on_pe_cancellation (line 50) | def test_paid_amount_on_pe_cancellation(self): method test_claimed_status (line 72) | def test_claimed_status(self): method test_partly_claimed_and_returned_status (line 103) | def test_partly_claimed_and_returned_status(self): method test_repay_unclaimed_amount_from_salary (line 165) | def test_repay_unclaimed_amount_from_salary(self): method test_payment_entry_against_advance (line 210) | def test_payment_entry_against_advance(self): method test_precision (line 229) | def test_precision(self): method test_pending_amount (line 267) | def test_pending_amount(self): method test_unlink_payment_entries (line 285) | def test_unlink_payment_entries(self): method test_employee_advance_when_different_company_currency (line 302) | def test_employee_advance_when_different_company_currency(self): method test_employee_advance_when_different_account_currency (line 316) | def test_employee_advance_when_different_account_currency(self): method test_employee_advance_when_different_advance_currency (line 328) | def test_employee_advance_when_different_advance_currency(self): method update_company_in_fiscal_year (line 335) | def update_company_in_fiscal_year(self): method test_multicurrency_advance (line 344) | def test_multicurrency_advance(self): method test_status_on_discard (line 367) | def test_status_on_discard(self): function make_journal_entry_for_advance (line 378) | def make_journal_entry_for_advance(advance): function make_payment_entry (line 388) | def make_payment_entry(advance, amount=None): function make_employee_advance (line 402) | def make_employee_advance(employee_name, args=None, do_not_submit=False): function get_advances_for_claim (line 428) | def get_advances_for_claim(claim, advance_name, amount=None): function create_advance_account (line 438) | def create_advance_account(account_name, account_currency): FILE: hrms/hr/doctype/employee_attendance_tool/employee_attendance_tool.js method refresh (line 2) | refresh(frm) { method onload (line 9) | onload(frm) { method reset_tool_actions (line 19) | reset_tool_actions(frm) { method reset_attendance_fields (line 29) | reset_attendance_fields(frm) { method load_employees (line 37) | load_employees(frm) { method show_employees_to_mark (line 108) | show_employees_to_mark(frm, html_fieldname, multicheck_fieldname, employ... method show_marked_employees (line 136) | show_marked_employees(frm, marked_employees) { method get_columns_for_marked_attendance_table (line 146) | get_columns_for_marked_attendance_table() { method show_marked_employees (line 191) | show_marked_employees(frm, marked_employees) { method render_datatable (line 207) | render_datatable(frm, data, summary_wrapper) { method set_primary_action (line 229) | set_primary_action(frm) { method mark_full_day_attendance (line 270) | mark_full_day_attendance(frm, employees_to_mark_full_day, employees_to_m... FILE: hrms/hr/doctype/employee_attendance_tool/employee_attendance_tool.py class EmployeeAttendanceTool (line 13) | class EmployeeAttendanceTool(Document): function get_employees (line 41) | def get_employees( function _get_unmarked_attendance (line 105) | def _get_unmarked_attendance(employee_list: list[dict], attendance_list:... function _get_unmarked_attendance_with_shift (line 116) | def _get_unmarked_attendance_with_shift(unmarked_attendance, shift, date): function mark_employee_attendance (line 148) | def mark_employee_attendance( FILE: hrms/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.py class TestEmployeeAttendanceTool (line 24) | class TestEmployeeAttendanceTool(HRMSTestSuite): method setUp (line 25) | def setUp(self): method test_get_employee_attendance (line 35) | def test_get_employee_attendance(self): method test_mark_employee_attendance (line 54) | def test_mark_employee_attendance(self): method test_get_employees_for_half_day_attendance (line 77) | def test_get_employees_for_half_day_attendance(self): method test_update_half_day_attendance (line 109) | def test_update_half_day_attendance(self): method test_get_unmarked_attendance_with_shift (line 162) | def test_get_unmarked_attendance_with_shift(self): function create_leave_allocation (line 232) | def create_leave_allocation(employee, leave_type): FILE: hrms/hr/doctype/employee_boarding_activity/employee_boarding_activity.py class EmployeeBoardingActivity (line 8) | class EmployeeBoardingActivity(Document): FILE: hrms/hr/doctype/employee_checkin/employee_checkin.js method add_fetch_shift_button (line 31) | add_fetch_shift_button(frm) { FILE: hrms/hr/doctype/employee_checkin/employee_checkin.py class CheckinRadiusExceededError (line 20) | class CheckinRadiusExceededError(frappe.ValidationError): class EmployeeCheckin (line 24) | class EmployeeCheckin(Document): method before_validate (line 51) | def before_validate(self): method validate (line 54) | def validate(self): method validate_duplicate_log (line 62) | def validate_duplicate_log(self): method validate_time_change (line 78) | def validate_time_change(self): method set_geolocation (line 88) | def set_geolocation(self): method fetch_shift (line 92) | def fetch_shift(self): method validate_distance_from_shift_location (line 122) | def validate_distance_from_shift_location(self): function add_log_based_on_employee_field (line 160) | def add_log_based_on_employee_field( function bulk_fetch_shift (line 216) | def bulk_fetch_shift(checkins: list[str] | str) -> None: function mark_attendance_and_link_log (line 226) | def mark_attendance_and_link_log( function create_or_update_attendance (line 285) | def create_or_update_attendance( function get_overtime_data (line 348) | def get_overtime_data(shift_name, working_hours): function get_existing_half_day_attendance (line 375) | def get_existing_half_day_attendance(employee, attendance_date): function calculate_working_hours (line 393) | def calculate_working_hours(logs, check_in_out_type, working_hours_calc_... function time_diff_in_hours (line 453) | def time_diff_in_hours(start, end): function find_index_in_dict (line 457) | def find_index_in_dict(dict_list, key, value): function handle_attendance_exception (line 461) | def handle_attendance_exception(log_names: list, error_message: str): function add_comment_in_checkins (line 468) | def add_comment_in_checkins(log_names: list, error_message: str): function skip_attendance_in_checkins (line 485) | def skip_attendance_in_checkins(log_names: list): function update_attendance_in_checkins (line 494) | def update_attendance_in_checkins(log_names: list, attendance_id: str): function calculate_time_difference (line 503) | def calculate_time_difference(start_time, end_time): FILE: hrms/hr/doctype/employee_checkin/test_employee_checkin.py class TestEmployeeCheckin (line 33) | class TestEmployeeCheckin(HRMSTestSuite): method setUp (line 34) | def setUp(self): method test_geolocation_tracking (line 40) | def test_geolocation_tracking(self): method test_add_log_based_on_employee_field (line 69) | def test_add_log_based_on_employee_field(self): method test_mark_attendance_and_link_log (line 82) | def test_mark_attendance_and_link_log(self): method test_unlink_attendance_on_cancellation (line 107) | def test_unlink_attendance_on_cancellation(self): method test_calculate_working_hours (line 118) | def test_calculate_working_hours(self): method test_fetch_shift (line 164) | def test_fetch_shift(self): method test_fetch_shift_for_assignment_with_end_date (line 193) | def test_fetch_shift_for_assignment_with_end_date(self): method test_shift_start_and_end_timings (line 218) | def test_shift_start_and_end_timings(self): method test_fetch_shift_based_on_default_shift (line 235) | def test_fetch_shift_based_on_default_shift(self): method test_fetch_night_shift_for_assignment_without_end_date (line 250) | def test_fetch_night_shift_for_assignment_without_end_date(self): method test_fetch_night_shift_on_assignment_boundary (line 273) | def test_fetch_night_shift_on_assignment_boundary(self): method test_night_shift_not_fetched_outside_assignment_boundary_for_diff_start_date (line 298) | def test_night_shift_not_fetched_outside_assignment_boundary_for_diff_... method test_night_shift_not_fetched_outside_assignment_boundary_for_diff_end_date (line 320) | def test_night_shift_not_fetched_outside_assignment_boundary_for_diff_... method test_night_shift_not_fetched_outside_before_shift_margin (line 342) | def test_night_shift_not_fetched_outside_before_shift_margin(self): method test_night_shift_not_fetched_outside_after_shift_margin (line 364) | def test_night_shift_not_fetched_outside_after_shift_margin(self): method test_fetch_night_shift_in_margin_period_after_shift (line 390) | def test_fetch_night_shift_in_margin_period_after_shift(self): method test_fetch_night_shift_in_margin_period_before_shift (line 423) | def test_fetch_night_shift_in_margin_period_before_shift(self): method test_consecutive_shift_assignments_overlapping_within_grace_period (line 456) | def test_consecutive_shift_assignments_overlapping_within_grace_period... method test_geofencing (line 492) | def test_geofencing(self): method test_bulk_fetch_shift (line 549) | def test_bulk_fetch_shift(self): method test_bulk_fetch_shift_if_shift_settings_change_for_the_same_shift (line 583) | def test_bulk_fetch_shift_if_shift_settings_change_for_the_same_shift(... method test_if_logs_are_marked_invalid (line 611) | def test_if_logs_are_marked_invalid(self): method test_if_logs_are_marked_valid_again (line 626) | def test_if_logs_are_marked_valid_again(self): method test_validate_time_change (line 642) | def test_validate_time_change(self): method test_modifying_half_attendance_created_from_leave (line 663) | def test_modifying_half_attendance_created_from_leave(self): method test_modifying_half_day_attendance_when_checkins_are_absent (line 714) | def test_modifying_half_day_attendance_when_checkins_are_absent(self): method test_half_day_attendance_when_checkins_exists_but_threshold_is_unmet (line 758) | def test_half_day_attendance_when_checkins_exists_but_threshold_is_unm... method test_half_day_attendance_when_employee_checkins_exists_and_attendance_is_full_day (line 814) | def test_half_day_attendance_when_employee_checkins_exists_and_attenda... function make_n_checkins (line 872) | def make_n_checkins(employee, n, hours_to_reverse=1): function make_checkin (line 879) | def make_checkin(employee, time=None, latitude=None, longitude=None, log... function make_shift_location (line 897) | def make_shift_location(location_name, latitude, longitude, checkin_radi... function create_leave_allocation (line 911) | def create_leave_allocation(employee, leave_type, from_date, to_date, ne... FILE: hrms/hr/doctype/employee_feedback_criteria/employee_feedback_criteria.py class EmployeeFeedbackCriteria (line 8) | class EmployeeFeedbackCriteria(Document): FILE: hrms/hr/doctype/employee_feedback_criteria/test_employee_feedback_criteria.py class TestEmployeeFeedbackCriteria (line 8) | class TestEmployeeFeedbackCriteria(HRMSTestSuite): FILE: hrms/hr/doctype/employee_feedback_rating/employee_feedback_rating.py class EmployeeFeedbackRating (line 8) | class EmployeeFeedbackRating(Document): FILE: hrms/hr/doctype/employee_grade/employee_grade.py class EmployeeGrade (line 8) | class EmployeeGrade(Document): FILE: hrms/hr/doctype/employee_grade/employee_grade_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/employee_grade/test_employee_grade.py class TestEmployeeGrade (line 7) | class TestEmployeeGrade(HRMSTestSuite): FILE: hrms/hr/doctype/employee_grievance/employee_grievance.py class EmployeeGrievance (line 9) | class EmployeeGrievance(Document): method on_submit (line 39) | def on_submit(self): method on_discard (line 47) | def on_discard(self): FILE: hrms/hr/doctype/employee_grievance/test_employee_grievance.py class TestEmployeeGrievance (line 12) | class TestEmployeeGrievance(HRMSTestSuite): method test_create_employee_grievance (line 13) | def test_create_employee_grievance(self): method test_status_on_discard (line 26) | def test_status_on_discard(self): function create_employee_grievance (line 39) | def create_employee_grievance(raised_by, raised_against, grievance_type): function create_grievance_type (line 61) | def create_grievance_type(): FILE: hrms/hr/doctype/employee_health_insurance/employee_health_insurance.py class EmployeeHealthInsurance (line 8) | class EmployeeHealthInsurance(Document): FILE: hrms/hr/doctype/employee_health_insurance/test_employee_health_insurance.py class TestEmployeeHealthInsurance (line 7) | class TestEmployeeHealthInsurance(HRMSTestSuite): FILE: hrms/hr/doctype/employee_onboarding/employee_onboarding.js method mark_as_completed (line 113) | mark_as_completed(frm) { FILE: hrms/hr/doctype/employee_onboarding/employee_onboarding.py class IncompleteTaskError (line 13) | class IncompleteTaskError(frappe.ValidationError): class EmployeeOnboarding (line 17) | class EmployeeOnboarding(EmployeeBoardingController): method validate (line 49) | def validate(self): method set_employee (line 54) | def set_employee(self): method validate_duplicate_employee_onboarding (line 58) | def validate_duplicate_employee_onboarding(self): method validate_employee_creation (line 69) | def validate_employee_creation(self): method on_submit (line 84) | def on_submit(self): method on_update_after_submit (line 87) | def on_update_after_submit(self): method on_cancel (line 90) | def on_cancel(self): method mark_onboarding_as_completed (line 94) | def mark_onboarding_as_completed(self): function make_employee (line 103) | def make_employee(source_name: str, target_doc: str | Document | None = ... FILE: hrms/hr/doctype/employee_onboarding/test_employee_onboarding.py class TestEmployeeOnboarding (line 17) | class TestEmployeeOnboarding(HRMSTestSuite): method test_employee_onboarding_incomplete_task (line 18) | def test_employee_onboarding_incomplete_task(self): method test_mark_onboarding_as_completed (line 62) | def test_mark_onboarding_as_completed(self): function get_job_applicant (line 83) | def get_job_applicant(): function get_job_offer (line 96) | def get_job_offer(applicant_name): function create_employee_onboarding (line 106) | def create_employee_onboarding(): function get_task_dates (line 143) | def get_task_dates(task: str) -> tuple[str, str]: FILE: hrms/hr/doctype/employee_onboarding_template/employee_onboarding_template.py class EmployeeOnboardingTemplate (line 8) | class EmployeeOnboardingTemplate(Document): FILE: hrms/hr/doctype/employee_onboarding_template/employee_onboarding_template_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/employee_onboarding_template/test_employee_onboarding_template.py class TestEmployeeOnboardingTemplate (line 7) | class TestEmployeeOnboardingTemplate(HRMSTestSuite): FILE: hrms/hr/doctype/employee_performance_feedback/employee_performance_feedback.js method onload (line 5) | onload(frm) { method refresh (line 9) | refresh(frm) { method employee (line 13) | employee(frm) { method appraisal (line 17) | appraisal(frm) { method set_filters (line 25) | set_filters(frm) { method set_reviewer (line 43) | set_reviewer(frm) { FILE: hrms/hr/doctype/employee_performance_feedback/employee_performance_feedback.py class EmployeePerformanceFeedback (line 14) | class EmployeePerformanceFeedback(Document, AppraisalMixin): method validate (line 43) | def validate(self): method on_submit (line 51) | def on_submit(self): method on_cancel (line 54) | def on_cancel(self): method validate_employee (line 57) | def validate_employee(self): method validate_appraisal (line 68) | def validate_appraisal(self): method set_total_score (line 76) | def set_total_score(self): method update_avg_feedback_score_in_appraisal (line 84) | def update_avg_feedback_score_in_appraisal(self): method set_feedback_criteria (line 92) | def set_feedback_criteria(self): FILE: hrms/hr/doctype/employee_performance_feedback/test_employee_performance_feedback.py class TestEmployeePerformanceFeedback (line 15) | class TestEmployeePerformanceFeedback(HRMSTestSuite): method setUp (line 16) | def setUp(self): method test_validate_employees (line 33) | def test_validate_employees(self): method test_set_feedback_criteria (line 46) | def test_set_feedback_criteria(self): method test_set_total_score (line 57) | def test_set_total_score(self): method test_update_avg_feedback_score_in_appraisal (line 74) | def test_update_avg_feedback_score_in_appraisal(self): method test_update_avg_feedback_score_on_cancel (line 106) | def test_update_avg_feedback_score_on_cancel(self): function create_performance_feedback (line 129) | def create_performance_feedback(employee, reviewer, appraisal): FILE: hrms/hr/doctype/employee_promotion/employee_promotion.py class EmployeePromotion (line 13) | class EmployeePromotion(Document): method validate (line 38) | def validate(self): method before_submit (line 41) | def before_submit(self): method on_submit (line 48) | def on_submit(self): method on_cancel (line 57) | def on_cancel(self): FILE: hrms/hr/doctype/employee_promotion/test_employee_promotion.py class TestEmployeePromotion (line 11) | class TestEmployeePromotion(HRMSTestSuite): method test_submit_before_promotion_date (line 12) | def test_submit_before_promotion_date(self): method test_employee_history (line 35) | def test_employee_history(self): FILE: hrms/hr/doctype/employee_property_history/employee_property_history.py class EmployeePropertyHistory (line 8) | class EmployeePropertyHistory(Document): FILE: hrms/hr/doctype/employee_referral/employee_referral.py class EmployeeReferral (line 13) | class EmployeeReferral(Document): method validate (line 44) | def validate(self): method validate_unique_referral (line 51) | def validate_unique_referral(self): method set_full_name (line 62) | def set_full_name(self): method set_status (line 65) | def set_status(self): method set_referral_bonus_payment_status (line 68) | def set_referral_bonus_payment_status(self): method on_discard (line 75) | def on_discard(self): function create_job_applicant (line 80) | def create_job_applicant(source_name: str, target_doc: str | Document | ... function create_additional_salary (line 113) | def create_additional_salary(employee_referral: str) -> Document: FILE: hrms/hr/doctype/employee_referral/employee_referral_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/employee_referral/test_employee_referral.py class TestEmployeeReferral (line 17) | class TestEmployeeReferral(HRMSTestSuite): method test_workflow_and_status_sync (line 18) | def test_workflow_and_status_sync(self): method test_status_on_discard (line 49) | def test_status_on_discard(self): method test_unique_referral (line 55) | def test_unique_referral(self): function create_employee_referral (line 63) | def create_employee_referral(email=None, do_not_submit=False): FILE: hrms/hr/doctype/employee_separation/employee_separation.py class EmployeeSeparation (line 8) | class EmployeeSeparation(EmployeeBoardingController): method validate (line 38) | def validate(self): method on_submit (line 41) | def on_submit(self): method on_update_after_submit (line 44) | def on_update_after_submit(self): method on_cancel (line 47) | def on_cancel(self): FILE: hrms/hr/doctype/employee_separation/test_employee_separation.py class TestEmployeeSeparation (line 10) | class TestEmployeeSeparation(HRMSTestSuite): method test_employee_separation (line 11) | def test_employee_separation(self): function create_employee_separation (line 29) | def create_employee_separation(): FILE: hrms/hr/doctype/employee_separation_template/employee_separation_template.py class EmployeeSeparationTemplate (line 8) | class EmployeeSeparationTemplate(Document): FILE: hrms/hr/doctype/employee_separation_template/employee_separation_template_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/employee_separation_template/test_employee_separation_template.py class TestEmployeeSeparationTemplate (line 7) | class TestEmployeeSeparationTemplate(HRMSTestSuite): FILE: hrms/hr/doctype/employee_skill/employee_skill.py class EmployeeSkill (line 9) | class EmployeeSkill(Document): FILE: hrms/hr/doctype/employee_skill_map/employee_skill_map.py class EmployeeSkillMap (line 9) | class EmployeeSkillMap(Document): FILE: hrms/hr/doctype/employee_training/employee_training.py class EmployeeTraining (line 9) | class EmployeeTraining(Document): FILE: hrms/hr/doctype/employee_transfer/employee_transfer.py class EmployeeTransfer (line 13) | class EmployeeTransfer(Document): method before_submit (line 39) | def before_submit(self): method on_submit (line 46) | def on_submit(self): method on_cancel (line 75) | def on_cancel(self): method validate_user_in_details (line 95) | def validate_user_in_details(self): FILE: hrms/hr/doctype/employee_transfer/test_employee_transfer.py class TestEmployeeTransfer (line 12) | class TestEmployeeTransfer(HRMSTestSuite): method setUp (line 13) | def setUp(self): method test_submit_before_transfer_date (line 16) | def test_submit_before_transfer_date(self): method test_new_employee_creation (line 41) | def test_new_employee_creation(self): method test_employee_history (line 65) | def test_employee_history(self): method test_data_formatting_in_history (line 100) | def test_data_formatting_in_history(self): function create_company (line 110) | def create_company(): function create_employee_transfer (line 122) | def create_employee_transfer(employee): FILE: hrms/hr/doctype/employment_type/employment_type.py class EmploymentType (line 8) | class EmploymentType(Document): FILE: hrms/hr/doctype/exit_interview/exit_interview.py class ExitInterview (line 12) | class ExitInterview(Document): method validate (line 44) | def validate(self): method validate_relieving_date (line 49) | def validate_relieving_date(self): method validate_duplicate_interview (line 58) | def validate_duplicate_interview(self): method set_employee_email (line 70) | def set_employee_email(self): method on_submit (line 74) | def on_submit(self): method on_cancel (line 80) | def on_cancel(self): method on_discard (line 84) | def on_discard(self): method update_interview_date_in_employee (line 87) | def update_interview_date_in_employee(self): function send_exit_questionnaire (line 95) | def send_exit_questionnaire(interviews: str | list) -> None: function get_interviews (line 132) | def get_interviews(interviews): function validate_questionnaire_settings (line 144) | def validate_questionnaire_settings(): function show_email_summary (line 163) | def show_email_summary(email_success, email_failure): FILE: hrms/hr/doctype/exit_interview/test_exit_interview.py class TestExitInterview (line 18) | class TestExitInterview(HRMSTestSuite): method test_duplicate_interview (line 19) | def test_duplicate_interview(self): method test_relieving_date_validation (line 27) | def test_relieving_date_validation(self): method test_interview_date_updated_in_employee_master (line 40) | def test_interview_date_updated_in_employee_master(self): method test_send_exit_questionnaire (line 57) | def test_send_exit_questionnaire(self): method test_status_on_discard (line 80) | def test_status_on_discard(self): function create_exit_interview (line 89) | def create_exit_interview(employee, save=True): function create_notification_template (line 109) | def create_notification_template(): FILE: hrms/hr/doctype/expected_skill_set/expected_skill_set.py class ExpectedSkillSet (line 9) | class ExpectedSkillSet(Document): FILE: hrms/hr/doctype/expense_claim/expense_claim.js function set_in_company_currency (line 644) | async function set_in_company_currency(frm, doc, fields, exchange_rate =... FILE: hrms/hr/doctype/expense_claim/expense_claim.py class InvalidExpenseApproverError (line 31) | class InvalidExpenseApproverError(frappe.ValidationError): class ExpenseApproverIdentityError (line 35) | class ExpenseApproverIdentityError(frappe.ValidationError): class MismatchError (line 39) | class MismatchError(frappe.ValidationError): class ExpenseClaim (line 43) | class ExpenseClaim(AccountsController, PWANotificationsMixin): method onload (line 97) | def onload(self): method after_insert (line 106) | def after_insert(self): method validate (line 109) | def validate(self): method set_status (line 123) | def set_status(self, update=False): method validate_company_and_department (line 156) | def validate_company_and_department(self): method validate_for_self_approval (line 165) | def validate_for_self_approval(self): method on_update (line 177) | def on_update(self): method after_delete (line 182) | def after_delete(self): method on_discard (line 185) | def on_discard(self): method before_submit (line 189) | def before_submit(self): method publish_update (line 195) | def publish_update(self): method on_submit (line 200) | def on_submit(self): method on_update_after_submit (line 212) | def on_update_after_submit(self): method on_cancel (line 217) | def on_cancel(self): method update_claimed_amount_in_employee_advance (line 234) | def update_claimed_amount_in_employee_advance(self): method update_task_and_project (line 238) | def update_task_and_project(self): method make_gl_entries (line 257) | def make_gl_entries(self, cancel=False): method get_gl_entries (line 262) | def get_gl_entries(self): method add_tax_gl_entries (line 384) | def add_tax_gl_entries(self, gl_entries): method set_default_accounting_dimension (line 406) | def set_default_accounting_dimension(self): method create_exchange_gain_loss_je (line 426) | def create_exchange_gain_loss_je(self): method validate_account_details (line 482) | def validate_account_details(self): method calculate_total_amount (line 495) | def calculate_total_amount(self): method set_base_fields_amount (line 511) | def set_base_fields_amount(self, doc, fields, exchange_rate=None): method calculate_taxes (line 522) | def calculate_taxes(self): method validate_advances (line 547) | def validate_advances(self): method validate_sanctioned_amount (line 577) | def validate_sanctioned_amount(self): method set_expense_account (line 584) | def set_expense_account(self, validate=False): method update_against_claim_in_pe (line 591) | def update_against_claim_in_pe(self): function update_reimbursed_amount (line 621) | def update_reimbursed_amount(doc): function get_total_reimbursed_amount (line 630) | def get_total_reimbursed_amount(doc): function get_outstanding_amount_for_claim (line 657) | def get_outstanding_amount_for_claim(claim): function make_bank_entry (line 684) | def make_bank_entry(dt: str, dn: str) -> dict: function get_expense_claim_account_and_cost_center (line 728) | def get_expense_claim_account_and_cost_center(expense_claim_type: str, c... function get_expense_claim_account (line 736) | def get_expense_claim_account(expense_claim_type: str, company: str) -> ... function get_advances (line 752) | def get_advances(expense_claim: str | dict | Document, advance_id: str |... function get_expense_claim (line 794) | def get_expense_claim(employee_advance: str | dict, payment_via_journal_... function get_expense_claim_advances (line 826) | def get_expense_claim_advances(expense_claim, employee_advance): function update_payment_for_expense_claim (line 917) | def update_payment_for_expense_claim(doc, method=None): function update_outstanding_amount_in_payment_entry (line 942) | def update_outstanding_amount_in_payment_entry(expense_claim: dict, pe_r... function validate_expense_claim_in_jv (line 949) | def validate_expense_claim_in_jv(doc, method=None): function make_expense_claim_for_delivery_trip (line 966) | def make_expense_claim_for_delivery_trip( function get_allocation_amount (line 980) | def get_allocation_amount( FILE: hrms/hr/doctype/expense_claim/expense_claim_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/expense_claim/test_expense_claim.py class TestExpenseClaim (line 24) | class TestExpenseClaim(HRMSTestSuite): method setUp (line 25) | def setUp(self): method test_total_expense_claim_for_project (line 42) | def test_total_expense_claim_for_project(self): method test_expense_claim_status_as_payment_from_journal_entry (line 72) | def test_expense_claim_status_as_payment_from_journal_entry(self): method test_expense_claim_status_as_payment_from_payment_entry (line 95) | def test_expense_claim_status_as_payment_from_payment_entry(self): method test_expense_claim_status_as_payment_allocation_using_pr (line 109) | def test_expense_claim_status_as_payment_allocation_using_pr(self): method test_expense_claim_against_fully_paid_advances (line 164) | def test_expense_claim_against_fully_paid_advances(self): method test_advance_amount_allocation_against_claim_with_taxes (line 190) | def test_advance_amount_allocation_against_claim_with_taxes(self): method test_expense_claim_partially_paid_via_advance (line 224) | def test_expense_claim_partially_paid_via_advance(self): method test_expense_claim_with_deducted_returned_advance (line 257) | def test_expense_claim_with_deducted_returned_advance(self): method test_expense_claim_gl_entry (line 315) | def test_expense_claim_gl_entry(self): method test_invalid_gain_loss_for_expense_claim (line 353) | def test_invalid_gain_loss_for_expense_claim(self): method test_rejected_expense_claim (line 388) | def test_rejected_expense_claim(self): method test_expense_approver_perms (line 403) | def test_expense_approver_perms(self): method test_multiple_payment_entries_against_expense (line 432) | def test_multiple_payment_entries_against_expense(self): method test_expense_claim_against_delivery_trip (line 472) | def test_expense_claim_against_delivery_trip(self): method test_journal_entry_against_expense_claim (line 490) | def test_journal_entry_against_expense_claim(self): method test_accounting_dimension_mapping (line 508) | def test_accounting_dimension_mapping(self): method test_rounding (line 538) | def test_rounding(self): method test_repost (line 563) | def test_repost(self): method test_company_department_validation (line 618) | def test_company_department_validation(self): method test_self_expense_approval (line 625) | def test_self_expense_approval(self): method test_self_expense_approval_not_allowed (line 653) | def test_self_expense_approval_not_allowed(self): method test_multicurrency_claim (line 697) | def test_multicurrency_claim(self): method test_advance_claim_multicurrency_gain_loss (line 807) | def test_advance_claim_multicurrency_gain_loss(self): method test_expense_claim_status_as_payment_after_unreconciliation (line 874) | def test_expense_claim_status_as_payment_after_unreconciliation(self): method test_status_on_discard (line 917) | def test_status_on_discard(self): function get_payable_account (line 930) | def get_payable_account(company): function generate_taxes (line 934) | def generate_taxes(company=None, rate=None) -> dict: function make_expense_claim (line 960) | def make_expense_claim( function make_claim_payment_entry (line 1017) | def make_claim_payment_entry(expense_claim, amount): function make_journal_entry (line 1031) | def make_journal_entry(expense_claim, do_not_submit=False): function create_payment_reconciliation (line 1044) | def create_payment_reconciliation(company, employee, payable_account): function allocate_using_payment_reconciliation (line 1054) | def allocate_using_payment_reconciliation(expense_claim, employee, journ... function create_project (line 1064) | def create_project(project_name, **args): FILE: hrms/hr/doctype/expense_claim_account/expense_claim_account.py class ExpenseClaimAccount (line 8) | class ExpenseClaimAccount(Document): FILE: hrms/hr/doctype/expense_claim_advance/expense_claim_advance.py class ExpenseClaimAdvance (line 8) | class ExpenseClaimAdvance(Document): FILE: hrms/hr/doctype/expense_claim_detail/expense_claim_detail.py class ExpenseClaimDetail (line 8) | class ExpenseClaimDetail(Document): FILE: hrms/hr/doctype/expense_claim_type/expense_claim_type.py class ExpenseClaimType (line 10) | class ExpenseClaimType(Document): method validate (line 27) | def validate(self): method validate_repeating_companies (line 31) | def validate_repeating_companies(self): method validate_accounts (line 40) | def validate_accounts(self): FILE: hrms/hr/doctype/expense_claim_type/test_expense_claim_type.py class TestExpenseClaimType (line 9) | class TestExpenseClaimType(HRMSTestSuite): FILE: hrms/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.py class ExpenseTaxesandCharges (line 9) | class ExpenseTaxesandCharges(Document): FILE: hrms/hr/doctype/full_and_final_asset/full_and_final_asset.py class FullandFinalAsset (line 8) | class FullandFinalAsset(Document): FILE: hrms/hr/doctype/full_and_final_asset/test_full_and_final_asset.py class TestFullandFinalAsset (line 8) | class TestFullandFinalAsset(HRMSTestSuite): FILE: hrms/hr/doctype/full_and_final_outstanding_statement/full_and_final_outstanding_statement.py class FullandFinalOutstandingStatement (line 8) | class FullandFinalOutstandingStatement(Document): FILE: hrms/hr/doctype/full_and_final_statement/full_and_final_statement.py class FullandFinalStatement (line 15) | class FullandFinalStatement(Document): method before_insert (line 47) | def before_insert(self): method validate (line 51) | def validate(self): method before_submit (line 57) | def before_submit(self): method on_submit (line 62) | def on_submit(self): method on_cancel (line 65) | def on_cancel(self): method on_discard (line 69) | def on_discard(self): method validate_relieving_date (line 72) | def validate_relieving_date(self): method validate_settlement (line 82) | def validate_settlement(self, component_type): method validate_assets (line 90) | def validate_assets(self): method get_outstanding_statements (line 107) | def get_outstanding_statements(self): method get_assets_statements (line 122) | def get_assets_statements(self): method set_total_asset_recovery_cost (line 127) | def set_total_asset_recovery_cost(self): method set_totals (line 139) | def set_totals(self): method add_withheld_salary_slips (line 149) | def add_withheld_salary_slips(self): method create_component_row (line 173) | def create_component_row(self, components, component_type): method get_payable_component (line 184) | def get_payable_component(self): method get_receivable_component (line 192) | def get_receivable_component(self): method get_assets_movement (line 198) | def get_assets_movement(self): method create_journal_entry (line 236) | def create_journal_entry(self): method update_reference_document_payment_status (line 295) | def update_reference_document_payment_status(self, payable): method update_linked_payable_documents (line 301) | def update_linked_payable_documents(self): function get_account_and_amount (line 309) | def get_account_and_amount(ref_doctype: str, ref_document: str, company:... function update_full_and_final_statement_status (line 365) | def update_full_and_final_statement_status(doc, method=None): FILE: hrms/hr/doctype/full_and_final_statement/full_and_final_statement_loan_utils.py function process_loan_accrual (line 16) | def process_loan_accrual(doc: "FullandFinalStatement"): function cancel_loan_repayment (line 80) | def cancel_loan_repayment(doc: "FullandFinalStatement"): FILE: hrms/hr/doctype/full_and_final_statement/test_full_and_final_statement.py class TestFullandFinalStatement (line 13) | class TestFullandFinalStatement(HRMSTestSuite): method setUp (line 14) | def setUp(self): method setup_fnf (line 17) | def setup_fnf(self): method test_check_bootstraped_data_asset_movement_and_jv_creation (line 24) | def test_check_bootstraped_data_asset_movement_and_jv_creation(self): method test_asset_cost (line 43) | def test_asset_cost(self): method test_journal_entry (line 54) | def test_journal_entry(self): method test_status_on_discard (line 69) | def test_status_on_discard(self): function create_full_and_final_statement (line 75) | def create_full_and_final_statement(employee): function create_asset_movement (line 83) | def create_asset_movement(employee): function create_asset (line 97) | def create_asset(): FILE: hrms/hr/doctype/goal/goal.js method refresh (line 5) | refresh(frm) { method set_filters (line 18) | set_filters(frm) { method add_custom_buttons (line 49) | add_custom_buttons(frm) { method kra (line 98) | kra(frm) { method is_group (line 129) | is_group(frm) { FILE: hrms/hr/doctype/goal/goal.py class Goal (line 16) | class Goal(NestedSet): method before_insert (line 46) | def before_insert(self): method validate (line 50) | def validate(self): method on_update (line 60) | def on_update(self): method on_trash (line 75) | def on_trash(self): method after_delete (line 78) | def after_delete(self): method validate_parent_fields (line 82) | def validate_parent_fields(self): method validate_progress (line 106) | def validate_progress(self): method set_status (line 110) | def set_status(self, status=None): method update_kra_in_child_goals (line 120) | def update_kra_in_child_goals(self, doc_before_save): method update_parent_progress (line 128) | def update_parent_progress(self, old_parent=None): method update_goal_progress_in_appraisal (line 152) | def update_goal_progress_in_appraisal(self): function get_children (line 165) | def get_children(doctype: str, parent: str, is_root: bool = False, **fil... function _update_goal_completion_status (line 213) | def _update_goal_completion_status(goals: list[dict]) -> list[dict]: function update_progress (line 227) | def update_progress(progress: float, goal: str) -> None: function update_status (line 237) | def update_status(status: str, goals: str | list) -> None: function add_tree_node (line 255) | def add_tree_node(): FILE: hrms/hr/doctype/goal/goal_list.js method end_date (line 16) | end_date(value, df, doc) { FILE: hrms/hr/doctype/goal/goal_tree.js method get_query (line 18) | get_query() { method default (line 63) | default() { method get_query (line 107) | get_query() { method default (line 118) | default() { method get_query (line 137) | get_query() { method default (line 146) | default() { method onload (line 163) | onload(treeview) { method onrender (line 175) | onrender(node) { method post_render (line 217) | post_render(treeview) { method get_label (line 221) | get_label(node) { function update_progress (line 271) | function update_progress(node, progress) { FILE: hrms/hr/doctype/goal/test_goal.py class TestGoal (line 13) | class TestGoal(HRMSTestSuite): method setUp (line 14) | def setUp(self): method test_validate_parent_fields (line 20) | def test_validate_parent_fields(self): method test_set_status (line 36) | def test_set_status(self): method test_update_parent_progress (line 48) | def test_update_parent_progress(self): method test_update_parent_progress_on_goal_deletion (line 63) | def test_update_parent_progress_on_goal_deletion(self): method test_update_parent_progress_with_nested_goals (line 77) | def test_update_parent_progress_with_nested_goals(self): method test_update_old_parent_progress (line 103) | def test_update_old_parent_progress(self): method test_update_kra_in_child_goals (line 164) | def test_update_kra_in_child_goals(self): method test_update_status (line 179) | def test_update_status(self): function create_goal (line 211) | def create_goal( FILE: hrms/hr/doctype/grievance_type/grievance_type.py class GrievanceType (line 8) | class GrievanceType(Document): FILE: hrms/hr/doctype/grievance_type/test_grievance_type.py class TestGrievanceType (line 8) | class TestGrievanceType(HRMSTestSuite): FILE: hrms/hr/doctype/holiday_list_assignment/holiday_list_assignment.py class HolidayListAssignment (line 12) | class HolidayListAssignment(Document): method holiday_list_start (line 32) | def holiday_list_start(self): method holiday_list_end (line 36) | def holiday_list_end(self): method validate (line 39) | def validate(self): method validate_existing_assignment (line 43) | def validate_existing_assignment(self): method validate_assignment_start_date (line 60) | def validate_assignment_start_date(self): FILE: hrms/hr/doctype/holiday_list_assignment/test_holiday_list_assignment.py class IntegrationTestHolidayListAssignment (line 17) | class IntegrationTestHolidayListAssignment(HRMSTestSuite): method setUp (line 23) | def setUp(self): method test_exisitng_assignment (line 32) | def test_exisitng_assignment(self): method test_fetch_correct_holiday_list_assignment (line 49) | def test_fetch_correct_holiday_list_assignment(self): method test_default_to_company_holiday_list_assignment (line 71) | def test_default_to_company_holiday_list_assignment(self): function create_holiday_list_assignment (line 78) | def create_holiday_list_assignment( function assign_holiday_list (line 111) | def assign_holiday_list(holiday_list, company_name): FILE: hrms/hr/doctype/hr_settings/hr_settings.py class HRSettings (line 14) | class HRSettings(Document): method validate (line 59) | def validate(self): method set_naming_series (line 68) | def set_naming_series(self): method validate_frequency_change (line 78) | def validate_frequency_change(self): method freq_changed_from_weekly_to_monthly (line 105) | def freq_changed_from_weekly_to_monthly(self): method freq_changed_from_monthly_to_weekly (line 108) | def freq_changed_from_monthly_to_weekly(self): method show_freq_change_warning (line 111) | def show_freq_change_warning(self, from_date, to_date): function set_proceed_with_frequency_change (line 138) | def set_proceed_with_frequency_change(): FILE: hrms/hr/doctype/hr_settings/test_hr_settings.py class TestHRSettings (line 7) | class TestHRSettings(HRMSTestSuite): FILE: hrms/hr/doctype/identification_document_type/identification_document_type.py class IdentificationDocumentType (line 8) | class IdentificationDocumentType(Document): FILE: hrms/hr/doctype/identification_document_type/test_identification_document_type.py class TestIdentificationDocumentType (line 7) | class TestIdentificationDocumentType(HRMSTestSuite): FILE: hrms/hr/doctype/interest/interest.py class Interest (line 8) | class Interest(Document): FILE: hrms/hr/doctype/interest/test_interest.py class TestInterest (line 9) | class TestInterest(HRMSTestSuite): FILE: hrms/hr/doctype/interview/interview.js method primary_action (line 111) | primary_action(values) { method set_applicable_interviewers (line 217) | set_applicable_interviewers(frm) { method load_skills_average_rating (line 233) | load_skills_average_rating(frm) { method load_feedback (line 244) | load_feedback(frm) { method render_feedback (line 257) | render_feedback(frm) { method calculate_reviews_per_rating (line 271) | calculate_reviews_per_rating(frm) { FILE: hrms/hr/doctype/interview/interview.py class DuplicateInterviewRoundError (line 14) | class DuplicateInterviewRoundError(frappe.ValidationError): class Interview (line 18) | class Interview(Document): method validate (line 46) | def validate(self): method on_submit (line 50) | def on_submit(self): method validate_duplicate_interview (line 58) | def validate_duplicate_interview(self): method validate_designation (line 74) | def validate_designation(self): method show_job_applicant_update_dialog (line 87) | def show_job_applicant_update_dialog(self): method get_job_applicant_status (line 106) | def get_job_applicant_status(self) -> str | None: method reschedule_interview (line 111) | def reschedule_interview( method on_discard (line 153) | def on_discard(self): function get_interviewers (line 158) | def get_interviewers(interview_round: str) -> list[str]: function get_recipients (line 162) | def get_recipients(name, for_feedback=0): function get_feedback (line 179) | def get_feedback(interview: str) -> list[dict]: function get_skill_wise_average_rating (line 202) | def get_skill_wise_average_rating(interview: str) -> list[dict]: function update_job_applicant_status (line 220) | def update_job_applicant_status(status: str, job_applicant: str): function send_interview_reminder (line 243) | def send_interview_reminder(): function send_daily_feedback_reminder (line 290) | def send_daily_feedback_reminder(): function get_expected_skill_set (line 340) | def get_expected_skill_set(interview_round: str) -> list[dict]: function create_interview_feedback (line 347) | def create_interview_feedback(data: str | dict, interview_name: str, int... function get_interviewer_list (line 380) | def get_interviewer_list( function get_events (line 403) | def get_events(start: str, end: str, filters: str | None = None): FILE: hrms/hr/doctype/interview/test_interview.py class TestInterview (line 26) | class TestInterview(HRMSTestSuite): method test_validations_for_designation (line 27) | def test_validations_for_designation(self): method test_notification_on_rescheduling (line 34) | def test_notification_on_rescheduling(self): method test_notification_for_scheduling (line 60) | def test_notification_for_scheduling(self): method test_notification_for_feedback_submission (line 83) | def test_notification_for_feedback_submission(self): method test_get_interview_details_for_applicant_dashboard (line 104) | def test_get_interview_details_for_applicant_dashboard(self): method test_skill_wise_average_rating (line 121) | def test_skill_wise_average_rating(self): method test_get_feedback (line 141) | def test_get_feedback(self): method test_job_applicant_status_update_on_interview_submit (line 190) | def test_job_applicant_status_update_on_interview_submit(self): method test_status_on_discard (line 199) | def test_status_on_discard(self): function create_interview_and_dependencies (line 209) | def create_interview_and_dependencies( function create_interview_round (line 250) | def create_interview_round(name, skill_set, interviewers=None, designati... function create_skill_set (line 272) | def create_skill_set(skill_set): function create_interview_type (line 280) | def create_interview_type(name="test_interview_type"): function setup_reminder_settings (line 292) | def setup_reminder_settings(): FILE: hrms/hr/doctype/interview_detail/interview_detail.py class InterviewDetail (line 8) | class InterviewDetail(Document): FILE: hrms/hr/doctype/interview_feedback/interview_feedback.py class InterviewFeedback (line 12) | class InterviewFeedback(Document): method validate (line 34) | def validate(self): method on_submit (line 40) | def on_submit(self): method on_cancel (line 43) | def on_cancel(self): method validate_interviewer (line 46) | def validate_interviewer(self): method validate_interview_date (line 55) | def validate_interview_date(self): method validate_duplicate (line 65) | def validate_duplicate(self): method calculate_average_rating (line 78) | def calculate_average_rating(self): method update_interview_average_rating (line 88) | def update_interview_average_rating(self): function get_applicable_interviewers (line 104) | def get_applicable_interviewers(interview: str) -> list[str]: FILE: hrms/hr/doctype/interview_feedback/test_interview_feedback.py class TestInterviewFeedback (line 15) | class TestInterviewFeedback(HRMSTestSuite): method test_validation_for_skill_set (line 16) | def test_validation_for_skill_set(self): method test_average_ratings_on_feedback_submission_and_cancellation (line 35) | def test_average_ratings_on_feedback_submission_and_cancellation(self): function create_interview_feedback (line 73) | def create_interview_feedback(interview, interviewer, skills_ratings): function get_skills_rating (line 88) | def get_skills_rating(interview_round): FILE: hrms/hr/doctype/interview_round/interview_round.py class InterviewRound (line 11) | class InterviewRound(Document): function create_interview (line 35) | def create_interview(interview_round: str) -> Document: FILE: hrms/hr/doctype/interview_round/test_interview_round.py class TestInterviewRound (line 9) | class TestInterviewRound(HRMSTestSuite): FILE: hrms/hr/doctype/interview_type/interview_type.py class InterviewType (line 9) | class InterviewType(Document): FILE: hrms/hr/doctype/interview_type/test_interview_type.py class TestInterviewType (line 8) | class TestInterviewType(HRMSTestSuite): FILE: hrms/hr/doctype/interviewer/interviewer.py class Interviewer (line 9) | class Interviewer(Document): FILE: hrms/hr/doctype/job_applicant/job_applicant.js method primary_action (line 96) | primary_action(values) { FILE: hrms/hr/doctype/job_applicant/job_applicant.py class DuplicationError (line 16) | class DuplicationError(frappe.ValidationError): class JobApplicant (line 20) | class JobApplicant(Document): method onload (line 49) | def onload(self): method autoname (line 54) | def autoname(self): method validate (line 61) | def validate(self): method before_insert (line 72) | def before_insert(self): method set_status_for_employee_referral (line 80) | def set_status_for_employee_referral(self): function create_interview (line 89) | def create_interview(job_applicant: str, interview_round: str) -> Document: function get_interview_details (line 116) | def get_interview_details(job_applicant: str) -> dict: function get_applicant_to_hire_percentage (line 135) | def get_applicant_to_hire_percentage() -> dict: FILE: hrms/hr/doctype/job_applicant/job_applicant_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/job_applicant/test_job_applicant.py class TestJobApplicant (line 14) | class TestJobApplicant(HRMSTestSuite): method test_job_applicant_naming (line 15) | def test_job_applicant_naming(self): method test_update_applicant_to_employee (line 36) | def test_update_applicant_to_employee(self): FILE: hrms/hr/doctype/job_applicant_source/job_applicant_source.py class JobApplicantSource (line 8) | class JobApplicantSource(Document): FILE: hrms/hr/doctype/job_applicant_source/test_job_applicant_source.py class TestJobApplicantSource (line 7) | class TestJobApplicantSource(HRMSTestSuite): FILE: hrms/hr/doctype/job_offer/job_offer.py class JobOffer (line 12) | class JobOffer(Document): method onload (line 39) | def onload(self): method validate (line 43) | def validate(self): method validate_vacancies (line 55) | def validate_vacancies(self): method on_change (line 67) | def on_change(self): method get_job_offer (line 70) | def get_job_offer(self, from_date, to_date): method on_discard (line 83) | def on_discard(self): function update_job_applicant (line 87) | def update_job_applicant(status, job_applicant): function get_staffing_plan_detail (line 92) | def get_staffing_plan_detail(designation, company, offer_date): function make_employee (line 117) | def make_employee(source_name: str, target_doc: str | Document | None = ... function get_offer_acceptance_rate (line 139) | def get_offer_acceptance_rate(company: str | None = None, department: st... FILE: hrms/hr/doctype/job_offer/test_job_offer.py class TestJobOffer (line 16) | class TestJobOffer(HRMSTestSuite): method setUp (line 17) | def setUp(self): method test_job_offer_creation_against_vacancies (line 20) | def test_job_offer_creation_against_vacancies(self): method test_job_applicant_update (line 39) | def test_job_applicant_update(self): method test_recruitment_metrics (line 55) | def test_recruitment_metrics(self): method test_status_on_save (line 70) | def test_status_on_save(self): function create_job_offer (line 78) | def create_job_offer(**args): function create_staffing_plan (line 100) | def create_staffing_plan(**args): FILE: hrms/hr/doctype/job_offer_term/job_offer_term.py class JobOfferTerm (line 8) | class JobOfferTerm(Document): FILE: hrms/hr/doctype/job_offer_term_template/job_offer_term_template.py class JobOfferTermTemplate (line 8) | class JobOfferTermTemplate(Document): FILE: hrms/hr/doctype/job_offer_term_template/test_job_offer_term_template.py class TestJobOfferTermTemplate (line 8) | class TestJobOfferTermTemplate(HRMSTestSuite): FILE: hrms/hr/doctype/job_opening/job_opening.py class JobOpening (line 19) | class JobOpening(WebsiteGenerator): method autoname (line 61) | def autoname(self): method validate (line 64) | def validate(self): method on_update (line 71) | def on_update(self): method update_closing_date (line 74) | def update_closing_date(self): method validate_dates (line 87) | def validate_dates(self): method validate_current_vacancies (line 93) | def validate_current_vacancies(self): method update_job_requisition_status (line 126) | def update_job_requisition_status(self): method get_context (line 135) | def get_context(self, context): function close_expired_job_openings (line 141) | def close_expired_job_openings(): FILE: hrms/hr/doctype/job_opening/job_opening_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/job_opening/test_job_opening.py class TestJobOpening (line 14) | class TestJobOpening(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_vacancies_fulfilled (line 18) | def test_vacancies_fulfilled(self): method test_close_expired_job_openings (line 52) | def test_close_expired_job_openings(self): function get_job_opening (line 72) | def get_job_opening(**args): FILE: hrms/hr/doctype/job_opening_template/job_opening_template.py class JobOpeningTemplate (line 8) | class JobOpeningTemplate(Document): FILE: hrms/hr/doctype/job_opening_template/test_job_opening_template.py class IntegrationTestJobOpeningTemplate (line 8) | class IntegrationTestJobOpeningTemplate(HRMSTestSuite): FILE: hrms/hr/doctype/job_requisition/job_requisition.py class JobRequisition (line 11) | class JobRequisition(Document): method validate (line 39) | def validate(self): method validate_duplicates (line 43) | def validate_duplicates(self): method set_time_to_fill (line 65) | def set_time_to_fill(self): method associate_job_opening (line 70) | def associate_job_opening(self, job_opening: str) -> None: function make_job_opening (line 83) | def make_job_opening(source_name: str, target_doc: str | Document | None... function get_avg_time_to_fill (line 111) | def get_avg_time_to_fill( FILE: hrms/hr/doctype/job_requisition/job_requisition_list.js method expected_by (line 15) | expected_by(value, df, doc) { FILE: hrms/hr/doctype/job_requisition/test_job_requisition.py class TestJobRequisition (line 14) | class TestJobRequisition(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_make_job_opening (line 18) | def test_make_job_opening(self): method test_associate_job_opening (line 30) | def test_associate_job_opening(self): method test_time_to_fill (line 39) | def test_time_to_fill(self): function make_job_requisition (line 49) | def make_job_requisition(**args): FILE: hrms/hr/doctype/kra/kra.py class KRA (line 8) | class KRA(Document): FILE: hrms/hr/doctype/kra/test_kra.py class TestKRA (line 8) | class TestKRA(HRMSTestSuite): FILE: hrms/hr/doctype/leave_adjustment/leave_adjustment.js method refresh (line 5) | refresh(frm) { method employee (line 17) | employee(frm) { method leave_type (line 22) | leave_type(frm) { method posting_date (line 28) | posting_date(frm) { FILE: hrms/hr/doctype/leave_adjustment/leave_adjustment.py class LeaveAdjustment (line 14) | class LeaveAdjustment(Document): method before_validate (line 39) | def before_validate(self): method before_save (line 44) | def before_save(self): method set_leaves_after_adjustment (line 47) | def set_leaves_after_adjustment(self): method validate (line 53) | def validate(self): method validate_duplicate_leave_adjustment (line 59) | def validate_duplicate_leave_adjustment(self): method validate_non_zero_adjustment (line 72) | def validate_non_zero_adjustment(self): method validate_over_allocation (line 76) | def validate_over_allocation(self): method validate_leave_balance (line 91) | def validate_leave_balance(self): method on_submit (line 106) | def on_submit(self): method on_cancel (line 109) | def on_cancel(self): method create_leave_ledger_entry (line 112) | def create_leave_ledger_entry(self, submit): function get_leave_allocation_for_posting_date (line 127) | def get_leave_allocation_for_posting_date( function get_allocated_leave_types (line 148) | def get_allocated_leave_types( FILE: hrms/hr/doctype/leave_adjustment/test_leave_adjustment.py class TestLeaveAdjustment (line 17) | class TestLeaveAdjustment(HRMSTestSuite): method setUp (line 18) | def setUp(self): method test_duplicate_leave_adjustment (line 30) | def test_duplicate_leave_adjustment(self): method test_adjustment_for_over_allocation (line 37) | def test_adjustment_for_over_allocation(self): method test_adjustment_for_negative_leave_balance (line 52) | def test_adjustment_for_negative_leave_balance(self): method test_increase_balance_with_adjustment (line 69) | def test_increase_balance_with_adjustment(self): method test_decrease_balance_with_adjustment (line 80) | def test_decrease_balance_with_adjustment(self): method test_decrease_balance_after_leave_is_applied (line 87) | def test_decrease_balance_after_leave_is_applied(self): method test_precision (line 110) | def test_precision(self): method test_back_dated_leave_adjustment (line 118) | def test_back_dated_leave_adjustment(self): method test_reduction_type_adjustment_while_carry_forwarding_leaves (line 152) | def test_reduction_type_adjustment_while_carry_forwarding_leaves(self): method test_allocate_type_adjustment_while_carry_forwarding_leaves (line 189) | def test_allocate_type_adjustment_while_carry_forwarding_leaves(self): function create_leave_adjustment (line 227) | def create_leave_adjustment(leave_allocation, adjustment_type, leaves_to... FILE: hrms/hr/doctype/leave_allocation/leave_allocation.js method primary_action (line 83) | primary_action(values) { FILE: hrms/hr/doctype/leave_allocation/leave_allocation.py class OverlapError (line 20) | class OverlapError(frappe.ValidationError): class BackDatedAllocationError (line 24) | class BackDatedAllocationError(frappe.ValidationError): class OverAllocationError (line 28) | class OverAllocationError(frappe.ValidationError): class LessAllocationError (line 32) | class LessAllocationError(frappe.ValidationError): class ValueMultiplierError (line 36) | class ValueMultiplierError(frappe.ValidationError): class LeaveAllocation (line 40) | class LeaveAllocation(Document): method validate (line 75) | def validate(self): method validate_leave_days_and_dates (line 83) | def validate_leave_days_and_dates(self): method validate_leave_allocation_days (line 89) | def validate_leave_allocation_days(self): method on_submit (line 113) | def on_submit(self): method on_cancel (line 121) | def on_cancel(self): method on_update_after_submit (line 129) | def on_update_after_submit(self): method get_existing_leave_count (line 153) | def get_existing_leave_count(self): method validate_earned_leave_update (line 170) | def validate_earned_leave_update(self): method validate_against_leave_applications (line 183) | def validate_against_leave_applications(self): method update_leave_policy_assignments_when_no_allocations_left (line 202) | def update_leave_policy_assignments_when_no_allocations_left(self): method validate_period (line 212) | def validate_period(self): method validate_lwp (line 216) | def validate_lwp(self): method validate_allocation_overlap (line 222) | def validate_allocation_overlap(self): method validate_back_dated_allocation (line 248) | def validate_back_dated_allocation(self): method set_total_leaves_allocated (line 266) | def set_total_leaves_allocated(self): method limit_carry_forward_based_on_max_allowed_leaves (line 289) | def limit_carry_forward_based_on_max_allowed_leaves(self): method set_carry_forwarded_leaves_in_previous_allocation (line 295) | def set_carry_forwarded_leaves_in_previous_allocation(self, on_cancel=... method validate_total_leaves_allocated (line 308) | def validate_total_leaves_allocated(self): method create_leave_ledger_entry (line 329) | def create_leave_ledger_entry(self, submit=True): method allocate_leaves_manually (line 354) | def allocate_leaves_manually(self, new_leaves: str | float, from_date:... method get_monthly_earned_leave (line 409) | def get_monthly_earned_leave(self): method create_leave_adjustment (line 433) | def create_leave_adjustment( method retry_failed_allocations (line 455) | def retry_failed_allocations(self, failed_allocations: list) -> None: function get_previous_allocation (line 514) | def get_previous_allocation(from_date, leave_type, employee): function get_leave_allocation_for_period (line 539) | def get_leave_allocation_for_period(employee, leave_type, from_date, to_... function get_carry_forwarded_leaves (line 560) | def get_carry_forwarded_leaves(employee, leave_type, date, carry_forward... function get_unused_leaves (line 579) | def get_unused_leaves(employee, leave_type, from_date, to_date): function validate_carry_forward (line 595) | def validate_carry_forward(leave_type): function show_expire_leave_dialog (line 600) | def show_expire_leave_dialog(expired_leaves, leave_type): function expire_carried_forward_allocation (line 616) | def expire_carried_forward_allocation(): FILE: hrms/hr/doctype/leave_allocation/leave_allocation_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/leave_allocation/test_earned_leave_schedule.py class TestLeaveAllocation (line 12) | class TestLeaveAllocation(HRMSTestSuite): method setUp (line 13) | def setUp(self): method test_schedule_for_monthly_earned_leave_allocated_on_first_day (line 28) | def test_schedule_for_monthly_earned_leave_allocated_on_first_day(self): method test_schedule_for_monthly_earned_leave_allocated_on_last_day (line 51) | def test_schedule_for_monthly_earned_leave_allocated_on_last_day(self): method test_schedule_for_monthly_earned_leave_allocated_on_doj (line 74) | def test_schedule_for_monthly_earned_leave_allocated_on_doj(self): method test_schedule_for_quaterly_earned_leave_allocated_on_first_day (line 98) | def test_schedule_for_quaterly_earned_leave_allocated_on_first_day(self): method test_schedule_for_quaterly_earned_leave_allocated_on_last_day (line 121) | def test_schedule_for_quaterly_earned_leave_allocated_on_last_day(self): method test_schedule_for_half_yearly_earned_leave_allocated_on_first_day (line 144) | def test_schedule_for_half_yearly_earned_leave_allocated_on_first_day(... method test_schedule_for_half_yearly_earned_leave_allocated_on_last_day (line 168) | def test_schedule_for_half_yearly_earned_leave_allocated_on_last_day(s... method test_schedule_for_yearly_earned_leave_allocated_on_first_day (line 191) | def test_schedule_for_yearly_earned_leave_allocated_on_first_day(self): method test_schedule_for_yearly_earned_leave_allocated_on_last_day (line 214) | def test_schedule_for_yearly_earned_leave_allocated_on_last_day(self): method test_schedule_when_doj_is_in_the_middle_of_leave_period (line 237) | def test_schedule_when_doj_is_in_the_middle_of_leave_period(self): method test_schedule_when_assignment_is_based_on_doj (line 257) | def test_schedule_when_assignment_is_based_on_doj(self): method test_schedule_when_leave_policy_is_assigned_in_middle_of_the_period_allocated_on_first_day (line 277) | def test_schedule_when_leave_policy_is_assigned_in_middle_of_the_perio... method test_schedule_when_leave_policy_is_assigned_in_middle_of_the_period_allocated_on_last_day (line 295) | def test_schedule_when_leave_policy_is_assigned_in_middle_of_the_perio... method test_schedule_when_doj_is_end_of_big_month (line 313) | def test_schedule_when_doj_is_end_of_big_month(self): method test_absence_of_earned_leave_schedule_for_non_earned_leave_types (line 341) | def test_absence_of_earned_leave_schedule_for_non_earned_leave_types(s... function test_allocation_dates (line 368) | def test_allocation_dates( function create_earned_leave_schedule (line 401) | def create_earned_leave_schedule( function get_first_days_of_the_months (line 429) | def get_first_days_of_the_months(start_date, end_date): function get_last_days_of_the_months (line 434) | def get_last_days_of_the_months(start_date, end_date): function get_doj_for_months (line 443) | def get_doj_for_months(date_of_joining, start_date, end_date): function get_first_days_of_quarters (line 454) | def get_first_days_of_quarters(start_date, end_date): function get_last_days_of_quarters (line 459) | def get_last_days_of_quarters(start_date, end_date): function get_first_days_of_half_years (line 468) | def get_first_days_of_half_years(start_date, end_date): function get_last_days_of_half_years (line 473) | def get_last_days_of_half_years(start_date, end_date): function get_first_days_of_years (line 480) | def get_first_days_of_years(start_date, end_date): function get_last_days_of_years (line 485) | def get_last_days_of_years(start_date, end_date): FILE: hrms/hr/doctype/leave_allocation/test_earned_leaves.py class TestLeaveAllocation (line 31) | class TestLeaveAllocation(HRMSTestSuite): method setUp (line 32) | def setUp(self): method test_earned_leave_allocation (line 52) | def test_earned_leave_allocation(self): method test_earned_leave_update_after_submission (line 62) | def test_earned_leave_update_after_submission(self): method test_alloc_based_on_leave_period (line 75) | def test_alloc_based_on_leave_period(self): method test_alloc_on_month_end_based_on_leave_period (line 86) | def test_alloc_on_month_end_based_on_leave_period(self): method test_alloc_based_on_leave_period_with_cf_leaves (line 98) | def test_alloc_based_on_leave_period_with_cf_leaves(self): method test_alloc_based_on_joining_date (line 130) | def test_alloc_based_on_joining_date(self): method test_alloc_on_doj_based_on_leave_period (line 153) | def test_alloc_on_doj_based_on_leave_period(self): method test_alloc_on_doj_based_on_joining_date (line 170) | def test_alloc_on_doj_based_on_joining_date(self): method test_earned_leaves_creation (line 193) | def test_earned_leaves_creation(self): method test_overallocation (line 216) | def test_overallocation(self): method test_over_allocation_during_assignment_creation (line 240) | def test_over_allocation_during_assignment_creation(self): method test_overallocation_with_carry_forwarding (line 260) | def test_overallocation_with_carry_forwarding(self): method test_allocate_on_first_day (line 300) | def test_allocate_on_first_day(self): method test_allocate_on_last_day (line 320) | def test_allocate_on_last_day(self): method test_allocate_on_date_of_joining (line 346) | def test_allocate_on_date_of_joining(self): method test_backdated_pro_rated_allocation (line 378) | def test_backdated_pro_rated_allocation(self): method test_no_pro_rated_leaves_allocated_before_effective_date (line 400) | def test_no_pro_rated_leaves_allocated_before_effective_date(self): method test_pro_rated_allocation_via_scheduler (line 415) | def test_pro_rated_allocation_via_scheduler(self): method test_get_earned_leave_details_for_dashboard (line 438) | def test_get_earned_leave_details_for_dashboard(self): method test_allocate_leaves_manually (line 485) | def test_allocate_leaves_manually(self): method test_quarterly_earned_leaves_allocated_on_last_day_in_the_middle_of_leave_period (line 524) | def test_quarterly_earned_leaves_allocated_on_last_day_in_the_middle_o... method test_quarterly_earned_leaves_allocated_on_last_day_at_the_start_of_the_leave_period (line 547) | def test_quarterly_earned_leaves_allocated_on_last_day_at_the_start_of... method test_quartertly_earned_leaves_allocated_on_first_day_at_the_start_of_leave_period (line 568) | def test_quartertly_earned_leaves_allocated_on_first_day_at_the_start_... method test_quarterly_earned_leaves_allocated_by_the_scheduler (line 589) | def test_quarterly_earned_leaves_allocated_by_the_scheduler(self): method test_quarterly_leaves_allocated_pro_rated (line 626) | def test_quarterly_leaves_allocated_pro_rated(self): method test_half_yearly_earned_leaves_allocated_on_last_day_at_the_start_of_leave_period (line 664) | def test_half_yearly_earned_leaves_allocated_on_last_day_at_the_start_... method test_half_yearly_earned_leaves_allocated_on_last_day_in_the_middle_of_leave_period (line 685) | def test_half_yearly_earned_leaves_allocated_on_last_day_in_the_middle... method test_half_yearly_earned_leaves_allocated_on_first_day_at_the_start_of_leave_period (line 706) | def test_half_yearly_earned_leaves_allocated_on_first_day_at_the_start... method test_half_yearly_earned_leaves_allocated_by_the_scheduler (line 727) | def test_half_yearly_earned_leaves_allocated_by_the_scheduler(self): method test_half_yearly_leaves_allocated_pro_rated (line 759) | def test_half_yearly_leaves_allocated_pro_rated(self): method test_yearly_leaves_allocated_on_last_day_at_the_start_of_the_period (line 795) | def test_yearly_leaves_allocated_on_last_day_at_the_start_of_the_perio... method test_yearly_leaves_allocated_on_last_day_in_the_middle_of_the_period (line 816) | def test_yearly_leaves_allocated_on_last_day_in_the_middle_of_the_peri... method test_yearly_leaves_allocated_on_first_day_at_the_start_of_the_period (line 837) | def test_yearly_leaves_allocated_on_first_day_at_the_start_of_the_peri... method test_yearly_leaves_allocated_by_scheduler (line 858) | def test_yearly_leaves_allocated_by_scheduler(self): method test_yearly_leaves_allocated_pro_rated (line 889) | def test_yearly_leaves_allocated_pro_rated(self): method test_error_logging_failed_allocations (line 925) | def test_error_logging_failed_allocations(self): method test_send_email_for_failed_allocations (line 949) | def test_send_email_for_failed_allocations(self): method test_retry_failed_allocations (line 975) | def test_retry_failed_allocations(self): method test_permission_check_for_retrying_failed_allocation (line 1016) | def test_permission_check_for_retrying_failed_allocation(self): method test_allocating_earned_leave_when_schedule_doesnt_exist (line 1047) | def test_allocating_earned_leave_when_schedule_doesnt_exist(self): function create_earned_leave_type (line 1107) | def create_earned_leave_type( function create_leave_period (line 1126) | def create_leave_period(name, start_date=None, end_date=None): function make_policy_assignment (line 1142) | def make_policy_assignment( function get_allocated_leaves (line 1178) | def get_allocated_leaves(assignment): function allocate_earned_leaves_for_months (line 1186) | def allocate_earned_leaves_for_months(months): FILE: hrms/hr/doctype/leave_allocation/test_leave_allocation.py class TestLeaveAllocation (line 15) | class TestLeaveAllocation(HRMSTestSuite): method setUp (line 16) | def setUp(self): method test_overlapping_allocation (line 20) | def test_overlapping_allocation(self): method test_invalid_period (line 48) | def test_invalid_period(self): method test_validation_for_over_allocation (line 65) | def test_validation_for_over_allocation(self): method test_validation_for_over_allocation_post_submission (line 103) | def test_validation_for_over_allocation_post_submission(self): method test_validation_for_over_allocation_based_on_leave_setup (line 121) | def test_validation_for_over_allocation_based_on_leave_setup(self): method test_validation_for_over_allocation_based_on_leave_setup_post_submission (line 158) | def test_validation_for_over_allocation_based_on_leave_setup_post_subm... method test_validate_back_dated_allocation_update (line 202) | def test_validate_back_dated_allocation_update(self): method test_carry_forward_calculation (line 230) | def test_carry_forward_calculation(self): method test_precision (line 279) | def test_precision(self): method test_carry_forward_leaves_expiry (line 310) | def test_carry_forward_leaves_expiry(self): method test_carry_forward_leaves_expiry_after_partially_used_leaves (line 354) | def test_carry_forward_leaves_expiry_after_partially_used_leaves(self): method test_carry_forward_leaves_expiry_after_completely_used_leaves (line 405) | def test_carry_forward_leaves_expiry_after_completely_used_leaves(self): method test_creation_of_leave_ledger_entry_on_submit (line 455) | def test_creation_of_leave_ledger_entry_on_submit(self): method test_leave_addition_after_submit (line 474) | def test_leave_addition_after_submit(self): method test_leave_addition_after_submit_with_carry_forward (line 497) | def test_leave_addition_after_submit_with_carry_forward(self): method test_leave_subtraction_after_submit (line 526) | def test_leave_subtraction_after_submit(self): method test_leave_subtraction_after_submit_with_carry_forward (line 549) | def test_leave_subtraction_after_submit_with_carry_forward(self): method test_validation_against_leave_application_after_submit (line 576) | def test_validation_against_leave_application_after_submit(self): function create_leave_allocation (line 612) | def create_leave_allocation(**args): FILE: hrms/hr/doctype/leave_application/leave_application.js method set_employee (line 118) | async set_employee(frm) { method half_day_date (line 170) | half_day_date(frm) { FILE: hrms/hr/doctype/leave_application/leave_application.py class LeaveDayBlockedError (line 42) | class LeaveDayBlockedError(frappe.ValidationError): class OverlapError (line 46) | class OverlapError(frappe.ValidationError): class AttendanceAlreadyMarkedError (line 50) | class AttendanceAlreadyMarkedError(frappe.ValidationError): class NotAnOptionalHoliday (line 54) | class NotAnOptionalHoliday(frappe.ValidationError): class InsufficientLeaveBalanceError (line 58) | class InsufficientLeaveBalanceError(frappe.ValidationError): class LeaveAcrossAllocationsError (line 62) | class LeaveAcrossAllocationsError(frappe.ValidationError): class LeaveApplication (line 69) | class LeaveApplication(Document, PWANotificationsMixin): method get_feed (line 102) | def get_feed(self): method after_insert (line 105) | def after_insert(self): method validate (line 108) | def validate(self): method on_update (line 124) | def on_update(self): method on_submit (line 134) | def on_submit(self): method before_cancel (line 162) | def before_cancel(self): method on_discard (line 165) | def on_discard(self): method on_cancel (line 168) | def on_cancel(self): method after_delete (line 177) | def after_delete(self): method publish_update (line 180) | def publish_update(self): method validate_applicable_after (line 185) | def validate_applicable_after(self): method validate_dates (line 206) | def validate_dates(self): method validate_dates_across_allocation (line 246) | def validate_dates_across_allocation(self): method get_allocation_based_on_application_dates (line 260) | def get_allocation_based_on_application_dates(self) -> tuple[dict, dict]: method validate_back_dated_application (line 283) | def validate_back_dated_application(self): method get_leave_allocation (line 299) | def get_leave_allocation(self): method update_attendance (line 315) | def update_attendance(self): method create_or_update_attendance (line 348) | def create_or_update_attendance(self, attendance_name, date): method cancel_attendance (line 383) | def cancel_attendance(self): method validate_salary_processed_days (line 394) | def validate_salary_processed_days(self): method show_block_day_warning (line 415) | def show_block_day_warning(self): method validate_block_days (line 430) | def validate_block_days(self): method validate_balance_leaves (line 438) | def validate_balance_leaves(self): method show_insufficient_balance_message (line 475) | def show_insufficient_balance_message(self, leave_balance_for_consumpt... method validate_leave_overlap (line 500) | def validate_leave_overlap(self): method throw_overlap_error (line 536) | def throw_overlap_error(self, d): method get_total_leaves_on_half_day (line 543) | def get_total_leaves_on_half_day(self): method validate_max_days (line 557) | def validate_max_days(self): method get_consecutive_leave_details (line 577) | def get_consecutive_leave_details(self) -> dict: method validate_attendance (line 634) | def validate_attendance(self): method validate_optional_leave (line 663) | def validate_optional_leave(self): method set_half_day_date (line 684) | def set_half_day_date(self): method notify_employee (line 691) | def notify_employee(self): method notify_leave_approver (line 719) | def notify_leave_approver(self): method notify (line 744) | def notify(self, args): method create_leave_ledger_entry (line 768) | def create_leave_ledger_entry(self, submit=True): method is_separate_ledger_entry_required (line 797) | def is_separate_ledger_entry_required( method create_separate_ledger_entries (line 809) | def create_separate_ledger_entries(self, alloc_on_from_date, alloc_on_... method create_ledger_entry_for_intermediate_allocation_expiry (line 870) | def create_ledger_entry_for_intermediate_allocation_expiry(self, expir... method validate_for_self_approval (line 899) | def validate_for_self_approval(self): method onload (line 911) | def onload(self): function get_allocation_expiry_for_cf_leaves (line 918) | def get_allocation_expiry_for_cf_leaves( function get_number_of_leave_days (line 941) | def get_number_of_leave_days( function get_leave_details (line 969) | def get_leave_details(employee: str, date: str | datetime.date, for_sala... function get_leave_balance_on (line 1008) | def get_leave_balance_on( function get_leave_allocation_records (line 1055) | def get_leave_allocation_records(employee, date, leave_type=None): function get_leaves_pending_approval_for_period (line 1134) | def get_leaves_pending_approval_for_period( function get_remaining_leaves (line 1150) | def get_remaining_leaves( function get_manually_expired_leaves (line 1199) | def get_manually_expired_leaves( function get_new_and_cf_leaves_taken (line 1220) | def get_new_and_cf_leaves_taken(allocation: dict, cf_expiry: str) -> tup... function get_leaves_for_period (line 1238) | def get_leaves_for_period( function get_leave_entries (line 1295) | def get_leave_entries(employee, leave_type, from_date, to_date): function get_holidays (line 1317) | def get_holidays(employee: str, from_date: str | datetime.date, to_date:... function is_lwp (line 1323) | def is_lwp(leave_type): function get_events (line 1329) | def get_events(start: str, end: str, filters: str | None = None) -> list... function add_department_leaves (line 1360) | def add_department_leaves(events, start, end, employee, company): function add_leaves (line 1369) | def add_leaves(events, start, end, filters=None): function add_block_dates (line 1408) | def add_block_dates(events, start, end, employee, company): function add_holidays (line 1426) | def add_holidays(events, start, end, employee, company): function get_mandatory_approval (line 1450) | def get_mandatory_approval(doctype: str) -> str | int | bool: function get_approved_leaves_for_period (line 1460) | def get_approved_leaves_for_period(employee, leave_type, from_date, to_d... function get_leave_approver (line 1506) | def get_leave_approver(employee: str) -> str: function on_doctype_update (line 1519) | def on_doctype_update(): FILE: hrms/hr/doctype/leave_application/leave_application_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/leave_application/test_leave_application.py class TestLeaveApplication (line 49) | class TestLeaveApplication(HRMSTestSuite): method setUp (line 50) | def setUp(self): method _clear_roles (line 67) | def _clear_roles(self): method get_application (line 73) | def get_application(self, doc): method test_validate_application_across_allocations (line 80) | def test_validate_application_across_allocations(self): method test_insufficient_leave_balance_validation (line 126) | def test_insufficient_leave_balance_validation(self): method test_separate_leave_ledger_entry_for_boundary_applications (line 165) | def test_separate_leave_ledger_entry_for_boundary_applications(self): method test_overwrite_attendance (line 232) | def test_overwrite_attendance(self): method test_overwrite_half_day_attendance (line 259) | def test_overwrite_half_day_attendance(self): method test_attendance_for_include_holidays (line 283) | def test_attendance_for_include_holidays(self): method test_attendance_update_for_exclude_holidays (line 308) | def test_attendance_update_for_exclude_holidays(self): method test_block_list (line 355) | def test_block_list(self): method test_overlap (line 379) | def test_overlap(self): method test_overlap_with_half_day_1 (line 396) | def test_overlap_with_half_day_1(self): method test_overlap_with_half_day_2 (line 430) | def test_overlap_with_half_day_2(self): method test_overlap_with_half_day_3 (line 453) | def test_overlap_with_half_day_3(self): method test_optional_leave (line 489) | def test_optional_leave(self): method test_leaves_allowed (line 543) | def test_leaves_allowed(self): method test_applicable_after (line 585) | def test_applicable_after(self): method test_max_continuous_leaves (line 636) | def test_max_continuous_leaves(self): method test_max_consecutive_leaves_across_leave_applications (line 670) | def test_max_consecutive_leaves_across_leave_applications(self): method test_leave_balance_near_allocaton_expiry (line 727) | def test_leave_balance_near_allocaton_expiry(self): method test_current_leave_on_submit (line 744) | def test_current_leave_on_submit(self): method test_creation_of_leave_ledger_entry_on_submit (line 780) | def test_creation_of_leave_ledger_entry_on_submit(self): method test_ledger_entry_creation_on_intermediate_allocation_expiry (line 816) | def test_ledger_entry_creation_on_intermediate_allocation_expiry(self): method test_leave_application_creation_after_expiry (line 854) | def test_leave_application_creation_after_expiry(self): method test_leave_approver_perms (line 872) | def test_leave_approver_perms(self): method test_self_leave_approval_allowed (line 911) | def test_self_leave_approval_allowed(self): method test_self_leave_approval_not_allowed (line 945) | def test_self_leave_approval_not_allowed(self): method test_get_leave_details_for_dashboard (line 987) | def test_get_leave_details_for_dashboard(self): method test_leave_details_with_expired_cf_leaves (line 1023) | def test_leave_details_with_expired_cf_leaves(self): method test_leave_details_with_application_across_cf_expiry (line 1057) | def test_leave_details_with_application_across_cf_expiry(self): method test_leave_details_with_application_across_cf_expiry_2 (line 1093) | def test_leave_details_with_application_across_cf_expiry_2(self): method test_leave_details_with_application_after_cf_expiry (line 1133) | def test_leave_details_with_application_after_cf_expiry(self): method test_get_leave_allocation_records (line 1169) | def test_get_leave_allocation_records(self): method test_filtered_old_cf_entries_in_get_leave_allocation_records (line 1202) | def test_filtered_old_cf_entries_in_get_leave_allocation_records(self): method test_modifying_attendance_when_half_day_exists_from_checkins (line 1224) | def test_modifying_attendance_when_half_day_exists_from_checkins(self): method test_modifying_attendance_from_absent_to_half_day (line 1257) | def test_modifying_attendance_from_absent_to_half_day(self): method test_half_day_status_for_two_half_leaves (line 1290) | def test_half_day_status_for_two_half_leaves(self): method test_leave_balance_when_allocation_is_expired_manually (line 1332) | def test_leave_balance_when_allocation_is_expired_manually(self): method test_backdated_application_after_expiry (line 1352) | def test_backdated_application_after_expiry(self): method test_leave_days_across_two_holiday_lists (line 1383) | def test_leave_days_across_two_holiday_lists(self): method test_status_on_discard (line 1417) | def test_status_on_discard(self): function create_carry_forwarded_allocation (line 1426) | def create_carry_forwarded_allocation(employee, leave_type, date=None): function make_allocation_record (line 1454) | def make_allocation_record( function get_employee (line 1475) | def get_employee(): function get_leave_period (line 1479) | def get_leave_period(current=False): function allocate_leaves (line 1496) | def allocate_leaves(employee, leave_period, leave_type, new_leaves_alloc... FILE: hrms/hr/doctype/leave_block_list/leave_block_list.js method primary_action (line 85) | primary_action(values) { FILE: hrms/hr/doctype/leave_block_list/leave_block_list.py class LeaveBlockList (line 13) | class LeaveBlockList(Document): method validate (line 33) | def validate(self): method set_weekly_off_dates (line 42) | def set_weekly_off_dates(self, start_date: str, end_date: str, days: l... method get_block_dates_from_date (line 47) | def get_block_dates_from_date(self, start_date, end_date, days): function get_applicable_block_dates (line 64) | def get_applicable_block_dates( function get_applicable_block_lists (line 77) | def get_applicable_block_lists(employee=None, company=None, all_lists=Fa... function is_user_in_allow_list (line 111) | def is_user_in_allow_list(block_list): FILE: hrms/hr/doctype/leave_block_list/leave_block_list_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/leave_block_list/test_leave_block_list.py class TestLeaveBlockList (line 11) | class TestLeaveBlockList(HRMSTestSuite): method test_get_applicable_block_dates (line 12) | def test_get_applicable_block_dates(self): method test_get_applicable_block_dates_for_allowed_user (line 22) | def test_get_applicable_block_dates_for_allowed_user(self): method test_get_applicable_block_dates_all_lists (line 29) | def test_get_applicable_block_dates_all_lists(self): method test_get_applicable_block_dates_all_lists_for_leave_type (line 39) | def test_get_applicable_block_dates_all_lists_for_leave_type(self): method test_get_applicable_block_dates_for_allowed_user_for_leave_type (line 54) | def test_get_applicable_block_dates_for_allowed_user_for_leave_type(se... FILE: hrms/hr/doctype/leave_block_list_allow/leave_block_list_allow.py class LeaveBlockListAllow (line 10) | class LeaveBlockListAllow(Document): FILE: hrms/hr/doctype/leave_block_list_date/leave_block_list_date.py class LeaveBlockListDate (line 10) | class LeaveBlockListDate(Document): FILE: hrms/hr/doctype/leave_control_panel/leave_control_panel.js method employment_type (line 41) | employment_type(frm) { method branch (line 45) | branch(frm) { method department (line 49) | department(frm) { method designation (line 53) | designation(frm) { method employee_grade (line 57) | employee_grade(frm) { method dates_based_on (line 61) | dates_based_on(frm) { method from_date (line 66) | from_date(frm) { method to_date (line 70) | to_date(frm) { method leave_period (line 74) | leave_period(frm) { method allocate_based_on_leave_policy (line 78) | allocate_based_on_leave_policy(frm) { method leave_type (line 82) | leave_type(frm) { method leave_policy (line 86) | leave_policy(frm) { method reset_leave_details (line 90) | reset_leave_details(frm) { method set_leave_details (line 97) | set_leave_details(frm) { method get_employees (line 114) | get_employees(frm) { method get_employees_datatable_columns (line 127) | get_employees_datatable_columns() { method set_query (line 158) | set_query(frm) { method set_primary_action (line 175) | set_primary_action(frm) { method allocate_leave (line 181) | allocate_leave(frm) { method bulk_allocate_leave (line 197) | bulk_allocate_leave(frm, employees) { FILE: hrms/hr/doctype/leave_control_panel/leave_control_panel.py class LeaveControlPanel (line 14) | class LeaveControlPanel(Document): method validate_fields (line 40) | def validate_fields(self, employees: list): method allocate_leave (line 56) | def allocate_leave(self, employees: list): method create_leave_allocations (line 62) | def create_leave_allocations(self, employees: list) -> dict: method create_leave_policy_assignments (line 98) | def create_leave_policy_assignments(self, employees: list) -> dict: method get_from_to_date (line 139) | def get_from_to_date(self): method get_employees (line 148) | def get_employees(self, advanced_filters: list) -> list: method get_employees_without_allocations (line 161) | def get_employees_without_allocations(self, all_employees: list, from_... method get_latest_leave_period (line 200) | def get_latest_leave_period(self): method get_filters (line 211) | def get_filters(self): FILE: hrms/hr/doctype/leave_control_panel/test_leave_control_panel.py class TestLeaveControlPanel (line 18) | class TestLeaveControlPanel(HRMSTestSuite): method setUp (line 19) | def setUp(self): method create_records (line 22) | def create_records(self): method test_allocation_based_on_leave_type (line 46) | def test_allocation_based_on_leave_type(self): method test_allocation_based_on_leave_policy_assignment (line 70) | def test_allocation_based_on_leave_policy_assignment(self): method test_allocation_based_on_joining_date (line 92) | def test_allocation_based_on_joining_date(self): method test_get_employees (line 117) | def test_get_employees(self): FILE: hrms/hr/doctype/leave_encashment/leave_encashment.py class LeaveEncashment (line 21) | class LeaveEncashment(AccountsController): method validate (line 54) | def validate(self): method set_salary_structure (line 64) | def set_salary_structure(self): method before_submit (line 73) | def before_submit(self): method on_submit (line 77) | def on_submit(self): method on_cancel (line 89) | def on_cancel(self): method get_leave_details_for_encashment (line 111) | def get_leave_details_for_encashment(self): method get_encashment_settings (line 117) | def get_encashment_settings(self): method set_actual_encashable_days (line 125) | def set_actual_encashable_days(self): method set_encashment_days (line 155) | def set_encashment_days(self): method set_leave_balance (line 168) | def set_leave_balance(self): method create_additional_salary (line 187) | def create_additional_salary(self): method set_encashed_leaves_in_allocation (line 203) | def set_encashed_leaves_in_allocation(self): method set_encashment_amount (line 212) | def set_encashment_amount(self): method set_status (line 239) | def set_status(self, update=False): method get_leave_allocation (line 259) | def get_leave_allocation(self): method create_leave_ledger_entry (line 282) | def create_leave_ledger_entry(self, submit=True): method set_total_advance_paid (line 305) | def set_total_advance_paid(self): method create_gl_entries (line 325) | def create_gl_entries(self, cancel=False): method get_gl_entries (line 329) | def get_gl_entries(self): method on_discard (line 366) | def on_discard(self): function create_leave_encashment (line 370) | def create_leave_encashment(leave_allocation): FILE: hrms/hr/doctype/leave_encashment/test_leave_encashment.py class TestLeaveEncashment (line 27) | class TestLeaveEncashment(HRMSTestSuite): method setUp (line 28) | def setUp(self): method test_leave_balance_value_and_amount (line 63) | def test_leave_balance_value_and_amount(self): method test_non_encashable_leaves_setting (line 80) | def test_non_encashable_leaves_setting(self): method test_max_encashable_leaves_setting (line 116) | def test_max_encashable_leaves_setting(self): method test_max_encashable_leaves_and_non_encashable_leaves_setting (line 151) | def test_max_encashable_leaves_and_non_encashable_leaves_setting(self): method test_creation_of_leave_ledger_entry_on_submit (line 187) | def test_creation_of_leave_ledger_entry_on_submit(self): method test_unused_leaves_after_leave_encashment_for_carry_forwarding_leave_type (line 206) | def test_unused_leaves_after_leave_encashment_for_carry_forwarding_lea... method test_leave_expiry_after_leave_encashment_for_non_carry_forwarding_leave_type (line 234) | def test_leave_expiry_after_leave_encashment_for_non_carry_forwarding_... method get_encashment_created_after_leave_period (line 266) | def get_encashment_created_after_leave_period(self, employee, is_carry... method test_status_of_leave_encashment_after_payment_via_salary_slip (line 305) | def test_status_of_leave_encashment_after_payment_via_salary_slip(self): method test_status_of_leave_encashment_after_payment_via_payment_entry_and_fnf (line 339) | def test_status_of_leave_encashment_after_payment_via_payment_entry_an... method create_test_leave_encashment (line 398) | def create_test_leave_encashment(self, **kwargs): method test_status_on_discard (line 410) | def test_status_on_discard(self): method test_leave_encashment_based_on_salary_structure_assignment (line 417) | def test_leave_encashment_based_on_salary_structure_assignment(self): function create_leave_encashment (line 446) | def create_leave_encashment(**args): FILE: hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.py class InvalidLeaveLedgerEntry (line 11) | class InvalidLeaveLedgerEntry(frappe.ValidationError): class LeaveLedgerEntry (line 15) | class LeaveLedgerEntry(Document): method validate (line 40) | def validate(self): method on_cancel (line 53) | def on_cancel(self): function validate_leave_allocation_against_leave_application (line 61) | def validate_leave_allocation_against_leave_application(ledger): function create_leave_ledger_entry (line 89) | def create_leave_ledger_entry(ref_doc, args, submit=True): function delete_ledger_entry (line 111) | def delete_ledger_entry(ledger): function get_previous_expiry_ledger_entry (line 127) | def get_previous_expiry_ledger_entry(ledger): function process_expired_allocation (line 155) | def process_expired_allocation(): function create_expiry_ledger_entry (line 199) | def create_expiry_ledger_entry(allocations): function get_remaining_leaves (line 208) | def get_remaining_leaves(allocation): function expire_allocation (line 223) | def expire_allocation(allocation: str | Document | frappe._dict, expiry_... function expire_carried_forward_allocation (line 250) | def expire_carried_forward_allocation(allocation): function on_doctype_update (line 277) | def on_doctype_update(): FILE: hrms/hr/doctype/leave_ledger_entry/test_leave_ledger_entry.py class TestLeaveLedgerEntry (line 13) | class TestLeaveLedgerEntry(HRMSTestSuite): method setUp (line 14) | def setUp(self): method test_expire_allocation (line 18) | def test_expire_allocation(self): FILE: hrms/hr/doctype/leave_period/leave_period.py class LeavePeriod (line 13) | class LeavePeriod(Document): method validate (line 29) | def validate(self): method validate_dates (line 33) | def validate_dates(self): FILE: hrms/hr/doctype/leave_period/leave_period_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/leave_period/test_leave_period.py function create_leave_period (line 11) | def create_leave_period(from_date, to_date, company=None): FILE: hrms/hr/doctype/leave_policy/leave_policy.py class LeavePolicy (line 10) | class LeavePolicy(Document): method validate (line 26) | def validate(self): FILE: hrms/hr/doctype/leave_policy/leave_policy_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/leave_policy/test_leave_policy.py class TestLeavePolicy (line 9) | class TestLeavePolicy(HRMSTestSuite): method test_max_leave_allowed (line 10) | def test_max_leave_allowed(self): function create_leave_policy (line 25) | def create_leave_policy(**args): FILE: hrms/hr/doctype/leave_policy_assignment/leave_policy_assignment.py class LeavePolicyAssignment (line 30) | class LeavePolicyAssignment(Document): method validate (line 52) | def validate(self): method on_submit (line 57) | def on_submit(self): method set_dates (line 60) | def set_dates(self): method validate_policy_assignment_overlap (line 70) | def validate_policy_assignment_overlap(self): method warn_about_carry_forwarding (line 94) | def warn_about_carry_forwarding(self): method grant_leave_alloc_for_employee (line 109) | def grant_leave_alloc_for_employee(self): method create_leave_allocation (line 135) | def create_leave_allocation(self, annual_allocation, leave_details, da... method get_new_leaves (line 183) | def get_new_leaves(self, annual_allocation, leave_details, date_of_joi... method get_leaves_for_passed_period (line 213) | def get_leaves_for_passed_period(self, annual_allocation, leave_detail... method get_current_and_from_date (line 230) | def get_current_and_from_date(self, date_of_joining): method get_periods_passed (line 241) | def get_periods_passed(self, earned_leave_frequency, current_date, fro... method calculate_leaves_for_passed_period (line 255) | def calculate_leaves_for_passed_period( method get_earned_leave_schedule (line 291) | def get_earned_leave_schedule( function get_pro_rata_period_end_date (line 365) | def get_pro_rata_period_end_date(consider_current_month): function calculate_periods_passed (line 378) | def calculate_periods_passed( function is_earned_leave_applicable_for_current_period (line 393) | def is_earned_leave_applicable_for_current_period(date_of_joining, alloc... function calculate_pro_rated_leaves (line 420) | def calculate_pro_rated_leaves( function create_assignment_for_multiple_employees (line 438) | def create_assignment_for_multiple_employees(employees: str | list[str],... function create_assignment (line 468) | def create_assignment(employee: str, data: frappe._dict) -> Document: function show_assignment_submission_status (line 481) | def show_assignment_submission_status(failed): function get_leave_type_details (line 501) | def get_leave_type_details(): FILE: hrms/hr/doctype/leave_policy_assignment/leave_policy_assignment_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/leave_policy_assignment/test_leave_policy_assignment.py class TestLeavePolicyAssignment (line 18) | class TestLeavePolicyAssignment(HRMSTestSuite): method setUp (line 19) | def setUp(self): method test_grant_leaves (line 24) | def test_grant_leaves(self): method test_allow_to_grant_all_leave_after_cancellation_of_every_leave_allocation (line 58) | def test_allow_to_grant_all_leave_after_cancellation_of_every_leave_al... method test_pro_rated_leave_allocation (line 89) | def test_pro_rated_leave_allocation(self): method test_get_leaves_for_passed_months (line 112) | def test_get_leaves_for_passed_months(self): method test_pro_rated_leave_allocation_for_custom_date_range (line 154) | def test_pro_rated_leave_allocation_for_custom_date_range(self): method test_earned_leave_allocation_if_leave_policy_assignment_submitted_after_period (line 198) | def test_earned_leave_allocation_if_leave_policy_assignment_submitted_... method test_earned_leave_allocation_for_leave_period_spanning_two_years (line 225) | def test_earned_leave_allocation_for_leave_period_spanning_two_years(s... method test_skip_zero_allocation_leaves (line 254) | def test_skip_zero_allocation_leaves(self): FILE: hrms/hr/doctype/leave_policy_detail/leave_policy_detail.py class LeavePolicyDetail (line 8) | class LeavePolicyDetail(Document): FILE: hrms/hr/doctype/leave_policy_detail/test_leave_policy_detail.py class TestLeavePolicyDetail (line 7) | class TestLeavePolicyDetail(HRMSTestSuite): FILE: hrms/hr/doctype/leave_type/leave_type.py class LeaveType (line 11) | class LeaveType(Document): method validate (line 45) | def validate(self): method validate_lwp (line 50) | def validate_lwp(self): method validate_leave_types (line 65) | def validate_leave_types(self): method validate_allocated_earned_leave (line 86) | def validate_allocated_earned_leave(self): method clear_cache (line 107) | def clear_cache(self): FILE: hrms/hr/doctype/leave_type/leave_type_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/leave_type/test_leave_type.py function create_leave_type (line 9) | def create_leave_type(**args): FILE: hrms/hr/doctype/offer_term/offer_term.py class OfferTerm (line 8) | class OfferTerm(Document): FILE: hrms/hr/doctype/offer_term/test_offer_term.py class TestOfferTerm (line 9) | class TestOfferTerm(HRMSTestSuite): FILE: hrms/hr/doctype/overtime_details/overtime_details.py class OvertimeDetails (line 8) | class OvertimeDetails(Document): FILE: hrms/hr/doctype/overtime_salary_component/overtime_salary_component.py class OvertimeSalaryComponent (line 8) | class OvertimeSalaryComponent(Document): FILE: hrms/hr/doctype/overtime_slip/overtime_slip.js method employee (line 23) | employee(frm) { method posting_date (line 26) | posting_date(frm) { FILE: hrms/hr/doctype/overtime_slip/overtime_slip.py class OvertimeSlip (line 21) | class OvertimeSlip(Document): method validate (line 47) | def validate(self): method on_submit (line 57) | def on_submit(self): method validate_overlap (line 60) | def validate_overlap(self): method validate_overtime_date_and_duration (line 78) | def validate_overtime_date_and_duration(self): method get_frequency_and_dates (line 104) | def get_frequency_and_dates(self): method get_emp_and_overtime_details (line 123) | def get_emp_and_overtime_details(self): method create_overtime_details_row_for_attendance (line 135) | def create_overtime_details_row_for_attendance(self, records): method get_attendance_records (line 167) | def get_attendance_records(self): method process_overtime_slip (line 195) | def process_overtime_slip(self): method create_additional_salary (line 202) | def create_additional_salary(self, salary_component, total_amount, pre... method get_overtime_component_amounts (line 219) | def get_overtime_component_amounts(self): method _bulk_load_overtime_types (line 254) | def _bulk_load_overtime_types(self, overtime_type_names): method _get_applicable_hourly_rate (line 306) | def _get_applicable_hourly_rate(self, overtime_type, standard_working_... method _calculate_component_based_hourly_rate (line 319) | def _calculate_component_based_hourly_rate(self, overtime_type, standa... method _make_salary_slip (line 339) | def _make_salary_slip(self, salary_structure): method calculate_overtime_amount (line 349) | def calculate_overtime_amount( method get_holiday_map (line 375) | def get_holiday_map(self): method get_overtime_type_details (line 391) | def get_overtime_type_details(self, name): function filter_employees_for_overtime_slip_creation (line 420) | def filter_employees_for_overtime_slip_creation(start_date, end_date, em... function create_overtime_slips_for_employees (line 470) | def create_overtime_slips_for_employees(employees, args): function submit_overtime_slips_for_employees (line 502) | def submit_overtime_slips_for_employees(overtime_slips, payroll_entry): FILE: hrms/hr/doctype/overtime_slip/test_overtime_slip.py class TestOvertimeSlip (line 17) | class TestOvertimeSlip(HRMSTestSuite): method test_overtime_calculation_and_additional_salary_creation (line 18) | def test_overtime_calculation_and_additional_salary_creation(self): method test_overtime_calculation_for_fixed_hourly_rate (line 65) | def test_overtime_calculation_for_fixed_hourly_rate(self): method test_overtime_slip_creation_via_payroll_entry (line 82) | def test_overtime_slip_creation_via_payroll_entry(self): function create_overtime_slip (line 139) | def create_overtime_slip(employee): function create_checkin_records_for_overtime (line 151) | def create_checkin_records_for_overtime(employee): function setup_overtime (line 164) | def setup_overtime(employee, overtime_calculation_method="Salary Compone... FILE: hrms/hr/doctype/overtime_type/overtime_type.py class OvertimeType (line 9) | class OvertimeType(Document): method validate (line 34) | def validate(self): method validate_applicable_components (line 38) | def validate_applicable_components(self): FILE: hrms/hr/doctype/overtime_type/test_overtime_type.py class TestOvertimeType (line 11) | class TestOvertimeType(UnitTestCase): function create_overtime_type (line 20) | def create_overtime_type(**args): FILE: hrms/hr/doctype/purpose_of_travel/purpose_of_travel.py class PurposeofTravel (line 8) | class PurposeofTravel(Document): FILE: hrms/hr/doctype/purpose_of_travel/test_purpose_of_travel.py class TestPurposeofTravel (line 7) | class TestPurposeofTravel(HRMSTestSuite): FILE: hrms/hr/doctype/pwa_notification/pwa_notification.py class PWANotification (line 9) | class PWANotification(Document): method on_update (line 27) | def on_update(self): method after_insert (line 30) | def after_insert(self): method send_push_notification (line 33) | def send_push_notification(self): method get_notification_link (line 52) | def get_notification_link(self): FILE: hrms/hr/doctype/pwa_notification/test_pwa_notification.py class TestPWANotification (line 8) | class TestPWANotification(HRMSTestSuite): FILE: hrms/hr/doctype/shift_assignment/shift_assignment.py class OverlappingShiftError (line 17) | class OverlappingShiftError(frappe.ValidationError): class MultipleShiftError (line 21) | class MultipleShiftError(frappe.ValidationError): class ShiftAssignment (line 25) | class ShiftAssignment(Document): method validate (line 49) | def validate(self): method on_update_after_submit (line 55) | def on_update_after_submit(self): method on_cancel (line 60) | def on_cancel(self): method validate_employee_checkin (line 64) | def validate_employee_checkin(self): method validate_attendance (line 81) | def validate_attendance(self): method validate_overlapping_shifts (line 98) | def validate_overlapping_shifts(self): method validate_same_date_multiple_shifts (line 110) | def validate_same_date_multiple_shifts(self, overlapping_dates): method get_overlapping_dates (line 138) | def get_overlapping_dates(self): method throw_overlap_error (line 160) | def throw_overlap_error(self, shift_details): function has_overlapping_timings (line 173) | def has_overlapping_timings(shift_1: str, shift_2: str) -> bool: function get_events (line 189) | def get_events(start: str | date, end: str | date, filters: list | None ... function get_shift_assignments (line 202) | def get_shift_assignments(start: str, end: str, filters: str | list | No... function get_shift_events (line 230) | def get_shift_events(assignments: list[dict]) -> list[dict]: function get_shift_type_timing (line 268) | def get_shift_type_timing(shift_types): function get_shift_for_time (line 282) | def get_shift_for_time(shifts: list[dict], for_timestamp: datetime) -> d... function _is_shift_outside_assignment_period (line 302) | def _is_shift_outside_assignment_period(shift_details: dict, assignment:... function _is_shift_start_before_assignment (line 319) | def _is_shift_start_before_assignment(shift_details: dict, assignment: d... function _is_shift_end_after_assignment (line 339) | def _is_shift_end_after_assignment(shift_details: dict, assignment: dict... function _is_timestamp_within_shift (line 365) | def _is_timestamp_within_shift(shift_details: dict, for_timestamp: datet... function _adjust_overlapping_shifts (line 370) | def _adjust_overlapping_shifts(shifts: dict): function get_shifts_for_date (line 387) | def get_shifts_for_date(employee: str, for_timestamp: datetime) -> list[... function get_shift_for_timestamp (line 429) | def get_shift_for_timestamp(employee: str, for_timestamp: datetime) -> d... function get_employee_shift (line 436) | def get_employee_shift( function get_prev_or_next_shift (line 468) | def get_prev_or_next_shift( function get_employee_shift_timings (line 522) | def get_employee_shift_timings( function get_actual_start_end_datetime_of_shift (line 574) | def get_actual_start_end_datetime_of_shift( function get_exact_shift (line 592) | def get_exact_shift(shifts: list, for_timestamp: datetime) -> dict: function get_shift_details (line 605) | def get_shift_details(shift_type_name: str, for_timestamp: datetime | No... function get_shift_type (line 643) | def get_shift_type(shift_type_name: str) -> dict: function get_shift_timings (line 660) | def get_shift_timings(shift_type: dict, for_timestamp: datetime) -> tuple: FILE: hrms/hr/doctype/shift_assignment/test_shift_assignment.py class TestShiftAssignment (line 24) | class TestShiftAssignment(HRMSTestSuite): method test_overlapping_for_ongoing_shift (line 25) | def test_overlapping_for_ongoing_shift(self): method test_multiple_shift_assignments_for_same_date (line 41) | def test_multiple_shift_assignments_for_same_date(self): method test_overlapping_for_fixed_period_shift (line 56) | def test_overlapping_for_fixed_period_shift(self): method test_overlapping_for_a_fixed_period_shift_and_ongoing_shift (line 70) | def test_overlapping_for_a_fixed_period_shift_and_ongoing_shift(self): method test_overlap_for_shifts_on_same_day_with_overlapping_timeslots (line 87) | def test_overlap_for_shifts_on_same_day_with_overlapping_timeslots(self): method test_overlap_for_midnight_shifts (line 110) | def test_overlap_for_midnight_shifts(self): method test_calendar (line 149) | def test_calendar(self): method test_calendar_for_night_shift (line 177) | def test_calendar_for_night_shift(self): method test_consecutive_day_and_night_shifts (line 188) | def test_consecutive_day_and_night_shifts(self): method test_shift_details_on_consecutive_days_with_overlapping_timings (line 218) | def test_shift_details_on_consecutive_days_with_overlapping_timings(se... method test_auto_attendance_calculates_ot_for_default_shift (line 251) | def test_auto_attendance_calculates_ot_for_default_shift(self): FILE: hrms/hr/doctype/shift_assignment_tool/shift_assignment_tool.js method setup (line 5) | setup(frm) { method refresh (line 9) | refresh(frm) { method action (line 32) | action(frm) { method company (line 37) | company(frm) { method shift_type (line 41) | shift_type(frm) { method status (line 45) | status(frm) { method start_date (line 49) | start_date(frm) { method end_date (line 54) | end_date(frm) { method shift_type_filter (line 59) | shift_type_filter(frm) { method shift_schedule (line 63) | shift_schedule(frm) { method approver (line 67) | approver(frm) { method from_date (line 71) | from_date(frm) { method to_date (line 76) | to_date(frm) { method branch (line 81) | branch(frm) { method department (line 85) | department(frm) { method designation (line 89) | designation(frm) { method grade (line 93) | grade(frm) { method employment_type (line 97) | employment_type(frm) { method set_primary_action (line 101) | set_primary_action(frm) { method get_employees (line 138) | get_employees(frm) { method render_employees_datatable (line 155) | render_employees_datatable(frm, employees) { method get_assign_shift_datatable_columns (line 179) | get_assign_shift_datatable_columns() { method get_process_shift_requests_datatable_columns (line 215) | get_process_shift_requests_datatable_columns() { method bulk_assign (line 251) | bulk_assign(frm, employees) { method process_shift_requests (line 276) | process_shift_requests(frm, status) { method bulk_process_shift_requests (line 296) | bulk_process_shift_requests(frm, shift_requests, status) { FILE: hrms/hr/doctype/shift_assignment_tool/shift_assignment_tool.py class ShiftAssignmentTool (line 18) | class ShiftAssignmentTool(Document): method get_employees (line 47) | def get_employees(self, advanced_filters: list | None = None) -> list: method get_employees_for_assigning_shift (line 66) | def get_employees_for_assigning_shift(self, filters): method get_shift_requests (line 102) | def get_shift_requests(self, filters): method get_query_for_employees_with_shifts (line 140) | def get_query_for_employees_with_shifts(self): method get_query_for_employees_with_same_shift_schedule (line 162) | def get_query_for_employees_with_same_shift_schedule(self): method get_query_checking_overlapping_shift_timings (line 186) | def get_query_checking_overlapping_shift_timings(self, query, doctype,... method bulk_assign (line 206) | def bulk_assign(self, employees: list): method _bulk_assign (line 232) | def _bulk_assign(self, employees: list): method bulk_process_shift_requests (line 284) | def bulk_process_shift_requests(self, shift_requests: list, status: str): method _bulk_process_shift_requests (line 303) | def _bulk_process_shift_requests(self, shift_requests: list, status: s... method create_shift_schedule_assignment (line 336) | def create_shift_schedule_assignment(self, employee: str) -> str: function create_shift_assignment (line 350) | def create_shift_assignment( FILE: hrms/hr/doctype/shift_assignment_tool/test_shift_assignment_tool.py class TestShiftAssignmentTool (line 17) | class TestShiftAssignmentTool(HRMSTestSuite): method setUp (line 18) | def setUp(self): method test_get_employees_for_assigning_shifts (line 35) | def test_get_employees_for_assigning_shifts(self): method test_get_employees_for_assigning_shift_schedule (line 78) | def test_get_employees_for_assigning_shift_schedule(self): method test_get_shift_requests (line 110) | def test_get_shift_requests(self): method test_bulk_assign_shift (line 186) | def test_bulk_assign_shift(self): method test_bulk_assign_shift_schedule (line 217) | def test_bulk_assign_shift_schedule(self): method test_bulk_process_shift_requests (line 246) | def test_bulk_process_shift_requests(self): function make_shift_schedule_assignment (line 302) | def make_shift_schedule_assignment(schedule, employee, create_shifts_aft... FILE: hrms/hr/doctype/shift_location/shift_location.py class ShiftLocation (line 10) | class ShiftLocation(Document): method validate (line 25) | def validate(self): method set_geolocation (line 29) | def set_geolocation(self): FILE: hrms/hr/doctype/shift_location/test_shift_location.py class TestShiftLocation (line 8) | class TestShiftLocation(HRMSTestSuite): FILE: hrms/hr/doctype/shift_request/shift_request.py class OverlappingShiftRequestError (line 16) | class OverlappingShiftRequestError(frappe.ValidationError): class ShiftRequest (line 20) | class ShiftRequest(Document, PWANotificationsMixin): method validate (line 41) | def validate(self): method on_update (line 48) | def on_update(self): method after_delete (line 53) | def after_delete(self): method publish_update (line 56) | def publish_update(self): method after_insert (line 61) | def after_insert(self): method on_submit (line 64) | def on_submit(self): method on_cancel (line 86) | def on_cancel(self): method on_discard (line 95) | def on_discard(self): method validate_default_shift (line 98) | def validate_default_shift(self): method validate_approver (line 105) | def validate_approver(self): method validate_overlapping_shift_requests (line 117) | def validate_overlapping_shift_requests(self): method get_overlapping_dates (line 125) | def get_overlapping_dates(self): method throw_overlap_error (line 146) | def throw_overlap_error(self, shift_details): FILE: hrms/hr/doctype/shift_request/shift_request_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/shift_request/test_shift_request.py class TestShiftRequest (line 14) | class TestShiftRequest(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_make_shift_request (line 19) | def test_make_shift_request(self): method test_shift_request_approver_perms (line 49) | def test_shift_request_approver_perms(self): method test_overlap_for_request_without_to_date (line 90) | def test_overlap_for_request_without_to_date(self): method test_overlap_for_request_with_from_and_to_dates (line 122) | def test_overlap_for_request_with_from_and_to_dates(self): method test_overlapping_for_a_fixed_period_shift_and_ongoing_shift (line 155) | def test_overlapping_for_a_fixed_period_shift_and_ongoing_shift(self): method test_allow_non_overlapping_shift_requests_for_same_day (line 194) | def test_allow_non_overlapping_shift_requests_for_same_day(self): method test_status_on_discard (line 230) | def test_status_on_discard(self): function set_shift_approver (line 247) | def set_shift_approver(department): function make_shift_request (line 254) | def make_shift_request( FILE: hrms/hr/doctype/shift_schedule/shift_schedule.js method refresh (line 5) | refresh(frm) { FILE: hrms/hr/doctype/shift_schedule/shift_schedule.py class ShiftSchedule (line 9) | class ShiftSchedule(Document): method before_validate (line 25) | def before_validate(self): function get_or_insert_shift_schedule (line 39) | def get_or_insert_shift_schedule(shift_type: str, frequency: str, repeat... FILE: hrms/hr/doctype/shift_schedule_assignment/shift_schedule_assignment.py class ShiftScheduleAssignment (line 12) | class ShiftScheduleAssignment(Document): method validate (line 31) | def validate(self): method validate_existing_shift_assignments (line 34) | def validate_existing_shift_assignments(self): method get_existing_shift_assignments (line 58) | def get_existing_shift_assignments(self): method create_shifts (line 82) | def create_shifts(self, start_date: str, end_date: str | None = None) ... method create_individual_assignment (line 125) | def create_individual_assignment(self, shift_type, start_date, end_date): function process_auto_shift_creation (line 139) | def process_auto_shift_creation(): FILE: hrms/hr/doctype/shift_schedule_assignment/test_shift_schedule_assignment.py class TestShiftScheduleAssignment (line 14) | class TestShiftScheduleAssignment(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_existing_shift_assignment_validation (line 24) | def test_existing_shift_assignment_validation(self): FILE: hrms/hr/doctype/shift_type/shift_type.py class ShiftType (line 38) | class ShiftType(Document): method validate (line 77) | def validate(self): method validate_same_start_and_end (line 84) | def validate_same_start_and_end(self, start_time: datetime.time, end_t... method validate_circular_shift (line 91) | def validate_circular_shift(self, start_time: datetime.time, end_time:... method get_shift_start_and_shift_end (line 102) | def get_shift_start_and_shift_end( method get_total_shift_duration_in_minutes (line 112) | def get_total_shift_duration_in_minutes( method get_max_shift_buffer_label (line 121) | def get_max_shift_buffer_label(self) -> str: method validate_unlinked_logs (line 132) | def validate_unlinked_logs(self): method is_field_modified (line 139) | def is_field_modified(self, fieldname): method unlinked_checkins_exist (line 142) | def unlinked_checkins_exist(self): method process_auto_attendance (line 149) | def process_auto_attendance(self, is_manually_triggered: int | bool = ... method has_incorrect_shift_config (line 169) | def has_incorrect_shift_config(self): method _process (line 176) | def _process(self, logs): method is_half_holiday (line 233) | def is_half_holiday(self, employee, attendance_date): method get_employee_checkins (line 239) | def get_employee_checkins(self) -> list[dict]: method get_attendance (line 266) | def get_attendance(self, logs, working_hours_threshold_for_absent, wor... method mark_absent_for_dates_with_no_attendance (line 302) | def mark_absent_for_dates_with_no_attendance(self, employee: str): method get_dates_for_attendance (line 329) | def get_dates_for_attendance(self, employee: str) -> list[str]: method get_start_and_end_dates (line 346) | def get_start_and_end_dates(self, employee): method get_marked_attendance_dates_between (line 380) | def get_marked_attendance_dates_between(self, employee: str, start_dat... method get_assigned_employees (line 393) | def get_assigned_employees(self, from_date: datetime.date, consider_de... method get_holiday_list (line 416) | def get_holiday_list(self, employee: str, date=None) -> str: method should_mark_attendance (line 420) | def should_mark_attendance(self, employee: str, attendance_date: str) ... method mark_absent_for_half_day_dates (line 432) | def mark_absent_for_half_day_dates(self, employee): function update_last_sync_of_checkin (line 466) | def update_last_sync_of_checkin(): function get_actual_shift_end (line 488) | def get_actual_shift_end(shift, current_datetime): function process_auto_attendance_for_all_shifts (line 500) | def process_auto_attendance_for_all_shifts(): FILE: hrms/hr/doctype/shift_type/shift_type_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/shift_type/test_shift_type.py class TestShiftType (line 26) | class TestShiftType(HRMSTestSuite): method setUp (line 27) | def setUp(self): method test_auto_update_last_sync_of_checkin_for_single_day_shift (line 33) | def test_auto_update_last_sync_of_checkin_for_single_day_shift(self): method test_auto_update_last_sync_of_checkin_for_shifts_spanning_two_days_due_to_buffer (line 56) | def test_auto_update_last_sync_of_checkin_for_shifts_spanning_two_days... method test_auto_update_last_sync_of_checkin_for_two_day_shift (line 84) | def test_auto_update_last_sync_of_checkin_for_two_day_shift(self): method test_auto_update_last_sync_of_checkin_when_when_job_runs_on_the_next_day (line 109) | def test_auto_update_last_sync_of_checkin_when_when_job_runs_on_the_ne... method test_mark_attendance (line 123) | def test_mark_attendance(self): method test_mark_attendance_with_different_shift_start_time (line 147) | def test_mark_attendance_with_different_shift_start_time(self): method test_attendance_date_for_different_start_and_actual_start_date (line 176) | def test_attendance_date_for_different_start_and_actual_start_date(self): method test_entry_and_exit_grace (line 206) | def test_entry_and_exit_grace(self): method test_working_hours_threshold_for_half_day (line 242) | def test_working_hours_threshold_for_half_day(self): method test_working_hours_threshold_for_absent (line 266) | def test_working_hours_threshold_for_absent(self): method test_working_hours_threshold_for_absent_and_half_day_1 (line 290) | def test_working_hours_threshold_for_absent_and_half_day_1(self): method test_working_hours_threshold_for_absent_and_half_day_2 (line 319) | def test_working_hours_threshold_for_absent_and_half_day_2(self): method test_mark_auto_attendance_on_holiday_enabled (line 346) | def test_mark_auto_attendance_on_holiday_enabled(self): method test_mark_auto_attendance_on_holiday_disabled (line 375) | def test_mark_auto_attendance_on_holiday_disabled(self): method test_mark_absent_for_dates_with_no_attendance (line 403) | def test_mark_absent_for_dates_with_no_attendance(self): method test_mark_absent_for_dates_with_no_attendance_for_midnight_shift (line 438) | def test_mark_absent_for_dates_with_no_attendance_for_midnight_shift(s... method test_do_not_mark_absent_before_shift_actual_end_time (line 523) | def test_do_not_mark_absent_before_shift_actual_end_time(self): method test_do_not_mark_absent_before_shift_actual_end_time_for_midnight_shift (line 546) | def test_do_not_mark_absent_before_shift_actual_end_time_for_midnight_... method test_skip_marking_absent_on_a_holiday (line 590) | def test_skip_marking_absent_on_a_holiday(self): method test_skip_absent_marking_for_a_fallback_default_shift (line 612) | def test_skip_absent_marking_for_a_fallback_default_shift(self): method test_skip_absent_marking_for_inactive_employee (line 651) | def test_skip_absent_marking_for_inactive_employee(self): method test_get_start_and_end_dates (line 666) | def test_get_start_and_end_dates(self): method test_skip_auto_attendance_for_duplicate_record (line 701) | def test_skip_auto_attendance_for_duplicate_record(self): method test_skip_auto_attendance_for_overlapping_shift (line 731) | def test_skip_auto_attendance_for_overlapping_shift(self): method test_mark_attendance_for_default_shift_when_shift_assignment_is_not_overlapping (line 765) | def test_mark_attendance_for_default_shift_when_shift_assignment_is_no... method test_validation_for_unlinked_logs_before_changing_important_shift_configuration (line 786) | def test_validation_for_unlinked_logs_before_changing_important_shift_... method test_circular_shift_times (line 822) | def test_circular_shift_times(self): method test_bg_job_creation_for_large_checkins (line 860) | def test_bg_job_creation_for_large_checkins(self): method test_precision_for_working_hours_threshold (line 867) | def test_precision_for_working_hours_threshold(self): method test_working_hours_threshold_for_half_day_holiday (line 913) | def test_working_hours_threshold_for_half_day_holiday(self): function setup_shift_type (line 966) | def setup_shift_type(**args): function make_shift_assignment (line 1010) | def make_shift_assignment( FILE: hrms/hr/doctype/skill/skill.py class Skill (line 9) | class Skill(Document): FILE: hrms/hr/doctype/skill_assessment/skill_assessment.py class SkillAssessment (line 9) | class SkillAssessment(Document): FILE: hrms/hr/doctype/staffing_plan/staffing_plan.js method get_query (line 38) | get_query() { method action (line 50) | action(selections) { FILE: hrms/hr/doctype/staffing_plan/staffing_plan.py class SubsidiaryCompanyError (line 13) | class SubsidiaryCompanyError(frappe.ValidationError): class ParentCompanyError (line 17) | class ParentCompanyError(frappe.ValidationError): class StaffingPlan (line 21) | class StaffingPlan(Document): method validate (line 41) | def validate(self): method validate_period (line 46) | def validate_period(self): method validate_details (line 51) | def validate_details(self): method set_total_estimated_budget (line 57) | def set_total_estimated_budget(self): method set_number_of_positions (line 75) | def set_number_of_positions(self, detail): method validate_overlap (line 78) | def validate_overlap(self, staffing_plan_detail): method validate_with_parent_plan (line 96) | def validate_with_parent_plan(self, staffing_plan_detail): method validate_with_subsidiary_plans (line 161) | def validate_with_subsidiary_plans(self, staffing_plan_detail): method set_job_requisitions (line 193) | def set_job_requisitions(self, job_reqs: list[str]) -> Document: function get_designation_counts (line 218) | def get_designation_counts(designation: str, company: str, job_opening: ... function get_active_staffing_plan_details (line 239) | def get_active_staffing_plan_details( FILE: hrms/hr/doctype/staffing_plan/staffing_plan_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/staffing_plan/test_staffing_plan.py class TestStaffingPlan (line 13) | class TestStaffingPlan(HRMSTestSuite): method setUp (line 14) | def setUp(self): method test_staffing_plan (line 17) | def test_staffing_plan(self): method test_staffing_plan_subsidiary_company (line 34) | def test_staffing_plan_subsidiary_company(self): method test_staffing_plan_parent_company (line 49) | def test_staffing_plan_parent_company(self): method test_staffing_details_from_job_requisition (line 78) | def test_staffing_details_from_job_requisition(self): function make_company (line 106) | def make_company(name=None, abbr=None): FILE: hrms/hr/doctype/staffing_plan_detail/staffing_plan_detail.py class StaffingPlanDetail (line 8) | class StaffingPlanDetail(Document): FILE: hrms/hr/doctype/training_event/test_training_event.py class TestTrainingEvent (line 11) | class TestTrainingEvent(HRMSTestSuite): method setUp (line 12) | def setUp(self): method test_training_event_status_update (line 18) | def test_training_event_status_update(self): function create_training_program (line 37) | def create_training_program(training_program, company="_Test Company"): function create_training_event (line 49) | def create_training_event(attendees): FILE: hrms/hr/doctype/training_event/training_event.py class TrainingEvent (line 13) | class TrainingEvent(Document): method validate (line 45) | def validate(self): method on_update_after_submit (line 49) | def on_update_after_submit(self): method set_employee_emails (line 52) | def set_employee_emails(self): method validate_period (line 55) | def validate_period(self): method set_status_for_attendees (line 59) | def set_status_for_attendees(self): FILE: hrms/hr/doctype/training_event/training_event_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/hr/doctype/training_event_employee/training_event_employee.py class TrainingEventEmployee (line 8) | class TrainingEventEmployee(Document): FILE: hrms/hr/doctype/training_feedback/test_training_feedback.py class TestTrainingFeedback (line 14) | class TestTrainingFeedback(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_employee_validations_for_feedback (line 21) | def test_employee_validations_for_feedback(self): method test_training_feedback_status (line 42) | def test_training_feedback_status(self): function create_training_feedback (line 60) | def create_training_feedback(event, employee): FILE: hrms/hr/doctype/training_feedback/training_feedback.py class TrainingFeedback (line 10) | class TrainingFeedback(Document): method validate (line 30) | def validate(self): method on_submit (line 52) | def on_submit(self): method on_cancel (line 60) | def on_cancel(self): FILE: hrms/hr/doctype/training_program/test_training_program.py class TestTrainingProgram (line 7) | class TestTrainingProgram(HRMSTestSuite): FILE: hrms/hr/doctype/training_program/training_program.py class TrainingProgram (line 8) | class TrainingProgram(Document): FILE: hrms/hr/doctype/training_program/training_program_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/hr/doctype/training_result/test_training_result.py class TestTrainingResult (line 9) | class TestTrainingResult(HRMSTestSuite): FILE: hrms/hr/doctype/training_result/training_result.py class TrainingResult (line 12) | class TrainingResult(Document): method validate (line 29) | def validate(self): method on_submit (line 36) | def on_submit(self): function get_employees (line 49) | def get_employees(training_event: str): FILE: hrms/hr/doctype/training_result_employee/training_result_employee.py class TrainingResultEmployee (line 8) | class TrainingResultEmployee(Document): FILE: hrms/hr/doctype/travel_itinerary/travel_itinerary.py class TravelItinerary (line 8) | class TravelItinerary(Document): FILE: hrms/hr/doctype/travel_request/test_travel_request.py class TestTravelRequest (line 7) | class TestTravelRequest(HRMSTestSuite): FILE: hrms/hr/doctype/travel_request/travel_request.py class TravelRequest (line 10) | class TravelRequest(Document): method validate (line 48) | def validate(self): FILE: hrms/hr/doctype/travel_request_costing/travel_request_costing.py class TravelRequestCosting (line 8) | class TravelRequestCosting(Document): FILE: hrms/hr/doctype/upload_attendance/test_upload_attendance.py class TestUploadAttendance (line 14) | class TestUploadAttendance(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_date_range (line 18) | def test_date_range(self): FILE: hrms/hr/doctype/upload_attendance/upload_attendance.js method onload (line 7) | onload() { method refresh (line 12) | refresh() { method get_template (line 18) | get_template() { method show_upload (line 33) | show_upload() { method setup_import_progress (line 42) | setup_import_progress() { FILE: hrms/hr/doctype/upload_attendance/upload_attendance.py class UploadAttendance (line 18) | class UploadAttendance(Document): function get_template (line 35) | def get_template(): function add_header (line 60) | def add_header(w): function add_data (line 72) | def add_data(w, args): function get_data (line 78) | def get_data(args): function get_holidays_for_employees (line 121) | def get_holidays_for_employees(employees, from_date, to_date): function writedata (line 132) | def writedata(w, data): function get_dates (line 137) | def get_dates(args): function get_active_employees (line 144) | def get_active_employees(): function get_existing_attendance_records (line 153) | def get_existing_attendance_records(args): function get_naming_series (line 168) | def get_naming_series(): function upload (line 176) | def upload(): function import_attendances (line 188) | def import_attendances(rows): FILE: hrms/hr/doctype/vehicle_log/test_vehicle_log.py class TestVehicleLog (line 13) | class TestVehicleLog(HRMSTestSuite): method setUp (line 14) | def setUp(self): method test_make_vehicle_log_and_syncing_of_odometer_value (line 23) | def test_make_vehicle_log_and_syncing_of_odometer_value(self): method test_vehicle_log_fuel_expense (line 42) | def test_vehicle_log_fuel_expense(self): method test_vehicle_log_with_service_expenses (line 53) | def test_vehicle_log_with_service_expenses(self): function get_vehicle (line 65) | def get_vehicle(employee_id): function make_vehicle_log (line 89) | def make_vehicle_log(license_plate, employee_id, with_services=False): FILE: hrms/hr/doctype/vehicle_log/vehicle_log.py class VehicleLog (line 11) | class VehicleLog(Document): method validate (line 38) | def validate(self): method on_submit (line 46) | def on_submit(self): method on_cancel (line 49) | def on_cancel(self): function make_expense_claim (line 59) | def make_expense_claim(docname: str) -> dict: FILE: hrms/hr/doctype/vehicle_service/vehicle_service.py class VehicleService (line 8) | class VehicleService(Document): FILE: hrms/hr/doctype/vehicle_service_item/test_vehicle_service_item.py class TestVehicleServiceItem (line 8) | class TestVehicleServiceItem(HRMSTestSuite): FILE: hrms/hr/doctype/vehicle_service_item/vehicle_service_item.py class VehicleServiceItem (line 8) | class VehicleServiceItem(Document): FILE: hrms/hr/notification/exit_interview_scheduled/exit_interview_scheduled.py function get_context (line 4) | def get_context(context): FILE: hrms/hr/notification/training_feedback/training_feedback.py function get_context (line 1) | def get_context(context): FILE: hrms/hr/notification/training_scheduled/training_scheduled.py function get_context (line 1) | def get_context(context): FILE: hrms/hr/page/organizational_chart/organizational_chart.py function get_children (line 6) | def get_children(parent=None, company=None, exclude_node=None): function get_connections (line 41) | def get_connections(employee: str, lft: int, rgt: int) -> int: FILE: hrms/hr/page/organizational_chart/test_organizational_chart.py class TestOrganizationalChart (line 13) | class TestOrganizationalChart(HRMSTestSuite): method setUp (line 14) | def setUp(self): method test_get_children (line 18) | def test_get_children(self): FILE: hrms/hr/page/team_updates/team_updates.py function get_data (line 7) | def get_data(start=0): FILE: hrms/hr/report/appraisal_overview/appraisal_overview.py function execute (line 8) | def execute(filters: dict | None = None) -> tuple: function get_columns (line 17) | def get_columns() -> list[dict]: function get_data (line 68) | def get_data(filters: dict | None = None) -> list[dict]: function get_chart_data (line 103) | def get_chart_data(data: list[dict]) -> dict: FILE: hrms/hr/report/appraisal_overview/test_appraisal_overview.py class TestAppraisalOverview (line 16) | class TestAppraisalOverview(HRMSTestSuite): method setUp (line 17) | def setUp(self): method test_appraisal_overview (line 34) | def test_appraisal_overview(self): method test_appraisal_filters (line 62) | def test_appraisal_filters(self): method create_appraisal_data (line 72) | def create_appraisal_data(self, appraisal): FILE: hrms/hr/report/daily_work_summary_replies/daily_work_summary_replies.py function execute (line 11) | def execute(filters=None): function get_columns (line 18) | def get_columns(filters=None): function get_data (line 39) | def get_data(filters): FILE: hrms/hr/report/employee_advance_summary/employee_advance_summary.py function execute (line 11) | def execute(filters=None): function get_columns (line 41) | def get_columns(): function get_advances (line 105) | def get_advances(filters): FILE: hrms/hr/report/employee_analytics/employee_analytics.py function execute (line 13) | def execute(filters=None): function get_columns (line 28) | def get_columns(): function get_employees (line 41) | def get_employees(filters): function get_parameters (line 63) | def get_parameters(filters): function get_chart_data (line 71) | def get_chart_data(parameters, filters): FILE: hrms/hr/report/employee_analytics/test_employee_analytics.py class TestEmployeeAnalytics (line 11) | class TestEmployeeAnalytics(HRMSTestSuite): method setUp (line 12) | def setUp(self): method test_branches (line 18) | def test_branches(self): method test_employee_grade (line 37) | def test_employee_grade(self): function test_data (line 51) | def test_data(self, values_to_assert, chart_data): function create_employee_grade (line 60) | def create_employee_grade(): function create_branches (line 68) | def create_branches(): function get_employees_without_set_parameter (line 76) | def get_employees_without_set_parameter(parameter, company): function create_company (line 80) | def create_company(company_name): FILE: hrms/hr/report/employee_birthday/employee_birthday.py function execute (line 13) | def execute(filters=None): function get_columns (line 24) | def get_columns(): function get_employees (line 37) | def get_employees(filters): function get_filtered_month (line 62) | def get_filtered_month(filters): FILE: hrms/hr/report/employee_birthday/test_employee_birthday.py class TestEmployeeBirthday (line 11) | class TestEmployeeBirthday(HRMSTestSuite): method setUp (line 12) | def setUp(self): method test_employee_birth_day_report (line 17) | def test_employee_birth_day_report(self): method test_user_permissions_on_employees (line 40) | def test_user_permissions_on_employees(self): FILE: hrms/hr/report/employee_exits/employee_exits.py function execute (line 12) | def execute(filters=None): function get_columns (line 21) | def get_columns(): function get_data (line 88) | def get_data(filters): function get_conditions (line 128) | def get_conditions(filters, query, employee, interview, fnf): function get_chart_data (line 175) | def get_chart_data(data): function get_report_summary (line 203) | def get_report_summary(data): FILE: hrms/hr/report/employee_exits/test_employee_exits.py class TestEmployeeExits (line 15) | class TestEmployeeExits(HRMSTestSuite): method setUp (line 16) | def setUp(self): method create_records (line 20) | def create_records(self): method test_employee_exits_summary (line 81) | def test_employee_exits_summary(self): method test_pending_exit_interviews_summary (line 126) | def test_pending_exit_interviews_summary(self): method test_pending_exit_questionnaire_summary (line 156) | def test_pending_exit_questionnaire_summary(self): method test_pending_fnf_summary (line 186) | def test_pending_fnf_summary(self): FILE: hrms/hr/report/employee_hours_utilization_based_on_timesheet/employee_hours_utilization_based_on_timesheet.py function execute (line 10) | def execute(filters=None): class EmployeeHoursReport (line 14) | class EmployeeHoursReport: method __init__ (line 17) | def __init__(self, filters=None): method validate_dates (line 26) | def validate_dates(self): method validate_standard_working_hours (line 32) | def validate_standard_working_hours(self): method run (line 42) | def run(self): method generate_columns (line 50) | def generate_columns(self): method generate_data (line 99) | def generate_data(self): method filter_stats_by_department (line 120) | def filter_stats_by_department(self): method generate_filtered_time_logs (line 129) | def generate_filtered_time_logs(self): method generate_stats_by_employee (line 155) | def generate_stats_by_employee(self): method set_employee_department_and_name (line 168) | def set_employee_department_and_name(self): method calculate_utilizations (line 176) | def calculate_utilizations(self): method generate_report_summary (line 189) | def generate_report_summary(self): method generate_chart_data (line 231) | def generate_chart_data(self): FILE: hrms/hr/report/employee_hours_utilization_based_on_timesheet/test_employee_util.py class TestEmployeeUtilization (line 13) | class TestEmployeeUtilization(HRMSTestSuite): method setUp (line 14) | def setUp(self): method create_test_timesheets (line 27) | def create_test_timesheets(self): method test_utilization_report_with_required_filters_only (line 65) | def test_utilization_report_with_required_filters_only(self): method test_utilization_report_for_single_employee (line 73) | def test_utilization_report_for_single_employee(self): method test_utilization_report_for_project (line 100) | def test_utilization_report_for_project(self): method test_utilization_report_for_department (line 127) | def test_utilization_report_for_department(self): method test_report_summary_data (line 141) | def test_report_summary_data(self): method get_expected_data_for_test_employees (line 153) | def get_expected_data_for_test_employees(self): FILE: hrms/hr/report/employee_leave_balance/employee_leave_balance.py function execute (line 21) | def execute(filters: Filters | None = None) -> tuple: function get_columns (line 31) | def get_columns() -> list[dict]: function get_data (line 87) | def get_data(filters: Filters) -> list: function get_leave_types (line 134) | def get_leave_types() -> list[str]: function get_employees (line 139) | def get_employees(filters: Filters) -> list[dict]: function get_opening_balance (line 160) | def get_opening_balance( function get_allocated_and_expired_leaves (line 184) | def get_allocated_and_expired_leaves( function get_allocated_leaves (line 198) | def get_allocated_leaves(from_date, to_date, employee, leave_type): function get_expired_leaves (line 215) | def get_expired_leaves(from_date, to_date, employee, leave_type): function get_cf_leaves (line 232) | def get_cf_leaves(from_date, to_date, employee, leave_type): function get_chart_data (line 249) | def get_chart_data(data: list, filters: Filters) -> dict: function get_dataset_for_chart (line 269) | def get_dataset_for_chart(employee_data: list, datasets: list, labels: l... FILE: hrms/hr/report/employee_leave_balance/test_employee_leave_balance.py class TestEmployeeLeaveBalance (line 28) | class TestEmployeeLeaveBalance(HRMSTestSuite): method setUp (line 29) | def setUp(self): method test_employee_leave_balance (line 53) | def test_employee_leave_balance(self): method test_opening_balance_on_alloc_boundary_dates (line 104) | def test_opening_balance_on_alloc_boundary_dates(self): method test_opening_balance_considers_carry_forwarded_leaves (line 155) | def test_opening_balance_considers_carry_forwarded_leaves(self): method test_employee_status_filter (line 209) | def test_employee_status_filter(self): method test_manually_expired_leaves (line 245) | def test_manually_expired_leaves(self): FILE: hrms/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.py function execute (line 11) | def execute(filters=None): function get_columns (line 20) | def get_columns(leave_types): function get_conditions (line 33) | def get_conditions(filters): function get_data (line 47) | def get_data(filters, leave_types): FILE: hrms/hr/report/employee_leave_balance_summary/test_employee_leave_balance_summary.py class TestEmployeeLeaveBalance (line 24) | class TestEmployeeLeaveBalance(HRMSTestSuite): method setUp (line 25) | def setUp(self): method test_employee_leave_balance_summary (line 48) | def test_employee_leave_balance_summary(self): method test_get_leave_balance_near_alloc_expiry (line 112) | def test_get_leave_balance_near_alloc_expiry(self): method test_employee_status_filter (line 145) | def test_employee_status_filter(self): FILE: hrms/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py function execute (line 11) | def execute(filters=None): function get_columns (line 20) | def get_columns(): function get_data (line 53) | def get_data(filters): FILE: hrms/hr/report/employees_working_on_a_holiday/test_employees_working_on_a_holiday.py class TestEmployeesWorkingOnAHoliday (line 18) | class TestEmployeesWorkingOnAHoliday(HRMSTestSuite): method setUp (line 19) | def setUp(self): method test_report (line 23) | def test_report(self): FILE: hrms/hr/report/leave_ledger/leave_ledger.py function execute (line 11) | def execute(filters: Filters = None) -> tuple: function get_columns (line 18) | def get_columns() -> list[dict]: function get_data (line 119) | def get_data(filters: Filters) -> list[dict]: function add_total_row (line 169) | def add_total_row(result: list[dict], filters: Filters) -> list[dict]: FILE: hrms/hr/report/leave_ledger/test_leave_ledger.py class TestLeaveLedger (line 22) | class TestLeaveLedger(HRMSTestSuite): method setUp (line 23) | def setUp(self): method create_earned_leave_allocation (line 63) | def create_earned_leave_allocation(self): method create_casual_leave_allocation (line 83) | def create_casual_leave_allocation(self): method create_leave_applications (line 93) | def create_leave_applications(self): method test_report_with_filters (line 104) | def test_report_with_filters(self): method test_totals (line 150) | def test_totals(self): FILE: hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.js function set_reqd_filter (line 150) | function set_reqd_filter(fieldname, is_reqd) { function validate_date_range (line 155) | function validate_date_range(report) { FILE: hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py function execute (line 37) | def execute(filters: Filters | None = None) -> tuple: function get_message (line 80) | def get_message() -> str: function get_columns (line 105) | def get_columns(filters: Filters) -> list[dict]: function get_columns_for_leave_types (line 188) | def get_columns_for_leave_types() -> list[dict]: function get_columns_for_days (line 197) | def get_columns_for_days(filters: Filters) -> list[dict]: function get_dates_in_period (line 211) | def get_dates_in_period(filters: Filters) -> list[str]: function get_total_days_in_month (line 225) | def get_total_days_in_month(filters: Filters) -> int: function get_date_condition (line 229) | def get_date_condition(docfield: Field, filters: Filters) -> Criterion: function get_data (line 236) | def get_data(filters: Filters, attendance_map: dict) -> list[dict]: function get_attendance_map (line 260) | def get_attendance_map(filters: Filters) -> dict: function get_attendance_records (line 306) | def get_attendance_records(filters: Filters) -> list[dict]: function get_employee_related_details (line 343) | def get_employee_related_details(filters: Filters) -> tuple[dict, list]: function get_holiday_map (line 403) | def get_holiday_map(filters: Filters) -> dict[str, list[dict]]: function get_rows (line 442) | def get_rows(employee_details: dict, filters: Filters, holiday_map: dict... function set_defaults_for_summarized_view (line 484) | def set_defaults_for_summarized_view(filters, row): function get_attendance_status_for_summarized_view (line 490) | def get_attendance_status_for_summarized_view( function get_attendance_summary_and_days (line 523) | def get_attendance_summary_and_days(employee: str, filters: Filters) -> ... function get_attendance_status_for_detailed_view (line 575) | def get_attendance_status_for_detailed_view( function get_holiday_status (line 609) | def get_holiday_status(holiday_date: date, holidays: list) -> str: function get_leave_summary (line 622) | def get_leave_summary(employee: str, filters: Filters) -> dict[str, float]: function get_entry_exits_summary (line 653) | def get_entry_exits_summary(employee: str, filters: Filters) -> dict[str... function get_attendance_years (line 682) | def get_attendance_years() -> str: function get_chart_data (line 697) | def get_chart_data(attendance_map: dict, filters: Filters) -> dict: FILE: hrms/hr/report/monthly_attendance_sheet/test_monthly_attendance_sheet.py class TestMonthlyAttendanceSheet (line 22) | class TestMonthlyAttendanceSheet(HRMSTestSuite): method setUp (line 23) | def setUp(self): method test_monthly_attendance_sheet_report (line 39) | def test_monthly_attendance_sheet_report(self): method test_detailed_view (line 74) | def test_detailed_view(self): method test_single_shift_with_leaves_in_detailed_view (line 119) | def test_single_shift_with_leaves_in_detailed_view(self): method test_single_leave_record (line 155) | def test_single_leave_record(self): method test_summarized_view (line 179) | def test_summarized_view(self): method test_attendance_with_group_by_filter (line 225) | def test_attendance_with_group_by_filter(self): method test_attendance_with_employee_filter (line 275) | def test_attendance_with_employee_filter(self): method test_attendance_with_company_filter (line 322) | def test_attendance_with_company_filter(self): method test_attendance_with_employee_filter_and_summarized_view (line 352) | def test_attendance_with_employee_filter_and_summarized_view(self): method test_validations (line 401) | def test_validations(self): method test_summarised_view_with_date_range_filter (line 443) | def test_summarised_view_with_date_range_filter(self): method test_detailed_view_with_date_range_filter (line 488) | def test_detailed_view_with_date_range_filter(self): method test_detailed_view_with_date_range_and_group_by_filter (line 522) | def test_detailed_view_with_date_range_and_group_by_filter(self): function get_leave_application (line 558) | def get_leave_application(employee, date=None): function execute_report_with_invalid_filters (line 574) | def execute_report_with_invalid_filters(invalid_filter_name): function date_key (line 590) | def date_key(date_obj): FILE: hrms/hr/report/project_profitability/project_profitability.py function execute (line 9) | def execute(filters=None): function get_data (line 16) | def get_data(filters): function get_rows (line 22) | def get_rows(filters): function calculate_cost_and_profit (line 79) | def calculate_cost_and_profit(data): function get_standard_working_hours (line 97) | def get_standard_working_hours() -> float | None: function get_chart_data (line 110) | def get_chart_data(data): function get_columns (line 129) | def get_columns(): FILE: hrms/hr/report/project_profitability/test_project_profitability.py class TestProjectProfitability (line 14) | class TestProjectProfitability(HRMSTestSuite): method setUp (line 15) | def setUp(self): method test_project_profitability (line 40) | def test_project_profitability(self): function create_activity_type (line 73) | def create_activity_type(activity_type: str) -> str: FILE: hrms/hr/report/recruitment_analytics/recruitment_analytics.py function execute (line 9) | def execute(filters=None): function get_columns (line 21) | def get_columns(): function get_data (line 69) | def get_data(filters): function get_parent_row (line 84) | def get_parent_row(sp_jo_map, sp, jo_ja_map, ja_joff_map): function get_child_row (line 98) | def get_child_row(jo, jo_ja_map, ja_joff_map): function get_staffing_plan (line 119) | def get_staffing_plan(filters): function get_job_opening (line 146) | def get_job_opening(sp_list, filters): function get_job_applicant (line 167) | def get_job_applicant(jo_list): function get_job_offer (line 188) | def get_job_offer(ja_list, filters=None): FILE: hrms/hr/report/shift_attendance/shift_attendance.py function execute (line 14) | def execute(filters=None): function get_columns (line 22) | def get_columns(): function get_data (line 135) | def get_data(filters): function get_report_summary (line 143) | def get_report_summary(data): function get_chart_data (line 196) | def get_chart_data(data): function get_attendance_with_checkins (line 216) | def get_attendance_with_checkins(filters): function get_base_attendance_query (line 245) | def get_base_attendance_query(filters): function get_attendance_without_checkins (line 286) | def get_attendance_without_checkins(filters): function update_data (line 300) | def update_data(data, filters): function format_float_precision (line 314) | def format_float_precision(value): function format_in_out_time (line 319) | def format_in_out_time(in_time, out_time, attendance_date): function convert_datetime_to_time_for_same_date (line 329) | def convert_datetime_to_time_for_same_date(start, end): function update_late_entry (line 339) | def update_late_entry(entry, consider_grace_period): function update_early_exit (line 352) | def update_early_exit(entry, consider_grace_period): FILE: hrms/hr/report/shift_attendance/test_shift_attendance.py class TestShiftAttendance (line 15) | class TestShiftAttendance(HRMSTestSuite): method setUp (line 16) | def setUp(self): method create_records (line 20) | def create_records(self): method test_data (line 77) | def test_data(self): method test_chart (line 135) | def test_chart(self): method test_report_summary (line 150) | def test_report_summary(self): method test_user_permission_on_attendance_records (line 167) | def test_user_permission_on_attendance_records(self): method test_get_attendance_records_without_checkins (line 219) | def test_get_attendance_records_without_checkins(self): function get_chart_data (line 261) | def get_chart_data(report): function make_checkin (line 272) | def make_checkin(employee, time, log_type): FILE: hrms/hr/report/unpaid_expense_claim/unpaid_expense_claim.py function execute (line 10) | def execute(filters=None): function get_columns (line 17) | def get_columns(): function get_unclaimed_expese_claims (line 28) | def get_unclaimed_expese_claims(filters): FILE: hrms/hr/report/vehicle_expenses/test_vehicle_expenses.py class TestVehicleExpenses (line 17) | class TestVehicleExpenses(HRMSTestSuite): method setUp (line 18) | def setUp(self): method test_vehicle_expenses_based_on_fiscal_year (line 26) | def test_vehicle_expenses_based_on_fiscal_year(self): FILE: hrms/hr/report/vehicle_expenses/vehicle_expenses.js function set_reqd_filter (line 64) | function set_reqd_filter(fieldname, is_reqd) { FILE: hrms/hr/report/vehicle_expenses/vehicle_expenses.py function execute (line 12) | def execute(filters=None): function get_columns (line 22) | def get_columns(): function get_vehicle_log_data (line 62) | def get_vehicle_log_data(filters): function get_conditions (line 93) | def get_conditions(filters): function get_period_dates (line 110) | def get_period_dates(filters): function get_service_expense (line 120) | def get_service_expense(logname): function get_chart_data (line 135) | def get_chart_data(data, filters): FILE: hrms/hr/utils.py class DuplicateDeclarationError (line 48) | class DuplicateDeclarationError(frappe.ValidationError): class OverAllocationError (line 52) | class OverAllocationError(frappe.ValidationError): function set_employee_name (line 56) | def set_employee_name(doc): function update_employee_work_history (line 61) | def update_employee_work_history(employee, details, date=None, cancel=Fa... function get_formatted_value (line 101) | def get_formatted_value(value, fieldtype): function delete_employee_work_history (line 129) | def delete_employee_work_history(details, employee, date): function update_to_date_in_work_history (line 149) | def update_to_date_in_work_history(employee, cancel): function get_employee_field_property (line 166) | def get_employee_field_property(employee, fieldname): function validate_dates (line 190) | def validate_dates(doc, from_date, to_date, restrict_future_dates=True): function validate_overlap (line 204) | def validate_overlap(doc, from_date, to_date, company=None): function get_doc_condition (line 236) | def get_doc_condition(doctype): function throw_overlap_error (line 248) | def throw_overlap_error(doc, exists_for, overlap_doc, from_date, to_date): function validate_duplicate_exemption_for_payroll_period (line 259) | def validate_duplicate_exemption_for_payroll_period(doctype, docname, pa... function validate_tax_declaration (line 276) | def validate_tax_declaration(declarations): function get_total_exemption_amount (line 284) | def get_total_exemption_amount(declarations): function get_leave_period (line 312) | def get_leave_period(from_date, to_date, company): function generate_leave_encashment (line 330) | def generate_leave_encashment(): function allocate_earned_leaves (line 357) | def allocate_earned_leaves(): function get_upcoming_earned_leave_from_schedule (line 391) | def get_upcoming_earned_leave_from_schedule(allocation_name, today): function get_annual_allocation_from_policy (line 399) | def get_annual_allocation_from_policy(allocation, e_leave_type): function calculate_upcoming_earned_leave (line 407) | def calculate_upcoming_earned_leave(allocation, e_leave_type, date_of_jo... function update_previous_leave_allocation (line 418) | def update_previous_leave_allocation(allocation, annual_allocation, e_le... function log_allocation_error (line 454) | def log_allocation_error(allocation_name, error): function send_email_for_failed_allocations (line 467) | def send_email_for_failed_allocations(failed_allocations): function get_monthly_earned_leave (line 491) | def get_monthly_earned_leave( function get_sub_period_start_and_end (line 519) | def get_sub_period_start_and_end(date, frequency): function round_earned_leaves (line 528) | def round_earned_leaves(earned_leaves, rounding): function get_leave_allocations (line 542) | def get_leave_allocations(date, leave_type): function get_earned_leaves (line 576) | def get_earned_leaves(): function create_additional_leave_ledger_entry (line 590) | def create_additional_leave_ledger_entry(allocation, leaves, date): function get_expected_allocation_date_for_period (line 598) | def get_expected_allocation_date_for_period(frequency, allocate_on_day, ... function get_salary_assignments (line 618) | def get_salary_assignments(employee, payroll_period): function get_sal_slip_total_benefit_given (line 645) | def get_sal_slip_total_benefit_given(employee, payroll_period, component... function get_holiday_dates_for_employee (line 678) | def get_holiday_dates_for_employee(employee, start_date, end_date): function get_holidays_for_employee (line 686) | def get_holidays_for_employee(employee, start_date, end_date, raise_exce... function calculate_annual_eligible_hra_exemption (line 715) | def calculate_annual_eligible_hra_exemption(doc): function calculate_hra_exemption_for_period (line 722) | def calculate_hra_exemption_for_period(doc): function calculate_tax_with_marginal_relief (line 729) | def calculate_tax_with_marginal_relief(tax_slab, tax_amount, annual_taxa... function get_previous_claimed_amount (line 735) | def get_previous_claimed_amount(employee, payroll_period, non_pro_rata=F... function share_doc_with_approver (line 764) | def share_doc_with_approver(doc, user): function validate_active_employee (line 792) | def validate_active_employee(employee, method=None): function validate_loan_repay_from_salary (line 805) | def validate_loan_repay_from_salary(doc, method=None): function get_matching_queries (line 830) | def get_matching_queries( function get_ec_matching_query (line 856) | def get_ec_matching_query( function validate_bulk_tool_fields (line 913) | def validate_bulk_tool_fields( function notify_bulk_action_status (line 928) | def notify_bulk_action_status(doctype: str, failure: list, success: list... function set_geolocation_from_coordinates (line 968) | def set_geolocation_from_coordinates(doc): function get_distance_between_coordinates (line 990) | def get_distance_between_coordinates(lat1, long1, lat2, long2): function check_app_permission (line 1000) | def check_app_permission(): function get_exact_month_diff (line 1017) | def get_exact_month_diff(string_ed_date: DateTimeLikeObject, string_st_d... function get_semester_start (line 1031) | def get_semester_start(date): function get_semester_end (line 1038) | def get_semester_end(date): FILE: hrms/hr/web_form/job_application/job_application.py function get_context (line 1) | def get_context(context): FILE: hrms/install.py function after_install (line 6) | def after_install(): FILE: hrms/mixins/appraisal.py class AppraisalMixin (line 6) | class AppraisalMixin: method validate_total_weightage (line 9) | def validate_total_weightage(self, table_name: str, table_label: str) ... FILE: hrms/mixins/pwa_notifications.py class PWANotificationsMixin (line 7) | class PWANotificationsMixin: method notify_approval_status (line 10) | def notify_approval_status(self): method notify_approver (line 33) | def notify_approver(self): method _get_doc_status_field (line 52) | def _get_doc_status_field(self) -> str: method _get_doc_approver (line 60) | def _get_doc_approver(self) -> str: method _get_employee_user (line 69) | def _get_employee_user(self) -> str: method _get_user_name (line 72) | def _get_user_name(self, user) -> str: FILE: hrms/overrides/company.py function make_company_fixtures (line 12) | def make_company_fixtures(doc, method=None): function delete_company_fixtures (line 20) | def delete_company_fixtures(): function run_regional_setup (line 41) | def run_regional_setup(country): function get_error_message (line 54) | def get_error_message(error) -> str: function make_salary_components (line 67) | def make_salary_components(country): function read_data_file (line 92) | def read_data_file(file_path): function set_default_hr_accounts (line 100) | def set_default_hr_accounts(doc, method=None): function validate_default_accounts (line 119) | def validate_default_accounts(doc, method=None): function handle_linked_docs (line 137) | def handle_linked_docs(doc, method=None): function delete_docs_with_company_field (line 142) | def delete_docs_with_company_field(doc, method=None): function clear_company_field_for_single_doctypes (line 153) | def clear_company_field_for_single_doctypes(doc): function get_single_doctypes_with_company_field (line 168) | def get_single_doctypes_with_company_field(): FILE: hrms/overrides/dashboard_overrides.py function get_dashboard_for_employee (line 7) | def get_dashboard_for_employee(data): function get_dashboard_for_holiday_list (line 68) | def get_dashboard_for_holiday_list(data): function get_dashboard_for_timesheet (line 76) | def get_dashboard_for_timesheet(data): function get_dashboard_for_project (line 82) | def get_dashboard_for_project(data): function get_dashboard_for_bank_account (line 90) | def get_dashboard_for_bank_account(data): FILE: hrms/overrides/employee_master.py class EmployeeMaster (line 12) | class EmployeeMaster(Employee): method autoname (line 13) | def autoname(self): function validate_onboarding_process (line 29) | def validate_onboarding_process(doc, method=None): function publish_update (line 48) | def publish_update(doc, method=None): function update_job_applicant_and_offer (line 54) | def update_job_applicant_and_offer(doc, method=None): function update_approver_role (line 88) | def update_approver_role(doc, method=None): function update_approver_user_roles (line 101) | def update_approver_user_roles(doc, method=None): function update_employee_transfer (line 113) | def update_employee_transfer(doc, method=None): function get_timeline_data (line 121) | def get_timeline_data(doctype: str, name: str) -> dict: function get_retirement_date (line 147) | def get_retirement_date(date_of_birth: str | None = None): FILE: hrms/overrides/employee_payment_entry.py class EmployeePaymentEntry (line 20) | class EmployeePaymentEntry(PaymentEntry): method get_valid_reference_doctypes (line 21) | def get_valid_reference_doctypes(self): method set_missing_ref_details (line 31) | def set_missing_ref_details( function get_payment_entry_for_employee (line 76) | def get_payment_entry_for_employee( function get_party_account (line 155) | def get_party_account(doc): function get_grand_total_and_outstanding_amount (line 166) | def get_grand_total_and_outstanding_amount(doc, party_amount, party_acco... function get_paid_amount_and_received_amount (line 201) | def get_paid_amount_and_received_amount( function get_payment_reference_details (line 232) | def get_payment_reference_details( function get_reference_details_for_employee (line 248) | def get_reference_details_for_employee( function get_total_amount_and_exchange_rate (line 287) | def get_total_amount_and_exchange_rate(ref_doc, party_account_currency, ... function set_exchange_rate_in_advance (line 323) | def set_exchange_rate_in_advance(doc: Document, method: None = None): FILE: hrms/overrides/employee_project.py class EmployeeProject (line 11) | class EmployeeProject(Project): method calculate_gross_margin (line 12) | def calculate_gross_margin(self): method update_costing (line 25) | def update_costing(self): FILE: hrms/overrides/employee_timesheet.py class EmployeeTimesheet (line 9) | class EmployeeTimesheet(Timesheet): method set_status (line 10) | def set_status(self): FILE: hrms/patches/post_install/create_country_fixtures.py function execute (line 6) | def execute(): FILE: hrms/patches/post_install/delete_employee_transfer_property_doctype.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/move_doctype_reports_and_notification_from_hr_to_payroll.py function execute (line 8) | def execute(): FILE: hrms/patches/post_install/move_payroll_setting_separately_from_hr_settings.py function execute (line 8) | def execute(): FILE: hrms/patches/post_install/move_tax_slabs_from_payroll_period_to_income_tax_slab.py function execute (line 8) | def execute(): FILE: hrms/patches/post_install/rename_stop_to_send_birthday_reminders.py function execute (line 5) | def execute(): FILE: hrms/patches/post_install/set_company_in_leave_ledger_entry.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/set_department_for_doctypes.py function execute (line 6) | def execute(): FILE: hrms/patches/post_install/set_payroll_cost_centers.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/set_payroll_entry_status.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/set_training_event_attendance.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/update_allocate_on_in_leave_type.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/update_employee_advance_status.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/update_expense_claim_status_for_paid_advances.py function execute (line 4) | def execute(): FILE: hrms/patches/post_install/update_performance_module_changes.py function execute (line 6) | def execute(): function create_kras (line 12) | def create_kras(): function rename_fields (line 58) | def rename_fields(): function update_kra_evaluation_method (line 68) | def update_kra_evaluation_method(): FILE: hrms/patches/post_install/update_reason_for_resignation_in_employee.py function execute (line 8) | def execute(): FILE: hrms/patches/post_install/update_start_end_date_for_old_shift_assignment.py function execute (line 8) | def execute(): FILE: hrms/patches/post_install/updates_for_multi_currency_payroll.py function execute (line 9) | def execute(): FILE: hrms/patches/v14_0/add_expense_claim_to_repost_settings.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/create_custom_field_for_appraisal_template.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/create_custom_field_in_loan.py function execute (line 7) | def execute(): FILE: hrms/patches/v14_0/create_marginal_relief_field_for_india_localisation.py function execute (line 9) | def execute(): FILE: hrms/patches/v14_0/create_vehicle_service_item.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/update_ess_user_access.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/update_loan_repayment_repay_from_salary.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/update_payroll_frequency_to_none_if_salary_slip_is_based_on_timesheet.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/update_repay_from_salary_and_payroll_payable_account_fields.py function execute (line 4) | def execute(): FILE: hrms/patches/v14_0/update_title_in_employee_onboarding_and_separation_templates.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/add_leave_type_permission_for_ess.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/add_loan_docperms_to_ess.py function execute (line 6) | def execute(): FILE: hrms/patches/v15_0/call_set_total_advance_paid_on_advance_documents.py function execute (line 5) | def execute(): function call_set_total_advance_paid (line 17) | def call_set_total_advance_paid(doctype) -> list: FILE: hrms/patches/v15_0/check_version_compatibility_with_frappe.py function execute (line 6) | def execute(): FILE: hrms/patches/v15_0/create_accounting_dimensions_in_leave_encashment.py function execute (line 6) | def execute(): FILE: hrms/patches/v15_0/create_marginal_relief_field_for_india_localisation.py function execute (line 9) | def execute(): FILE: hrms/patches/v15_0/enable_allow_checkin_setting.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/fix_timesheet_status.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/make_hr_settings_tab_in_company_master.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/migrate_loan_type_to_loan_product.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/migrate_shift_assignment_schedule_to_shift_schedule.py function execute (line 6) | def execute(): FILE: hrms/patches/v15_0/notify_about_loan_app_separation.py function execute (line 7) | def execute(): function notify_existing_users (line 15) | def notify_existing_users(): FILE: hrms/patches/v15_0/rename_and_update_leave_encashment_fields.py function execute (line 5) | def execute(): FILE: hrms/patches/v15_0/rename_claim_date_to_payroll_date_in_employee_benefit_claim.py function execute (line 5) | def execute(): FILE: hrms/patches/v15_0/rename_enable_late_entry_early_exit_grace_period.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/set_default_asset_action_in_fnf.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/set_half_day_status_to_present_in_exisiting_half_day_attendance.py function execute (line 4) | def execute(): FILE: hrms/patches/v15_0/update_advance_payment_ledger_amount.py function execute (line 5) | def execute(): function update_payment_entry (line 12) | def update_payment_entry(advance_doctypes): function update_journal_entry (line 38) | def update_journal_entry(advance_doctypes): FILE: hrms/patches/v15_0/update_payment_status_for_leave_encashment.py function execute (line 5) | def execute(): FILE: hrms/patches/v16_0/create_custom_field_for_employee_advance_in_employee_master.py function execute (line 5) | def execute(): FILE: hrms/patches/v16_0/create_holiday_list_assignments.py function execute (line 6) | def execute(): function create_holiday_list_assignment (line 19) | def create_holiday_list_assignment(entity_details): function get_employee_holiday_details (line 27) | def get_employee_holiday_details(): function get_company_holiday_details (line 49) | def get_company_holiday_details(): FILE: hrms/patches/v16_0/delete_old_workspaces.py function execute (line 4) | def execute(): FILE: hrms/patches/v16_0/set_base_paid_amount_in_employee_advance.py function execute (line 5) | def execute(): FILE: hrms/patches/v16_0/set_currency_and_base_fields_in_expense_claim.py function execute (line 4) | def execute(): FILE: hrms/patches/v1_0/rearrange_employee_fields.py function execute (line 5) | def execute(): FILE: hrms/payroll/doctype/additional_salary/additional_salary.py class AdditionalSalary (line 13) | class AdditionalSalary(Document): method before_validate (line 43) | def before_validate(self): method on_submit (line 47) | def on_submit(self): method on_cancel (line 51) | def on_cancel(self): method validate (line 55) | def validate(self): method validate_salary_structure (line 68) | def validate_salary_structure(self): method validate_recurring_additional_salary_overlap (line 105) | def validate_recurring_additional_salary_overlap(self): method validate_dates (line 136) | def validate_dates(self): method validate_employee_referral (line 160) | def validate_employee_referral(self): method validate_duplicate_additional_salary (line 184) | def validate_duplicate_additional_salary(self): method validate_tax_component_overwrite (line 223) | def validate_tax_component_overwrite(self): method validate_accrual_component (line 247) | def validate_accrual_component(self): method update_return_amount_in_employee_advance (line 257) | def update_return_amount_in_employee_advance(self): method update_employee_referral (line 270) | def update_employee_referral(self, cancel=False): method get_amount (line 275) | def get_amount(self, sal_start_date, sal_end_date): method before_update_after_submit (line 287) | def before_update_after_submit(self): function get_additional_salaries (line 292) | def get_additional_salaries(employee, start_date, end_date, component_ty... FILE: hrms/payroll/doctype/additional_salary/test_additional_salary.py class TestAdditionalSalary (line 19) | class TestAdditionalSalary(HRMSTestSuite): method test_recurring_additional_salary (line 20) | def test_recurring_additional_salary(self): method test_disabled_recurring_additional_salary (line 44) | def test_disabled_recurring_additional_salary(self): method test_non_recurring_additional_salary (line 68) | def test_non_recurring_additional_salary(self): method test_overwrite_salary_structure_amount (line 112) | def test_overwrite_salary_structure_amount(self): method test_overwrite_tax_component (line 133) | def test_overwrite_tax_component(self): method test_validate_duplicate_or_overlapping_additional_salary (line 165) | def test_validate_duplicate_or_overlapping_additional_salary(self): function get_additional_salary (line 190) | def get_additional_salary( FILE: hrms/payroll/doctype/arrear/arrear.js method setup (line 5) | setup(frm) { FILE: hrms/payroll/doctype/arrear/arrear.py class Arrear (line 16) | class Arrear(Document): method payroll_period_details (line 44) | def payroll_period_details(self): method validate (line 49) | def validate(self): method on_submit (line 55) | def on_submit(self): method on_cancel (line 60) | def on_cancel(self): method validate_dates (line 63) | def validate_dates(self): method validate_salary_structure_assignment (line 78) | def validate_salary_structure_assignment(self): method validate_duplicate_doc (line 106) | def validate_duplicate_doc(self): method calculate_salary_structure_arrears (line 127) | def calculate_salary_structure_arrears(self): method get_existing_salary_slips (line 144) | def get_existing_salary_slips(self): method fetch_existing_salary_components (line 167) | def fetch_existing_salary_components(self, salary_slips: list): method fetch_existing_accrual_components (line 224) | def fetch_existing_accrual_components(self, salary_slips: list): method fetch_existing_payroll_corrections (line 251) | def fetch_existing_payroll_corrections(self, salary_slips: list): method generate_preview_components (line 297) | def generate_preview_components(self, salary_slips: list): method compute_component_differences (line 370) | def compute_component_differences(self, existing_components: dict, new... method populate_arrear_tables (line 415) | def populate_arrear_tables(self, component_differences: dict): method validate_arrear_details (line 430) | def validate_arrear_details(self): method create_additional_salary (line 435) | def create_additional_salary(self): method create_benefit_ledger_entry (line 457) | def create_benefit_ledger_entry(self): FILE: hrms/payroll/doctype/arrear/test_arrear.py class TestArrear (line 20) | class TestArrear(HRMSTestSuite): method test_arrear_calculation (line 21) | def test_arrear_calculation(self): FILE: hrms/payroll/doctype/bulk_salary_structure_assignment/bulk_salary_structure_assignment.js method setup (line 5) | setup(frm) { method refresh (line 10) | async refresh(frm) { method from_date (line 23) | from_date(frm) { method company (line 27) | async company(frm) { method branch (line 32) | branch(frm) { method department (line 36) | department(frm) { method employment_type (line 40) | employment_type(frm) { method designation (line 44) | designation(frm) { method grade (line 48) | grade(frm) { method set_primary_action (line 52) | set_primary_action(frm) { method set_queries (line 58) | set_queries(frm) { method set_payroll_payable_account (line 91) | set_payroll_payable_account(frm) { method get_employees (line 97) | get_employees(frm) { method render_employees_datatable (line 109) | render_employees_datatable(frm, employees) { method get_employees_datatable_columns (line 154) | get_employees_datatable_columns() { method render_update_button (line 194) | render_update_button(frm) { method handle_row_check (line 232) | handle_row_check(frm) { method assign_structure (line 241) | assign_structure(frm) { method validate_base_zero (line 268) | validate_base_zero(frm, employees_with_base_zero, checked_rows_content) { method show_confirm_dialog (line 281) | show_confirm_dialog(frm, checked_rows_content) { method bulk_assign_structure (line 290) | bulk_assign_structure(frm, employees) { FILE: hrms/payroll/doctype/bulk_salary_structure_assignment/bulk_salary_structure_assignment.py class BulkSalaryStructureAssignment (line 18) | class BulkSalaryStructureAssignment(Document): method get_employees (line 41) | def get_employees(self, advanced_filters: list) -> list: method bulk_assign_structure (line 85) | def bulk_assign_structure(self, employees: list) -> None: method _bulk_assign_structure (line 99) | def _bulk_assign_structure(self, employees: list) -> None: FILE: hrms/payroll/doctype/bulk_salary_structure_assignment/test_bulk_salary_structure_assignment.py class TestBulkSalaryStructureAssignment (line 17) | class TestBulkSalaryStructureAssignment(HRMSTestSuite): method setUp (line 18) | def setUp(self): method test_get_employees (line 34) | def test_get_employees(self): method test_bulk_assign_structure (line 63) | def test_bulk_assign_structure(self): FILE: hrms/payroll/doctype/employee_benefit_application/employee_benefit_application.py class EmployeeBenefitApplication (line 16) | class EmployeeBenefitApplication(Document): method validate (line 43) | def validate(self): method validate_max_benefit (line 51) | def validate_max_benefit(self): method validate_duplicate_on_payroll_period (line 75) | def validate_duplicate_on_payroll_period(self): method set_benefit_components_and_currency (line 88) | def set_benefit_components_and_currency(self) -> None: FILE: hrms/payroll/doctype/employee_benefit_application/test_employee_benefit_application.py class TestEmployeeBenefitApplication (line 8) | class TestEmployeeBenefitApplication(HRMSTestSuite): FILE: hrms/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.py class EmployeeBenefitApplicationDetail (line 9) | class EmployeeBenefitApplicationDetail(Document): FILE: hrms/payroll/doctype/employee_benefit_claim/employee_benefit_claim.py class EmployeeBenefitClaim (line 16) | class EmployeeBenefitClaim(Document): method validate (line 39) | def validate(self): method validate_date_and_benefit_claim_amount (line 43) | def validate_date_and_benefit_claim_amount(self): method validate_duplicate_claim (line 61) | def validate_duplicate_claim(self): method on_submit (line 81) | def on_submit(self): method get_existing_claim_for_month (line 84) | def get_existing_claim_for_month(self): method create_additional_salary (line 100) | def create_additional_salary(self): method get_benefit_details (line 117) | def get_benefit_details(self) -> None: method get_component_details (line 140) | def get_component_details(self, payroll_period, salary_structure_assig... method _get_current_month_benefit_amount (line 168) | def _get_current_month_benefit_amount(self, component_details: dict) -... method preview_salary_slip_and_fetch_current_month_benefit_amount (line 175) | def preview_salary_slip_and_fetch_current_month_benefit_amount(self): function get_benefit_components (line 191) | def get_benefit_components( function get_salary_structure_assignment (line 233) | def get_salary_structure_assignment(employee, date): FILE: hrms/payroll/doctype/employee_benefit_claim/test_employee_benefit_claim.py class TestEmployeeBenefitClaim (line 7) | class TestEmployeeBenefitClaim(HRMSTestSuite): FILE: hrms/payroll/doctype/employee_benefit_detail/employee_benefit_detail.py class EmployeeBenefitDetail (line 8) | class EmployeeBenefitDetail(Document): FILE: hrms/payroll/doctype/employee_benefit_ledger/employee_benefit_ledger.py class EmployeeBenefitLedger (line 10) | class EmployeeBenefitLedger(Document): method validate (line 35) | def validate(self): function create_employee_benefit_ledger_entry (line 45) | def create_employee_benefit_ledger_entry(ref_doc, args=None, delete=False): function delete_employee_benefit_ledger_entry (line 100) | def delete_employee_benefit_ledger_entry(ref_field, ref_value): function get_max_claim_eligible (line 108) | def get_max_claim_eligible(employee, payroll_period, benefit_component, ... function get_benefit_amount (line 133) | def get_benefit_amount(employee, payroll_period, salary_component): FILE: hrms/payroll/doctype/employee_cost_center/employee_cost_center.py class EmployeeCostCenter (line 8) | class EmployeeCostCenter(Document): FILE: hrms/payroll/doctype/employee_incentive/employee_incentive.py class EmployeeIncentive (line 12) | class EmployeeIncentive(Document): method validate (line 32) | def validate(self): method validate_salary_structure (line 36) | def validate_salary_structure(self): method on_submit (line 44) | def on_submit(self): FILE: hrms/payroll/doctype/employee_incentive/test_employee_incentive.py class TestEmployeeIncentive (line 7) | class TestEmployeeIncentive(HRMSTestSuite): FILE: hrms/payroll/doctype/employee_other_income/employee_other_income.py class EmployeeOtherIncome (line 9) | class EmployeeOtherIncome(Document): FILE: hrms/payroll/doctype/employee_other_income/test_employee_other_income.py class TestEmployeeOtherIncome (line 8) | class TestEmployeeOtherIncome(HRMSTestSuite): FILE: hrms/payroll/doctype/employee_tax_exemption_category/employee_tax_exemption_category.py class EmployeeTaxExemptionCategory (line 8) | class EmployeeTaxExemptionCategory(Document): FILE: hrms/payroll/doctype/employee_tax_exemption_category/test_employee_tax_exemption_category.py class TestEmployeeTaxExemptionCategory (line 7) | class TestEmployeeTaxExemptionCategory(HRMSTestSuite): FILE: hrms/payroll/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.py class EmployeeTaxExemptionDeclaration (line 19) | class EmployeeTaxExemptionDeclaration(Document): method validate (line 44) | def validate(self): method set_total_declared_amount (line 54) | def set_total_declared_amount(self): method set_total_exemption_amount (line 59) | def set_total_exemption_amount(self): method calculate_hra_exemption (line 64) | def calculate_hra_exemption(self): function make_proof_submission (line 85) | def make_proof_submission(source_name: str, target_doc: str | Document |... FILE: hrms/payroll/doctype/employee_tax_exemption_declaration/test_employee_tax_exemption_declaration.py class TestEmployeeTaxExemptionDeclaration (line 18) | class TestEmployeeTaxExemptionDeclaration(HRMSTestSuite): method setUp (line 19) | def setUp(self): method test_duplicate_category_in_declaration (line 35) | def test_duplicate_category_in_declaration(self): method test_duplicate_entry_for_payroll_period (line 59) | def test_duplicate_entry_for_payroll_period(self): method test_exemption_amount (line 104) | def test_exemption_amount(self): method test_india_hra_exemption (line 129) | def test_india_hra_exemption(self): method test_india_hra_exemption_with_daily_payroll_frequency (line 172) | def test_india_hra_exemption_with_daily_payroll_frequency(self): method test_india_hra_exemption_with_weekly_payroll_frequency (line 209) | def test_india_hra_exemption_with_weekly_payroll_frequency(self): method test_india_hra_exemption_with_fortnightly_payroll_frequency (line 246) | def test_india_hra_exemption_with_fortnightly_payroll_frequency(self): method test_india_hra_exemption_with_bimonthly_payroll_frequency (line 283) | def test_india_hra_exemption_with_bimonthly_payroll_frequency(self): method test_india_hra_exemption_with_multiple_assignments (line 325) | def test_india_hra_exemption_with_multiple_assignments(self): function create_payroll_period (line 425) | def create_payroll_period(**args): function create_exemption_category (line 443) | def create_exemption_category(): function setup_hra_exemption_prerequisites (line 475) | def setup_hra_exemption_prerequisites(frequency, employee=None, from_dat... FILE: hrms/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.py class EmployeeTaxExemptionDeclarationCategory (line 9) | class EmployeeTaxExemptionDeclarationCategory(Document): FILE: hrms/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.py class EmployeeTaxExemptionProofSubmission (line 17) | class EmployeeTaxExemptionProofSubmission(Document): method validate (line 44) | def validate(self): method set_total_actual_amount (line 54) | def set_total_actual_amount(self): method set_total_exemption_amount (line 59) | def set_total_exemption_amount(self): method calculate_hra_exemption (line 64) | def calculate_hra_exemption(self): FILE: hrms/payroll/doctype/employee_tax_exemption_proof_submission/test_employee_tax_exemption_proof_submission.py class TestEmployeeTaxExemptionProofSubmission (line 19) | class TestEmployeeTaxExemptionProofSubmission(HRMSTestSuite): method setUp (line 20) | def setUp(self): method test_exemption_amount_lesser_than_category_max (line 34) | def test_exemption_amount_lesser_than_category_max(self): method test_duplicate_category_in_proof_submission (line 69) | def test_duplicate_category_in_proof_submission(self): method test_india_hra_exemption (line 92) | def test_india_hra_exemption(self): FILE: hrms/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.py class EmployeeTaxExemptionProofSubmissionDetail (line 9) | class EmployeeTaxExemptionProofSubmissionDetail(Document): FILE: hrms/payroll/doctype/employee_tax_exemption_sub_category/employee_tax_exemption_sub_category.py class EmployeeTaxExemptionSubCategory (line 11) | class EmployeeTaxExemptionSubCategory(Document): method validate (line 25) | def validate(self): FILE: hrms/payroll/doctype/employee_tax_exemption_sub_category/test_employee_tax_exemption_sub_category.py class TestEmployeeTaxExemptionSubCategory (line 7) | class TestEmployeeTaxExemptionSubCategory(HRMSTestSuite): FILE: hrms/payroll/doctype/gratuity/gratuity.py class Gratuity (line 13) | class Gratuity(AccountsController): method validate (line 43) | def validate(self): method gratuity_settings (line 50) | def gratuity_settings(self): method set_status (line 66) | def set_status(self, update=False): method on_submit (line 81) | def on_submit(self): method on_cancel (line 87) | def on_cancel(self): method create_gl_entries (line 92) | def create_gl_entries(self, cancel=False): method get_gl_entries (line 96) | def get_gl_entries(self): method create_additional_salary (line 135) | def create_additional_salary(self): method set_total_advance_paid (line 148) | def set_total_advance_paid(self): method calculate_work_experience_and_amount (line 168) | def calculate_work_experience_and_amount(self) -> dict: method get_work_experience (line 178) | def get_work_experience(self) -> float: method get_total_working_days (line 196) | def get_total_working_days(self) -> float: method get_non_working_days (line 219) | def get_non_working_days(self, relieving_date: str, status: str) -> fl... method get_gratuity_amount (line 234) | def get_gratuity_amount(self, experience: float) -> float: method get_total_component_amount (line 290) | def get_total_component_amount(self) -> float: method get_applicable_components (line 312) | def get_applicable_components(self) -> list[str]: method get_gratuity_rule_slabs (line 325) | def get_gratuity_rule_slabs(self) -> list[dict]: method _is_experience_within_slab (line 333) | def _is_experience_within_slab(self, slab: dict, experience: float) ->... method _is_experience_beyond_slab (line 336) | def _is_experience_beyond_slab(self, slab: dict, experience: float) ->... method on_discard (line 339) | def on_discard(self): function get_last_salary_slip (line 343) | def get_last_salary_slip(employee: str) -> dict | None: FILE: hrms/payroll/doctype/gratuity/gratuity_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/payroll/doctype/gratuity/test_gratuity.py class TestGratuity (line 22) | class TestGratuity(HRMSTestSuite): method setUp (line 23) | def setUp(self): method test_gratuity_based_on_current_slab_via_additional_salary (line 41) | def test_gratuity_based_on_current_slab_via_additional_salary(self): method test_gratuity_based_on_all_previous_slabs_via_payment_entry (line 86) | def test_gratuity_based_on_all_previous_slabs_via_payment_entry(self): method test_gratuity_amount_consistent_irrespective_of_payment_days (line 174) | def test_gratuity_amount_consistent_irrespective_of_payment_days(self): method test_settle_gratuity_via_fnf_statement (line 195) | def test_settle_gratuity_via_fnf_statement(self): method test_status_on_discard (line 243) | def test_status_on_discard(self): function setup_gratuity_rule (line 259) | def setup_gratuity_rule(name: str) -> dict: function create_gratuity (line 273) | def create_gratuity(do_not_submit=False, **args): function set_mode_of_payment_account (line 298) | def set_mode_of_payment_account(): function create_account (line 309) | def create_account(): function create_salary_slip (line 324) | def create_salary_slip(employee, posting_date=None): FILE: hrms/payroll/doctype/gratuity_applicable_component/gratuity_applicable_component.py class GratuityApplicableComponent (line 9) | class GratuityApplicableComponent(Document): FILE: hrms/payroll/doctype/gratuity_rule/gratuity_rule.js method gratuity_rule_slabs_add (line 23) | gratuity_rule_slabs_add(frm, cdt, cdn) { method to_year (line 32) | to_year(frm, cdt, cdn) { FILE: hrms/payroll/doctype/gratuity_rule/gratuity_rule.py class GratuityRule (line 10) | class GratuityRule(Document): method validate (line 35) | def validate(self): function get_gratuity_rule (line 52) | def get_gratuity_rule(name, slabs, **args): FILE: hrms/payroll/doctype/gratuity_rule/gratuity_rule_dashboard.py function get_data (line 4) | def get_data(): FILE: hrms/payroll/doctype/gratuity_rule/test_gratuity_rule.py class TestGratuityRule (line 8) | class TestGratuityRule(HRMSTestSuite): FILE: hrms/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.py class GratuityRuleSlab (line 9) | class GratuityRuleSlab(Document): FILE: hrms/payroll/doctype/income_tax_slab/income_tax_slab.py class IncomeTaxSlab (line 11) | class IncomeTaxSlab(Document): method validate (line 37) | def validate(self): FILE: hrms/payroll/doctype/income_tax_slab/test_income_tax_slab.py class TestIncomeTaxSlab (line 8) | class TestIncomeTaxSlab(HRMSTestSuite): FILE: hrms/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.py class IncomeTaxSlabOtherCharges (line 9) | class IncomeTaxSlabOtherCharges(Document): FILE: hrms/payroll/doctype/payroll_correction/payroll_correction.js method refresh (line 6) | refresh(frm) { method employee (line 9) | employee(frm) { method payroll_period (line 12) | payroll_period(frm) { method load_lwp_months (line 16) | load_lwp_months(frm) { method month_for_lwp_reversal (line 47) | month_for_lwp_reversal(frm) { FILE: hrms/payroll/doctype/payroll_correction/payroll_correction.py class PayrollCorrection (line 16) | class PayrollCorrection(Document): method validate (line 47) | def validate(self): method on_submit (line 53) | def on_submit(self): method validate_days (line 58) | def validate_days(self): method on_cancel (line 83) | def on_cancel(self): method fetch_salary_slip_details (line 87) | def fetch_salary_slip_details(self) -> dict[str, list] | None: method populate_breakup_table (line 141) | def populate_breakup_table(self): method validate_arrear_details (line 214) | def validate_arrear_details(self): method create_additional_salary (line 219) | def create_additional_salary(self): method create_benefit_ledger_entry (line 238) | def create_benefit_ledger_entry(self): FILE: hrms/payroll/doctype/payroll_correction/test_payroll_correction.py class TestPayrollCorrection (line 17) | class TestPayrollCorrection(HRMSTestSuite): method test_payroll_correction (line 18) | def test_payroll_correction(self): FILE: hrms/payroll/doctype/payroll_correction_child/payroll_correction_child.py class PayrollCorrectionChild (line 8) | class PayrollCorrectionChild(Document): FILE: hrms/payroll/doctype/payroll_employee_detail/payroll_employee_detail.py class PayrollEmployeeDetail (line 8) | class PayrollEmployeeDetail(Document): FILE: hrms/payroll/doctype/payroll_entry/payroll_entry.py class PayrollEntry (line 36) | class PayrollEntry(Document): method onload (line 76) | def onload(self): method validate (line 95) | def validate(self): method set_status (line 99) | def set_status(self, status=None, update=False): method before_submit (line 108) | def before_submit(self): method on_submit (line 114) | def on_submit(self): method validate_existing_salary_slips (line 118) | def validate_existing_salary_slips(self): method validate_payroll_payable_account (line 149) | def validate_payroll_payable_account(self): method on_cancel (line 163) | def on_cancel(self): method on_discard (line 176) | def on_discard(self): method cancel (line 179) | def cancel(self): method delete_linked_salary_slips (line 195) | def delete_linked_salary_slips(self): method cancel_linked_journal_entries (line 204) | def cancel_linked_journal_entries(self): method cancel_linked_payment_ledger_entries (line 225) | def cancel_linked_payment_ledger_entries(self): method get_linked_salary_slips (line 236) | def get_linked_salary_slips(self): method make_filters (line 239) | def make_filters(self): method fill_employee_details (line 259) | def fill_employee_details(self) -> list[dict] | None: method update_employees_with_withheld_salaries (line 290) | def update_employees_with_withheld_salaries(self): method create_salary_slips (line 298) | def create_salary_slips(self) -> None: method get_sal_slip_list (line 339) | def get_sal_slip_list(self, ss_status, as_dict=False): method submit_salary_slips (line 361) | def submit_salary_slips(self) -> None: method email_salary_slip (line 382) | def email_salary_slip(self, submitted_ss): method get_salary_component_account (line 387) | def get_salary_component_account(self, salary_component): method get_salary_components (line 404) | def get_salary_components(self, component_type): method get_salary_component_total (line 434) | def get_salary_component_total( method get_advance_deduction (line 469) | def get_advance_deduction(self, component_type: str, item: dict) -> st... method add_advance_deduction_entry (line 481) | def add_advance_deduction_entry( method set_accounting_entries_for_advance_deductions (line 499) | def set_accounting_entries_for_advance_deductions( method set_employee_based_payroll_payable_entries (line 528) | def set_employee_based_payroll_payable_entries( method get_payroll_cost_centers_for_employee (line 539) | def get_payroll_cost_centers_for_employee(self, employee, salary_struc... method get_account (line 585) | def get_account(self, component_dict=None): method make_accrual_jv_entry (line 596) | def make_accrual_jv_entry(self, submitted_salary_slips): method make_journal_entry (line 675) | def make_journal_entry( method get_payable_amount_for_earnings_and_deductions (line 721) | def get_payable_amount_for_earnings_and_deductions( method set_payable_amount_against_payroll_payable_account (line 765) | def set_payable_amount_against_payroll_payable_account( method get_accounting_entries_and_payable_amount (line 822) | def get_accounting_entries_and_payable_amount( method update_accounting_dimensions (line 900) | def update_accounting_dimensions(self, row, accounting_dimensions): method get_amount_and_exchange_rate_for_journal_entry (line 906) | def get_amount_and_exchange_rate_for_journal_entry(self, account, amou... method has_bank_entries (line 926) | def has_bank_entries(self) -> dict[str, bool]: method make_bank_entry (line 950) | def make_bank_entry(self, for_withheld_salaries: bool = False) -> Docu... method get_salary_slip_details (line 995) | def get_salary_slip_details(self, for_withheld_salaries=False): method process_loan_repayments_for_bank_entry (line 1037) | def process_loan_repayments_for_bank_entry(self, salary_details: list[... method set_accounting_entries_for_bank_entry (line 1053) | def set_accounting_entries_for_bank_entry( method set_journal_entry_in_salary_slips (line 1146) | def set_journal_entry_in_salary_slips(self, submitted_salary_slips, jv... method set_start_end_dates (line 1154) | def set_start_end_dates(self): method get_employees_with_unmarked_attendance (line 1160) | def get_employees_with_unmarked_attendance(self) -> list[dict] | None: method get_employee_and_attendance_details (line 1193) | def get_employee_and_attendance_details(self) -> list[dict]: method get_payroll_dates_for_employee (line 1229) | def get_payroll_dates_for_employee(self, employee_details: dict) -> tu... method get_holidays_count (line 1240) | def get_holidays_count(self, holiday_list: str, start_date: str, end_d... method create_overtime_slips (line 1261) | def create_overtime_slips(self) -> None: method submit_overtime_slips (line 1298) | def submit_overtime_slips(self) -> None: method get_unsubmitted_overtime_slips (line 1322) | def get_unsubmitted_overtime_slips(self, limit: int | None = None) -> ... method get_overtime_slip_details (line 1335) | def get_overtime_slip_details(self) -> list[bool]: function get_salary_structure (line 1350) | def get_salary_structure( function get_filtered_employees (line 1373) | def get_filtered_employees( function set_fields_to_select (line 1419) | def set_fields_to_select(query, fields: list[str] | None = None): function set_searchfield (line 1430) | def set_searchfield(query, searchfield, search_string, qb_object): function set_filter_conditions (line 1440) | def set_filter_conditions(query, filters, qb_object): function set_match_conditions (line 1452) | def set_match_conditions(query, qb_object): function remove_payrolled_employees (line 1466) | def remove_payrolled_employees(emp_list, start_date, end_date): function get_start_end_dates (line 1483) | def get_start_end_dates( function get_frequency_kwargs (line 1515) | def get_frequency_kwargs(frequency_name): function get_end_date (line 1526) | def get_end_date(start_date: str | datetime.date, frequency: str) -> dict: function get_month_details (line 1540) | def get_month_details(year, month): function log_payroll_failure (line 1568) | def log_payroll_failure(process, payroll_entry, error): function create_salary_slips_for_employees (line 1589) | def create_salary_slips_for_employees(employees, args, publish_progress=... function show_payroll_submission_status (line 1630) | def show_payroll_submission_status(submitted, unsubmitted, payroll_entry): function get_existing_salary_slips (line 1655) | def get_existing_salary_slips(employees, args): function submit_salary_slips_for_employees (line 1673) | def submit_salary_slips_for_employees(payroll_entry, salary_slips, publi... function get_payroll_entries_for_jv (line 1719) | def get_payroll_entries_for_jv( function get_employee_list (line 1735) | def get_employee_list( function employee_query (line 1777) | def employee_query( function get_salary_withholdings (line 1798) | def get_salary_withholdings( FILE: hrms/payroll/doctype/payroll_entry/payroll_entry_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/payroll/doctype/payroll_entry/test_payroll_entry.py class TestPayrollEntry (line 43) | class TestPayrollEntry(HRMSTestSuite): method setUp (line 44) | def setUp(self): method test_payroll_entry (line 71) | def test_payroll_entry(self): method test_multi_currency_payroll_entry (line 86) | def test_multi_currency_payroll_entry(self): method test_payroll_entry_with_employee_cost_center (line 136) | def test_payroll_entry_with_employee_cost_center(self): method test_employee_cost_center_breakup (line 183) | def test_employee_cost_center_breakup(self): method test_get_end_date (line 233) | def test_get_end_date(self): method test_loan_with_settings_enabled (line 247) | def test_loan_with_settings_enabled(self): method test_loan_with_settings_disabled (line 295) | def test_loan_with_settings_disabled(self): method test_salary_slip_operation_queueing (line 326) | def test_salary_slip_operation_queueing(self): method test_salary_slip_operation_failure (line 350) | def test_salary_slip_operation_failure(self): method test_payroll_entry_cancellation (line 410) | def test_payroll_entry_cancellation(self): method test_payroll_entry_status (line 447) | def test_payroll_entry_status(self): method test_payroll_entry_cancellation_against_cancelled_journal_entry (line 467) | def test_payroll_entry_cancellation_against_cancelled_journal_entry(se... method test_payroll_accrual_journal_entry_with_employee_tagging (line 505) | def test_payroll_accrual_journal_entry_with_employee_tagging(self): method test_payroll_accrual_journal_entry_without_employee_tagging (line 538) | def test_payroll_accrual_journal_entry_without_employee_tagging(self): method test_advance_deduction_in_accrual_journal_entry (line 569) | def test_advance_deduction_in_accrual_journal_entry(self): method test_employee_wise_bank_entry_with_cost_centers (line 629) | def test_employee_wise_bank_entry_with_cost_centers(self): method test_validate_attendance (line 695) | def test_validate_attendance(self): method test_skip_bank_entry_for_employees_with_zero_amount (line 744) | def test_skip_bank_entry_for_employees_with_zero_amount(self): method test_loan_repayment_from_salary (line 774) | def test_loan_repayment_from_salary(self): method test_loan_repayment_from_salary_with_employee_tagging (line 781) | def test_loan_repayment_from_salary_with_employee_tagging(self): method run_test_for_loan_repayment_from_salary (line 784) | def run_test_for_loan_repayment_from_salary(self): method test_component_exclusion_from_accounting_entries (line 845) | def test_component_exclusion_from_accounting_entries(self): method test_employee_benefits_accruals_in_salary_slip (line 908) | def test_employee_benefits_accruals_in_salary_slip(self): method test_status_on_discard (line 1056) | def test_status_on_discard(self): function get_payroll_entry (line 1075) | def get_payroll_entry(**args): function make_payroll_entry (line 1103) | def make_payroll_entry(**args): function get_payment_account (line 1113) | def get_payment_account(): function setup_salary_structure (line 1121) | def setup_salary_structure(employee, company_doc, currency=None, salary_... function create_assignments_with_cost_centers (line 1137) | def create_assignments_with_cost_centers(employee1, employee2): function setup_lending (line 1156) | def setup_lending(): function create_loan_for_employee (line 1214) | def create_loan_for_employee(applicant): function get_repayment_party_type (line 1235) | def get_repayment_party_type(loan): function submit_bank_entry (line 1253) | def submit_bank_entry(payroll_entry_id): function get_linked_journal_entries (line 1263) | def get_linked_journal_entries(payroll_entry_id, docstatus=None): FILE: hrms/payroll/doctype/payroll_period/payroll_period.py class PayrollPeriod (line 14) | class PayrollPeriod(Document): method validate (line 31) | def validate(self): method clear_cache (line 35) | def clear_cache(self): method validate_overlap (line 39) | def validate_overlap(self): function get_payroll_period_days (line 74) | def get_payroll_period_days(start_date, end_date, employee, company=None): function get_payroll_period (line 102) | def get_payroll_period(from_date, to_date, company): function get_period_factor (line 118) | def get_period_factor( FILE: hrms/payroll/doctype/payroll_period/payroll_period_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/payroll/doctype/payroll_period/test_payroll_period.py class TestPayrollPeriod (line 7) | class TestPayrollPeriod(HRMSTestSuite): FILE: hrms/payroll/doctype/payroll_period_date/payroll_period_date.py class PayrollPeriodDate (line 9) | class PayrollPeriodDate(Document): FILE: hrms/payroll/doctype/payroll_settings/payroll_settings.py class PayrollSettings (line 12) | class PayrollSettings(Document): method validate (line 41) | def validate(self): method validate_password_policy (line 47) | def validate_password_policy(self): method on_update (line 52) | def on_update(self): method toggle_rounded_total (line 56) | def toggle_rounded_total(self): FILE: hrms/payroll/doctype/payroll_settings/test_payroll_settings.py class TestPayrollSettings (line 8) | class TestPayrollSettings(HRMSTestSuite): FILE: hrms/payroll/doctype/retention_bonus/retention_bonus.py class RetentionBonus (line 13) | class RetentionBonus(Document): method validate (line 34) | def validate(self): method on_submit (line 39) | def on_submit(self): method on_cancel (line 63) | def on_cancel(self): method get_additional_salary (line 76) | def get_additional_salary(self): FILE: hrms/payroll/doctype/retention_bonus/test_retention_bonus.py class TestRetentionBonus (line 7) | class TestRetentionBonus(HRMSTestSuite): FILE: hrms/payroll/doctype/salary_component/salary_component.py class SalaryComponent (line 14) | class SalaryComponent(Document): method before_validate (line 61) | def before_validate(self): method validate (line 65) | def validate(self): method on_update (line 71) | def on_update(self): method clear_cache (line 78) | def clear_cache(self): method validate_abbr (line 88) | def validate_abbr(self): method validate_accounts (line 101) | def validate_accounts(self): method validate_accrual_component (line 109) | def validate_accrual_component(self): method valide_arrear_component (line 138) | def valide_arrear_component(self): method get_structures_to_be_updated (line 146) | def get_structures_to_be_updated(self) -> list[str]: method update_salary_structures (line 159) | def update_salary_structures( FILE: hrms/payroll/doctype/salary_component/test_salary_component.py class TestSalaryComponent (line 10) | class TestSalaryComponent(HRMSTestSuite): method test_update_salary_structures (line 11) | def test_update_salary_structures(self): function create_salary_component (line 60) | def create_salary_component(component_name, **args): FILE: hrms/payroll/doctype/salary_component_account/salary_component_account.py class SalaryComponentAccount (line 8) | class SalaryComponentAccount(Document): FILE: hrms/payroll/doctype/salary_detail/salary_detail.py class SalaryDetail (line 8) | class SalaryDetail(Document): FILE: hrms/payroll/doctype/salary_slip/salary_slip.py class SalarySlip (line 64) | class SalarySlip(TransactionBase): method __init__ (line 147) | def __init__(self, *args, **kwargs): method autoname (line 164) | def autoname(self): method has_custom_naming_series (line 169) | def has_custom_naming_series(self): method joining_date (line 182) | def joining_date(self): method relieving_date (line 193) | def relieving_date(self): method payroll_period (line 204) | def payroll_period(self): method actual_start_date (line 211) | def actual_start_date(self): method actual_end_date (line 221) | def actual_end_date(self): method validate (line 232) | def validate(self): method check_salary_withholding (line 271) | def check_salary_withholding(self): method set_net_total_in_words (line 279) | def set_net_total_in_words(self): method on_update (line 287) | def on_update(self): method on_submit (line 290) | def on_submit(self): method update_payment_status_for_gratuity_and_leave_encashment (line 309) | def update_payment_status_for_gratuity_and_leave_encashment(self): method create_benefits_ledger_entry (line 333) | def create_benefits_ledger_entry(self): method on_cancel (line 343) | def on_cancel(self): method publish_update (line 352) | def publish_update(self): method on_trash (line 361) | def on_trash(self): method get_status (line 369) | def get_status(self): method validate_dates (line 380) | def validate_dates(self): method is_rounding_total_disabled (line 394) | def is_rounding_total_disabled(self): method check_existing (line 397) | def check_existing(self): method get_date_details (line 430) | def get_date_details(self): method get_emp_and_working_day_details (line 437) | def get_emp_and_working_day_details(self) -> None: method set_time_sheet (line 464) | def set_time_sheet(self): method check_sal_struct (line 486) | def check_sal_struct(self): method pull_sal_struct (line 528) | def pull_sal_struct(self): method get_working_days_details (line 542) | def get_working_days_details(self, lwp=None, for_preview=0, lwp_days_c... method get_unmarked_days (line 634) | def get_unmarked_days( method get_half_absent_days (line 649) | def get_half_absent_days(self, consider_marked_attendance_on_holidays,... method _get_days_outside_period (line 667) | def _get_days_outside_period( method _get_number_of_holidays (line 695) | def _get_number_of_holidays(self, holidays: list | None = None) -> float: method _get_marked_attendance_days (line 706) | def _get_marked_attendance_days(self, holidays: list | None = None) ->... method get_payment_days (line 722) | def get_payment_days(self, include_holidays_in_total_working_days): method get_holidays_for_employee (line 744) | def get_holidays_for_employee(self, start_date, end_date): method calculate_lwp_or_ppl_based_on_leave_application (line 755) | def calculate_lwp_or_ppl_based_on_leave_application( method get_leave_type_map (line 795) | def get_leave_type_map(self) -> dict: method get_employee_attendance (line 808) | def get_employee_attendance(self, start_date, end_date): method calculate_lwp_ppl_and_absent_days_based_on_attendance (line 829) | def calculate_lwp_ppl_and_absent_days_based_on_attendance( method add_earning_for_hourly_wages (line 884) | def add_earning_for_hourly_wages(self, doc, salary_component, amount): method set_salary_structure_assignment (line 903) | def set_salary_structure_assignment(self): method calculate_net_pay (line 927) | def calculate_net_pay(self, skip_tax_breakup_computation: bool = False): method set_net_pay (line 961) | def set_net_pay(self): method compute_taxable_earnings_for_year (line 978) | def compute_taxable_earnings_for_year(self): method compute_current_and_future_taxable_earnings (line 1017) | def compute_current_and_future_taxable_earnings(self): method compute_income_tax_breakup (line 1051) | def compute_income_tax_breakup(self): method compute_ctc (line 1101) | def compute_ctc(self): method compute_non_taxable_earnings (line 1114) | def compute_non_taxable_earnings(self): method get_future_period_non_taxable_earnings (line 1136) | def get_future_period_non_taxable_earnings(self): method get_non_taxable_earnings_for_current_period (line 1149) | def get_non_taxable_earnings_for_current_period(self): method compute_annual_deductions_before_tax_calculation (line 1178) | def compute_annual_deductions_before_tax_calculation(self): method get_amount_from_formula (line 1209) | def get_amount_from_formula(self, struct_row, sub_period=1): method get_income_tax_deducted_till_date (line 1235) | def get_income_tax_deducted_till_date(self): method calculate_component_amounts (line 1244) | def calculate_component_amounts(self, component_type): method set_salary_structure_doc (line 1259) | def set_salary_structure_doc(self) -> None: method add_structure_components (line 1267) | def add_structure_components(self, component_type): method add_structure_component (line 1273) | def add_structure_component(self, struct_row, component_type): method get_data_for_eval (line 1342) | def get_data_for_eval(self): method get_component_abbr_map (line 1366) | def get_component_abbr_map(self): method eval_condition_and_formula (line 1375) | def eval_condition_and_formula(self, struct_row, data): method add_employee_benefits (line 1412) | def add_employee_benefits(self): method add_current_period_employee_benefits (line 1448) | def add_current_period_employee_benefits(self, employee_benefits: dict): method get_current_period_employee_benefit_amounts (line 1488) | def get_current_period_employee_benefit_amounts(self, employee_benefit... method _get_benefit_ledger_entries (line 1531) | def _get_benefit_ledger_entries(self, employee_benefits): method _get_benefit_amount_and_transaction_type (line 1550) | def _get_benefit_amount_and_transaction_type( method _get_final_period_benefit_payout (line 1566) | def _get_final_period_benefit_payout( method _get_claim_based_benefit_payout (line 1590) | def _get_claim_based_benefit_payout( method add_additional_salary_components (line 1623) | def add_additional_salary_components(self, component_type): method add_tax_components (line 1662) | def add_tax_components(self): method get_tax_components (line 1705) | def get_tax_components(self) -> list: method _fetch_tax_components_by_company (line 1719) | def _fetch_tax_components_by_company(self) -> dict: method handle_additional_salary_tax_component (line 1751) | def handle_additional_salary_tax_component(self) -> bool: method update_component_row (line 1776) | def update_component_row( method update_component_amount_based_on_payment_days (line 1869) | def update_component_amount_based_on_payment_days(self, component_row,... method set_precision_for_component_amounts (line 1876) | def set_precision_for_component_amounts(self): method calculate_variable_based_on_taxable_salary (line 1881) | def calculate_variable_based_on_taxable_salary(self, tax_component): method calculate_variable_tax (line 1892) | def calculate_variable_tax(self, tax_component, has_additional_salary_... method get_income_tax_slabs (line 1940) | def get_income_tax_slabs(self): method get_taxable_earnings_for_prev_period (line 1964) | def get_taxable_earnings_for_prev_period(self, start_date, end_date, a... method get_opening_for (line 1979) | def get_opening_for(self, field_to_select, start_date, end_date): method get_salary_slip_details (line 1984) | def get_salary_slip_details( method get_tax_paid_in_period (line 2029) | def get_tax_paid_in_period(self, start_date, end_date, tax_component): method get_taxable_earnings (line 2043) | def get_taxable_earnings(self, allow_tax_exemption=False, based_on_pay... method get_future_recurring_period (line 2096) | def get_future_recurring_period( method get_future_recurring_additional_amount (line 2123) | def get_future_recurring_additional_amount(self, additional_salary, mo... method get_amount_based_on_payment_days (line 2134) | def get_amount_based_on_payment_days(self, row): method get_total_exemption_amount (line 2182) | def get_total_exemption_amount(self): method get_income_form_other_sources (line 2209) | def get_income_form_other_sources(self): method get_component_totals (line 2224) | def get_component_totals(self, component_type, depends_on_payment_days... method email_salary_slip (line 2241) | def email_salary_slip(self): method update_status (line 2280) | def update_status(self, salary_slip=None): method set_status (line 2289) | def set_status(self, status=None): method process_salary_structure (line 2295) | def process_salary_structure(self, for_preview=0, lwp_days_corrected=N... method pull_emp_details (line 2303) | def pull_emp_details(self): method process_salary_based_on_working_days (line 2313) | def process_salary_based_on_working_days(self) -> None: method set_totals (line 2318) | def set_totals(self) -> None: method set_base_totals (line 2335) | def set_base_totals(self): method calculate_total_for_salary_slip_based_on_timesheet (line 2344) | def calculate_total_for_salary_slip_based_on_timesheet(self): method compute_year_to_date (line 2363) | def compute_year_to_date(self): method compute_month_to_date (line 2387) | def compute_month_to_date(self): method compute_component_wise_year_to_date (line 2407) | def compute_component_wise_year_to_date(self): method get_year_to_date_period (line 2435) | def get_year_to_date_period(self): method add_leave_balances (line 2447) | def add_leave_balances(self): method on_discard (line 2468) | def on_discard(self): function get_benefits_details_parent (line 2472) | def get_benefits_details_parent(employee, payroll_period, salary_structu... function unlink_ref_doc_from_salary_slip (line 2506) | def unlink_ref_doc_from_salary_slip(doc, method=None): function generate_password_for_pdf (line 2518) | def generate_password_for_pdf(policy_template, employee): function get_salary_component_data (line 2523) | def get_salary_component_data(component): function get_payroll_payable_account (line 2544) | def get_payroll_payable_account(company, payroll_entry): function calculate_tax_by_tax_slab (line 2557) | def calculate_tax_by_tax_slab(annual_taxable_earning, tax_slab, eval_glo... function eval_tax_slab_condition (line 2598) | def eval_tax_slab_condition(condition, eval_globals=None, eval_locals=No... function get_lwp_or_ppl_for_date_range (line 2627) | def get_lwp_or_ppl_for_date_range(employee, start_date, end_date): function make_salary_slip_from_timesheet (line 2669) | def make_salary_slip_from_timesheet(source_name: str, target_doc: str | ... function set_missing_values (line 2677) | def set_missing_values(time_sheet, target): function throw_error_message (line 2689) | def throw_error_message(row, error, title, description=None): function verify_lwp_days_corrected (line 2709) | def verify_lwp_days_corrected(employee, start_date, end_date, lwp_days_c... function on_doctype_update (line 2740) | def on_doctype_update(): function _safe_eval (line 2744) | def _safe_eval(code: str, eval_globals: dict | None = None, eval_locals:... function _check_attributes (line 2767) | def _check_attributes(code: str) -> None: function enqueue_email_salary_slips (line 2789) | def enqueue_email_salary_slips(names: list | str) -> None: function email_salary_slips (line 2804) | def email_salary_slips(names) -> None: FILE: hrms/payroll/doctype/salary_slip/salary_slip_loan_utils.py function if_lending_app_installed (line 13) | def if_lending_app_installed(function): function set_loan_repayment (line 25) | def set_loan_repayment(doc: "SalarySlip"): function _get_loan_details (line 74) | def _get_loan_details(doc: "SalarySlip") -> dict[str, Any]: function process_loan_interest_accrual_and_demand (line 90) | def process_loan_interest_accrual_and_demand(doc: "SalarySlip"): function make_loan_repayment_entry (line 120) | def make_loan_repayment_entry(doc: "SalarySlip"): function cancel_loan_repayment_entry (line 156) | def cancel_loan_repayment_entry(doc: "SalarySlip"): function get_payroll_payable_account (line 166) | def get_payroll_payable_account(company, payroll_entry): FILE: hrms/payroll/doctype/salary_slip/test_salary_slip.py class TestSalarySlip (line 52) | class TestSalarySlip(HRMSTestSuite): method setUp (line 53) | def setUp(self): method test_leave_details (line 62) | def test_leave_details(self): method test_employee_status_inactive (line 90) | def test_employee_status_inactive(self): method test_payment_days_based_on_attendance (line 118) | def test_payment_days_based_on_attendance(self): method test_payment_days_considering_half_days_unmarked_as_absent (line 187) | def test_payment_days_considering_half_days_unmarked_as_absent(self): method test_payment_days_considering_half_days_unmarked_as_present (line 251) | def test_payment_days_considering_half_days_unmarked_as_present(self): method test_payment_days_for_mid_joinee_including_holidays (line 316) | def test_payment_days_for_mid_joinee_including_holidays(self): method test_payment_days_for_mid_joinee_including_holidays_and_unmarked_days (line 383) | def test_payment_days_for_mid_joinee_including_holidays_and_unmarked_d... method test_payment_days_for_mid_joinee_excluding_holidays (line 423) | def test_payment_days_for_mid_joinee_excluding_holidays(self): method test_payment_days_based_on_leave_application (line 458) | def test_payment_days_based_on_leave_application(self): method test_payment_days_calculation_for_lwp_on_month_boundaries (line 509) | def test_payment_days_calculation_for_lwp_on_month_boundaries(self): method test_payment_days_in_salary_slip_based_on_timesheet (line 538) | def test_payment_days_in_salary_slip_based_on_timesheet(self): method test_component_amount_dependent_on_another_payment_days_based_component (line 582) | def test_component_amount_dependent_on_another_payment_days_based_comp... method test_salary_slip_with_holidays_included (line 629) | def test_salary_slip_with_holidays_included(self): method test_salary_slip_with_holidays_excluded (line 651) | def test_salary_slip_with_holidays_excluded(self): method test_consider_marked_attendance_on_holidays (line 682) | def test_consider_marked_attendance_on_holidays(self): method test_consider_marked_attendance_on_holidays_with_unmarked_attendance (line 719) | def test_consider_marked_attendance_on_holidays_with_unmarked_attendan... method test_consider_marked_attendance_on_holidays_with_half_day_on_holiday (line 772) | def test_consider_marked_attendance_on_holidays_with_half_day_on_holid... method test_payment_days (line 820) | def test_payment_days(self): method test_employee_salary_slip_read_permission (line 884) | def test_employee_salary_slip_read_permission(self): method test_email_salary_slip (line 898) | def test_email_salary_slip(self): method test_email_salary_slip_with_email_template (line 912) | def test_email_salary_slip_with_email_template(self): method test_payroll_frequency (line 923) | def test_payroll_frequency(self): method test_multi_currency_salary_slip (line 949) | def test_multi_currency_salary_slip(self): method test_year_to_date_computation (line 968) | def test_year_to_date_computation(self): method test_component_wise_year_to_date_computation (line 1011) | def test_component_wise_year_to_date_computation(self): method test_tax_for_payroll_period (line 1060) | def test_tax_for_payroll_period(self): method test_default_amount (line 1157) | def test_default_amount(self): method test_tax_for_recurring_additional_salary (line 1187) | def test_tax_for_recurring_additional_salary(self): method test_salary_slip_from_timesheet (line 1248) | def test_salary_slip_from_timesheet(self): method test_do_not_show_statistical_component_in_slip (line 1271) | def test_do_not_show_statistical_component_in_slip(self): method test_statistical_component_based_on_payment_days (line 1285) | def test_statistical_component_based_on_payment_days(self): method make_activity_for_employee (line 1319) | def make_activity_for_employee(self): method test_salary_slip_generation_against_opening_entries_in_ssa (line 1326) | def test_salary_slip_generation_against_opening_entries_in_ssa(self): method test_income_tax_breakup_fields (line 1423) | def test_income_tax_breakup_fields(self): method test_income_tax_breakup_when_tax_added_via_additional_salary (line 1478) | def test_income_tax_breakup_when_tax_added_via_additional_salary(self): method test_consistent_future_earnings_irrespective_of_payment_days (line 1536) | def test_consistent_future_earnings_irrespective_of_payment_days(self): method test_tax_period_for_mid_month_payroll_period (line 1558) | def test_tax_period_for_mid_month_payroll_period(self): method test_lwp_calculation_based_on_relieving_date (line 1583) | def test_lwp_calculation_based_on_relieving_date(self): method test_zero_value_component (line 1611) | def test_zero_value_component(self): method test_component_default_amount_against_statistical_component (line 1646) | def test_component_default_amount_against_statistical_component(self): method test_variable_tax_component (line 1682) | def test_variable_tax_component(self): method test_opening_balances_excluded_from_tax_calculation (line 1741) | def test_opening_balances_excluded_from_tax_calculation(self): method test_tax_payable_with_tax_relief_and_marginal_relief_limits (line 1796) | def test_tax_payable_with_tax_relief_and_marginal_relief_limits(self): method test_status_on_discard (line 1842) | def test_status_on_discard(self): method test_salary_component_for_payment_days_zero (line 1849) | def test_salary_component_for_payment_days_zero(self): method test_salary_component_for_additional_salary_zero (line 1916) | def test_salary_component_for_additional_salary_zero(self): class TestSalarySlipSafeEval (line 1972) | class TestSalarySlipSafeEval(HRMSTestSuite): method test_safe_eval_for_salary_slip (line 1973) | def test_safe_eval_for_salary_slip(self): function make_income_tax_components (line 2005) | def make_income_tax_components(): function get_no_of_days (line 2027) | def get_no_of_days(): function make_employee_salary_slip (line 2036) | def make_employee_salary_slip( function make_salary_component (line 2074) | def make_salary_component(salary_components, test_tax, company_list=None): function set_salary_component_account (line 2099) | def set_salary_component_account(sal_comp, company_list=None): function create_account (line 2128) | def create_account(account_name, company, parent_account, account_type=N... function make_earning_salary_component (line 2143) | def make_earning_salary_component( function make_deduction_salary_component (line 2245) | def make_deduction_salary_component( function make_employee_benefit_earning_components (line 2288) | def make_employee_benefit_earning_components( function get_tax_paid_in_period (line 2349) | def get_tax_paid_in_period(employee): function create_exemption_declaration (line 2359) | def create_exemption_declaration(employee, payroll_period): function create_proof_submission (line 2381) | def create_proof_submission(employee, payroll_period, amount): function create_tax_slab (line 2405) | def create_tax_slab( function create_salary_slips_for_payroll_period (line 2462) | def create_salary_slips_for_payroll_period( function create_additional_salary (line 2494) | def create_additional_salary(employee, payroll_period, amount, company): function make_leave_application (line 2511) | def make_leave_application( function make_payroll_period (line 2542) | def make_payroll_period(company=None): function make_holiday_list (line 2562) | def make_holiday_list( function make_salary_structure_for_payment_days_based_component_dependency (line 2592) | def make_salary_structure_for_payment_days_based_component_dependency(te... function make_salary_slip_for_payment_days_dependency_test (line 2682) | def make_salary_slip_for_payment_days_dependency_test(employee, salary_s... function create_recurring_additional_salary (line 2701) | def create_recurring_additional_salary(employee, salary_component, amoun... function make_salary_structure_for_timesheet (line 2718) | def make_salary_structure_for_timesheet(employee, company=None): function create_employee_other_income (line 2746) | def create_employee_other_income(employee, payroll_period, company): function create_additional_salary_for_non_taxable_component (line 2775) | def create_additional_salary_for_non_taxable_component(employee, payroll... function create_additional_salary_for_income_tax (line 2802) | def create_additional_salary_for_income_tax(employee, payroll_period, co... function make_salary_structure_for_statistical_component (line 2828) | def make_salary_structure_for_statistical_component(company): function make_salary_slip_with_non_taxable_component (line 2898) | def make_salary_slip_with_non_taxable_component() -> SalarySlip: function mark_attendance (line 2987) | def mark_attendance( function create_ss_email_template (line 3017) | def create_ss_email_template(): function clear_cache (line 3031) | def clear_cache(): FILE: hrms/payroll/doctype/salary_slip_leave/salary_slip_leave.py class SalarySlipLeave (line 9) | class SalarySlipLeave(Document): FILE: hrms/payroll/doctype/salary_slip_loan/salary_slip_loan.py class SalarySlipLoan (line 9) | class SalarySlipLoan(Document): FILE: hrms/payroll/doctype/salary_slip_timesheet/salary_slip_timesheet.py class SalarySlipTimesheet (line 9) | class SalarySlipTimesheet(Document): FILE: hrms/payroll/doctype/salary_structure/salary_structure.py class SalaryStructure (line 18) | class SalaryStructure(Document): method before_validate (line 52) | def before_validate(self): method before_update_after_submit (line 55) | def before_update_after_submit(self): method validate (line 58) | def validate(self): method on_update (line 67) | def on_update(self): method on_update_after_submit (line 70) | def on_update_after_submit(self): method validate_formula_setup (line 73) | def validate_formula_setup(self): method set_missing_values (line 90) | def set_missing_values(self): method validate_component_based_on_tax_slab (line 116) | def validate_component_based_on_tax_slab(self): method validate_amount (line 125) | def validate_amount(self): method validate_payment_days_based_dependent_component (line 129) | def validate_payment_days_based_dependent_component(self): method get_component_abbreviations (line 150) | def get_component_abbreviations(self): method validate_timesheet_component (line 156) | def validate_timesheet_component(self): method sanitize_condition_and_formula_fields (line 171) | def sanitize_condition_and_formula_fields(self): method reset_condition_and_formula_fields (line 179) | def reset_condition_and_formula_fields(self): method get_employees (line 188) | def get_employees(self, **kwargs): method assign_salary_structure (line 206) | def assign_salary_structure( function assign_salary_structure_for_employees (line 255) | def assign_salary_structure_for_employees( function create_salary_structure_assignment (line 304) | def create_salary_structure_assignment( function get_existing_assignments (line 348) | def get_existing_assignments(employees, salary_structure, from_date): function make_salary_slip (line 368) | def make_salary_slip( function get_employees (line 417) | def get_employees(salary_structure: str) -> list[str]: function get_salary_component (line 435) | def get_salary_component( function validate_max_benefit_for_flexible_benefit (line 466) | def validate_max_benefit_for_flexible_benefit(employee_benefits, max_ben... FILE: hrms/payroll/doctype/salary_structure/salary_structure_dashboard.py function get_data (line 1) | def get_data(): FILE: hrms/payroll/doctype/salary_structure/test_salary_structure.py class TestSalaryStructure (line 26) | class TestSalaryStructure(HRMSTestSuite): method test_salary_structure_deduction_based_on_gross_pay (line 27) | def test_salary_structure_deduction_based_on_gross_pay(self): method test_amount_totals (line 51) | def test_amount_totals(self): method test_whitespaces_in_formula_conditions_fields (line 66) | def test_whitespaces_in_formula_conditions_fields(self): method test_salary_structures_assignment (line 87) | def test_salary_structures_assignment(self): method test_employee_grade_defaults (line 110) | def test_employee_grade_defaults(self): method test_multi_currency_salary_structure (line 127) | def test_multi_currency_salary_structure(self): function make_salary_structure (line 135) | def make_salary_structure( function create_salary_structure_assignment (line 221) | def create_salary_structure_assignment( function get_payable_account (line 277) | def get_payable_account(company=None): FILE: hrms/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py class DuplicateAssignment (line 14) | class DuplicateAssignment(frappe.ValidationError): class SalaryStructureAssignment (line 18) | class SalaryStructureAssignment(Document): method validate (line 52) | def validate(self): method on_update_after_submit (line 65) | def on_update_after_submit(self): method validate_dates (line 68) | def validate_dates(self): method validate_company (line 97) | def validate_company(self): method validate_income_tax_slab (line 108) | def validate_income_tax_slab(self): method set_payroll_payable_account (line 132) | def set_payroll_payable_account(self): method set_payroll_cost_centers (line 150) | def set_payroll_cost_centers(self) -> None: method get_payroll_cost_center (line 158) | def get_payroll_cost_center(self): method validate_cost_centers (line 165) | def validate_cost_centers(self): method warn_about_missing_opening_entries (line 185) | def warn_about_missing_opening_entries(self): method are_opening_entries_required (line 204) | def are_opening_entries_required(self) -> bool: function get_assigned_salary_structure (line 215) | def get_assigned_salary_structure(employee, on_date): function get_employee_currency (line 236) | def get_employee_currency(employee: str) -> str: function get_tax_component (line 247) | def get_tax_component(salary_structure: str) -> str | None: FILE: hrms/payroll/doctype/salary_structure_assignment/test_salary_structure_assignment.py class TestSalaryStructureAssignment (line 7) | class TestSalaryStructureAssignment(HRMSTestSuite): FILE: hrms/payroll/doctype/salary_withholding/salary_withholding.js method employee (line 5) | employee(frm) { method from_date (line 23) | from_date(frm) { FILE: hrms/payroll/doctype/salary_withholding/salary_withholding.py class SalaryWithholding (line 14) | class SalaryWithholding(Document): method validate (line 43) | def validate(self): method validate_duplicate_record (line 51) | def validate_duplicate_record(self): method set_status (line 74) | def set_status(self, update=False): method set_withholding_cycles_and_to_date (line 91) | def set_withholding_cycles_and_to_date(self) -> None: method get_to_date (line 111) | def get_to_date(self) -> str: method get_frequency_kwargs (line 117) | def get_frequency_kwargs(self, withholding_cycles: int = 0) -> dict: method on_discard (line 128) | def on_discard(self): function get_payroll_frequency (line 133) | def get_payroll_frequency(employee: str, posting_date: str | date) -> st... function link_bank_entry_in_salary_withholdings (line 156) | def link_bank_entry_in_salary_withholdings(salary_slips: list[dict], ban... function update_salary_withholding_payment_status (line 167) | def update_salary_withholding_payment_status(doc: "SalaryWithholding", m... function _update_payment_status_in_payroll (line 191) | def _update_payment_status_in_payroll(withholdings: list[dict], cancel: ... function _update_salary_withholdings (line 215) | def _update_salary_withholdings(withholdings: list[dict], cancel: bool =... FILE: hrms/payroll/doctype/salary_withholding/test_salary_withholding.py class TestSalaryWithholding (line 21) | class TestSalaryWithholding(HRMSTestSuite): method setUp (line 22) | def setUp(self): method test_set_withholding_cycles_and_to_date (line 46) | def test_set_withholding_cycles_and_to_date(self): method test_salary_withholding (line 55) | def test_salary_withholding(self): method test_release_withheld_salaries (line 69) | def test_release_withheld_salaries(self): method _make_payroll_entry (line 114) | def _make_payroll_entry(self, date: str | None = None): method _submit_bank_entry (line 126) | def _submit_bank_entry(self, bank_entry: dict): method _get_payroll_employee_row (line 131) | def _get_payroll_employee_row(self, payroll_entry: dict) -> dict | None: method test_status_on_discard (line 135) | def test_status_on_discard(self): function create_salary_withholding (line 142) | def create_salary_withholding(employee: str, from_date: str, number_of_w... function get_salary_slip_details (line 156) | def get_salary_slip_details(payroll_entry: str, employee: str) -> dict: FILE: hrms/payroll/doctype/salary_withholding_cycle/salary_withholding_cycle.py class SalaryWithholdingCycle (line 8) | class SalaryWithholdingCycle(Document): FILE: hrms/payroll/doctype/taxable_salary_slab/taxable_salary_slab.py class TaxableSalarySlab (line 9) | class TaxableSalarySlab(Document): FILE: hrms/payroll/notification/retention_bonus/retention_bonus.py function get_context (line 1) | def get_context(context): FILE: hrms/payroll/report/accrued_earnings_report/accrued_earnings_report.js function create_additional_salary (line 99) | function create_additional_salary(employee, salary_component, amount) { FILE: hrms/payroll/report/accrued_earnings_report/accrued_earnings_report.py function execute (line 10) | def execute(filters: dict | None = None): function get_columns (line 17) | def get_columns() -> list[dict]: function get_data (line 78) | def get_data(filters): FILE: hrms/payroll/report/bank_remittance/bank_remittance.py function execute (line 9) | def execute(filters=None): function get_bank_accounts (line 93) | def get_bank_accounts(): function get_payroll_entries (line 98) | def get_payroll_entries(accounts, filters): function get_salary_slips (line 117) | def get_salary_slips(payroll_entries): function get_emp_bank_ifsc_code (line 148) | def get_emp_bank_ifsc_code(salary_slips): function set_company_account (line 160) | def set_company_account(payment_accounts, payroll_entries): FILE: hrms/payroll/report/income_tax_computation/income_tax_computation.py function execute (line 13) | def execute(filters=None): class IncomeTaxComputationReport (line 17) | class IncomeTaxComputationReport: method __init__ (line 18) | def __init__(self, filters=None): method run (line 30) | def run(self): method get_data (line 35) | def get_data(self): method get_employee_details (line 51) | def get_employee_details(self): method get_employee_filters (line 73) | def get_employee_filters(self): method get_ss_assignments (line 84) | def get_ss_assignments(self, employees): method get_future_salary_slips (line 123) | def get_future_salary_slips(self): method get_last_salary_slip (line 162) | def get_last_salary_slip(self, employee): method get_gross_earnings (line 177) | def get_gross_earnings(self): method get_future_earnings (line 201) | def get_future_earnings(self, employee): method get_tax_exempted_earnings_and_deductions (line 208) | def get_tax_exempted_earnings_and_deductions(self): method add_exemptions_from_future_salary_slips (line 248) | def add_exemptions_from_future_salary_slips(self, employee, exemptions): method get_tax_exempted_components (line 262) | def get_tax_exempted_components(self): method get_employee_tax_exemptions (line 287) | def get_employee_tax_exemptions(self): method get_tax_exemptions (line 298) | def get_tax_exemptions(self, source): method get_max_exemptions_based_on_category (line 342) | def get_max_exemptions_based_on_category(self): method get_hra (line 352) | def get_hra(self): method get_eligible_hra (line 363) | def get_eligible_hra(self, source): method get_standard_tax_exemption (line 390) | def get_standard_tax_exemption(self): method get_income_from_other_sources (line 411) | def get_income_from_other_sources(self): method get_total_taxable_amount (line 431) | def get_total_taxable_amount(self): method get_applicable_tax (line 479) | def get_applicable_tax(self): method get_data_for_eval (line 513) | def get_data_for_eval(self, emp: str, emp_details: dict) -> tuple: method get_total_deducted_tax (line 535) | def get_total_deducted_tax(self): method get_payable_tax (line 573) | def get_payable_tax(self): method add_column (line 582) | def add_column(self, label, fieldname=None, fieldtype=None, options=No... method get_fixed_columns (line 592) | def get_fixed_columns(self): FILE: hrms/payroll/report/income_tax_computation/test_income_tax_computation.py class TestIncomeTaxComputation (line 19) | class TestIncomeTaxComputation(HRMSTestSuite): method setUp (line 20) | def setUp(self): method cleanup_records (line 24) | def cleanup_records(self): method create_records (line 34) | def create_records(self): method test_report (line 65) | def test_report(self): method test_get_report_for_all_employees (line 112) | def test_get_report_for_all_employees(self): FILE: hrms/payroll/report/income_tax_deductions/income_tax_deductions.py function execute (line 14) | def execute(filters: Filters = None) -> tuple: function get_columns (line 22) | def get_columns(is_indian_company: bool) -> list[dict]: function get_data (line 66) | def get_data(filters: Filters, is_indian_company: bool) -> list[dict]: function get_income_tax_deductions (line 95) | def get_income_tax_deductions(filters: Filters) -> list[dict]: FILE: hrms/payroll/report/income_tax_deductions/test_income_tax_deductions.py class TestIncomeTaxDeductions (line 17) | class TestIncomeTaxDeductions(HRMSTestSuite): method setUp (line 18) | def setUp(self): method create_records (line 21) | def create_records(self): method test_report (line 44) | def test_report(self): FILE: hrms/payroll/report/professional_tax_deductions/professional_tax_deductions.py function execute (line 11) | def execute(filters=None): function get_columns (line 18) | def get_columns(filters): function get_data (line 38) | def get_data(filters): FILE: hrms/payroll/report/provident_fund_deductions/provident_fund_deductions.py function execute (line 10) | def execute(filters=None): function get_columns (line 29) | def get_columns(filters): function get_conditions (line 58) | def get_conditions(filters): function prepare_data (line 82) | def prepare_data(entry, component_type_dict): function get_data (line 108) | def get_data(filters): function get_years (line 176) | def get_years() -> str: FILE: hrms/payroll/report/salary_payments_based_on_payment_mode/salary_payments_based_on_payment_mode.py function execute (line 13) | def execute(filters=None): function get_columns (line 26) | def get_columns(filters, mode_of_payments): function get_payment_modes (line 45) | def get_payment_modes(): function prepare_data (line 54) | def prepare_data(entry): function get_data (line 68) | def get_data(filters, mode_of_payments): function get_total_based_on_mode_of_payment (line 125) | def get_total_based_on_mode_of_payment(data, mode_of_payments): function get_report_summary (line 137) | def get_report_summary(gross_pay, total_deductions, net_pay, currency): function get_chart (line 163) | def get_chart(mode_of_payments, data): FILE: hrms/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.py function execute (line 11) | def execute(filters=None): function get_columns (line 18) | def get_columns(filters): function get_conditions (line 67) | def get_conditions(filters): function get_data (line 88) | def get_data(filters): FILE: hrms/payroll/report/salary_register/salary_register.py function execute (line 16) | def execute(filters=None): function get_earning_and_deduction_types (line 89) | def get_earning_and_deduction_types(salary_slips): function update_column_width (line 99) | def update_column_width(ss, columns): function get_columns (line 110) | def get_columns(earning_types, ded_types): function get_salary_components (line 269) | def get_salary_components(salary_slips): function get_salary_component_type (line 278) | def get_salary_component_type(salary_component): function get_salary_slips (line 282) | def get_salary_slips(filters, company_currency): function get_employee_doj_map (line 319) | def get_employee_doj_map(): function get_salary_slip_details (line 327) | def get_salary_slip_details(salary_slips, currency, company_currency, co... FILE: hrms/payroll/utils.py function sanitize_expression (line 4) | def sanitize_expression(string: str | None = None) -> str | None: function get_payroll_settings_for_payment_days (line 30) | def get_payroll_settings_for_payment_days() -> dict: FILE: hrms/public/js/erpnext/employee.js method date_of_birth (line 32) | date_of_birth(frm) { FILE: hrms/public/js/erpnext/journal_entry.js method setup (line 5) | setup(frm) { method refresh (line 13) | refresh(frm) { FILE: hrms/public/js/erpnext/timesheet.js method refresh (line 5) | refresh(frm) { FILE: hrms/public/js/hierarchy_chart/hierarchy_chart_desktop.js method constructor (line 10) | constructor(doctype, wrapper, method) { method setup_page_style (line 22) | setup_page_style() { method setup_node_class (line 31) | setup_node_class() { method make_node_element (line 62) | make_node_element(node) { method show (line 77) | show() { method setup_actions (line 113) | setup_actions() { method export_chart (line 136) | export_chart() { method setup_hierarchy (line 171) | setup_hierarchy() { method make_svg_markers (line 190) | make_svg_markers() { method render_root_nodes (line 219) | render_root_nodes(expanded_view = false) { method expand_node (line 262) | expand_node(node) { method collapse_node (line 284) | collapse_node() { method show_active_path (line 292) | show_active_path(node) { method load_children (line 297) | load_children(node, deep = false) { method get_child_nodes (line 319) | get_child_nodes(node_id) { method render_child_nodes (line 334) | render_child_nodes(node, child_nodes) { method get_all_nodes (line 368) | get_all_nodes() { method render_children_of_all_nodes (line 384) | render_children_of_all_nodes(data_list) { method render_child_nodes_for_expanded_view (line 400) | render_child_nodes_for_expanded_view(node, child_nodes) { method add_node (line 431) | add_node(node, data) { method add_connector (line 445) | add_connector(parent_id, child_id) { method get_connector (line 470) | get_connector(pos_parent_right, pos_child_left) { method set_path_attributes (line 529) | set_path_attributes(path, parent_id, child_id) { method set_selected_node (line 545) | set_selected_node(node) { method collapse_previous_level_nodes (line 554) | collapse_previous_level_nodes(node) { method refresh_connectors (line 568) | refresh_connectors(node_parent) { method setup_node_click_action (line 585) | setup_node_click_action(node) { method setup_edit_node_action (line 606) | setup_edit_node_action(node) { method remove_levels_after_node (line 615) | remove_levels_after_node(node) { method remove_orphaned_connectors (line 633) | remove_orphaned_connectors() { FILE: hrms/public/js/hierarchy_chart/hierarchy_chart_mobile.js method constructor (line 9) | constructor(doctype, wrapper, method) { method setup_node_class (line 26) | setup_node_class() { method make_node_element (line 53) | make_node_element(node) { method show (line 69) | show() { method make_svg_markers (line 106) | make_svg_markers() { method setup_hierarchy (line 131) | setup_hierarchy() { method render_root_nodes (line 146) | render_root_nodes() { method expand_node (line 178) | expand_node(node) { method collapse_node (line 204) | collapse_node() { method show_active_path (line 226) | show_active_path(node) { method load_children (line 231) | load_children(node) { method get_child_nodes (line 242) | get_child_nodes(node_id, exclude_node = null) { method render_child_nodes (line 258) | render_child_nodes(node, child_nodes) { method add_node (line 282) | add_node(node, data) { method add_connector (line 298) | add_connector(parent_id, child_id) { method get_connector_for_active_node (line 318) | get_connector_for_active_node(parent_node, child_node) { method get_connector_for_collapsed_node (line 349) | get_connector_for_collapsed_node(parent_node, child_node) { method set_path_attributes (line 374) | set_path_attributes(path, parent_id, child_id) { method set_selected_node (line 388) | set_selected_node(node) { method setup_node_click_action (line 397) | setup_node_click_action(node) { method setup_edit_node_action (line 422) | setup_edit_node_action(node) { method setup_node_group_action (line 431) | setup_node_group_action() { method add_node_to_hierarchy (line 445) | add_node_to_hierarchy(node_element, node) { method get_node_group (line 456) | get_node_group(nodes, parent, collapsed = true) { method get_avatar (line 494) | get_avatar(node) { method expand_sibling_group_node (line 500) | expand_sibling_group_node(parent) { method reattach_and_expand_node (line 521) | reattach_and_expand_node(node, node_object) { method remove_levels_after_node (line 532) | remove_levels_after_node(node) { method remove_orphaned_connectors (line 549) | remove_orphaned_connectors() { method refresh_connectors (line 561) | refresh_connectors(node_parent, node_id) { FILE: hrms/public/js/performance/performance_feedback.js method constructor (line 4) | constructor({ frm, wrapper }) { method refresh (line 9) | refresh() { method prepare_dom (line 14) | prepare_dom() { method setup_feedback_view (line 18) | setup_feedback_view() { method get_feedback_history (line 26) | get_feedback_history() { method render_feedback_history (line 42) | async render_feedback_history(data) { method setup_actions (line 57) | setup_actions() { method add_feedback (line 65) | add_feedback() { method get_feedback_criteria_data (line 72) | get_feedback_criteria_data() { method show_add_feedback_dialog (line 91) | show_add_feedback_dialog(criteria_data) { method get_feedback_dialog_fields (line 134) | get_feedback_dialog_fields(criteria_data) { method can_create (line 175) | async can_create() { FILE: hrms/public/js/utils/leave_utils.js method add_view_ledger_button (line 2) | add_view_ledger_button(frm) { FILE: hrms/regional/india/setup.py function setup (line 11) | def setup(): function uninstall (line 17) | def uninstall(): function make_custom_fields (line 22) | def make_custom_fields(update=True): function get_custom_fields (line 27) | def get_custom_fields(): function add_custom_roles_for_reports (line 246) | def add_custom_roles_for_reports(): function create_gratuity_rule_for_india (line 262) | def create_gratuity_rule_for_india(): FILE: hrms/regional/india/utils.py function calculate_annual_eligible_hra_exemption (line 11) | def calculate_annual_eligible_hra_exemption(doc): function has_hra_component (line 79) | def has_hra_component(salary_structure, hra_component): function get_end_date_for_assignment (line 91) | def get_end_date_for_assignment(assignment_dates, idx, payroll_period): function get_component_amt_from_salary_slip (line 106) | def get_component_amt_from_salary_slip(employee, salary_structure, basic... function calculate_hra_exemption (line 126) | def calculate_hra_exemption( function get_component_pay (line 145) | def get_component_pay(frequency, amount, from_date, to_date): function validate_house_rent_dates (line 160) | def validate_house_rent_dates(doc): function calculate_hra_exemption_for_period (line 187) | def calculate_hra_exemption_for_period(doc): function calculate_tax_with_marginal_relief (line 208) | def calculate_tax_with_marginal_relief(tax_slab, tax_amount, annual_taxa... FILE: hrms/regional/united_arab_emirates/setup.py function setup (line 7) | def setup(): function create_gratuity_rules_for_uae (line 11) | def create_gratuity_rules_for_uae(): function get_gratuity_rules (line 18) | def get_gratuity_rules(): FILE: hrms/setup.py function after_install (line 14) | def after_install(): function before_uninstall (line 26) | def before_uninstall(): function after_app_install (line 32) | def after_app_install(app_name): function before_app_uninstall (line 42) | def before_app_uninstall(app_name): function get_custom_fields (line 52) | def get_custom_fields(): function make_fixtures (line 329) | def make_fixtures(): function setup_notifications (line 422) | def setup_notifications(): function update_hr_defaults (line 491) | def update_hr_defaults(): function set_single_defaults (line 508) | def set_single_defaults(): function create_default_role_profiles (line 527) | def create_default_role_profiles(): function get_post_install_patches (line 540) | def get_post_install_patches(): function run_post_install_patches (line 563) | def run_post_install_patches(): function create_salary_slip_loan_fields (line 581) | def create_salary_slip_loan_fields(): function add_lending_docperms_to_ess (line 586) | def add_lending_docperms_to_ess(): function remove_lending_docperms_from_ess (line 596) | def remove_lending_docperms_from_ess(): function add_non_standard_user_types (line 610) | def add_non_standard_user_types(): function update_user_type_doctype_limit (line 619) | def update_user_type_doctype_limit(user_types=None): function get_user_types_data (line 630) | def get_user_types_data(): function get_lending_docperms_for_ess (line 673) | def get_lending_docperms_for_ess(): function create_custom_role (line 681) | def create_custom_role(data): function create_user_type (line 688) | def create_user_type(user_type, data): function append_docperms_to_user_type (line 713) | def append_docperms_to_user_type(docperms, doc): function update_select_perm_after_install (line 727) | def update_select_perm_after_install(): function delete_custom_fields (line 741) | def delete_custom_fields(custom_fields: dict): function get_salary_slip_loan_fields (line 767) | def get_salary_slip_loan_fields(): FILE: hrms/subscription_utils.py function get_add_on_details (line 31) | def get_add_on_details(plan: str) -> dict[str, int]: function get_active_employees (line 62) | def get_active_employees() -> int: function subscription_updated (line 67) | def subscription_updated(app: str, plan: str): function update_erpnext_access (line 72) | def update_erpnext_access(user_input: dict | None): function update_erpnext_workspaces (line 86) | def update_erpnext_workspaces(disable: bool = True): function update_erpnext_roles (line 111) | def update_erpnext_roles(disable: bool = True): function set_app_logo (line 123) | def set_app_logo(): function get_erpnext_roles (line 127) | def get_erpnext_roles() -> set: function get_roles_for_app (line 133) | def get_roles_for_app(app_name: str) -> set: function get_modules_by_app (line 141) | def get_modules_by_app(app_name: str) -> list: function get_doctypes_by_modules (line 145) | def get_doctypes_by_modules(modules: list) -> list: function roles_by_doctype (line 149) | def roles_by_doctype(doctypes: list) -> set: function hide_erpnext (line 160) | def hide_erpnext() -> bool: function has_subscription (line 175) | def has_subscription(secret_key) -> bool: FILE: hrms/tests/test_utils.py function before_tests (line 9) | def before_tests(): function set_defaults (line 40) | def set_defaults(): function get_first_sunday (line 51) | def get_first_sunday(holiday_list="Salary Slip Test Holiday List", for_d... function get_first_day_for_prev_month (line 71) | def get_first_day_for_prev_month(): function add_date_to_holiday_list (line 77) | def add_date_to_holiday_list(date: str, holiday_list: str, is_half_day: ... function create_company (line 89) | def create_company(name: str = "_Test Company", is_group: 0 | 1 = 0, par... function create_department (line 105) | def create_department(name: str, company: str = "_Test Company") -> str: function create_employee_grade (line 117) | def create_employee_grade(grade: str, default_structure: str | None = No... function create_job_applicant (line 130) | def create_job_applicant(**args): function get_email_by_subject (line 152) | def get_email_by_subject(subject: str) -> str | None: FILE: hrms/tests/utils.py class BootStrapTestData (line 8) | class BootStrapTestData: method __init__ (line 9) | def __init__(self): method make_presets (line 13) | def make_presets(self): method make_master_data (line 16) | def make_master_data(self): method make_designations (line 34) | def make_designations(self): method make_exchange_rate (line 48) | def make_exchange_rate(self): method make_salary_components (line 80) | def make_salary_components(self): method make_company (line 115) | def make_company(self): method make_holiday_list_assignment (line 128) | def make_holiday_list_assignment(self): method make_holiday_list (line 142) | def make_holiday_list(self): method make_leave_types (line 155) | def make_leave_types(self): method make_leave_period (line 183) | def make_leave_period(self): method make_leave_allocations (line 194) | def make_leave_allocations(self): method make_leave_applications (line 219) | def make_leave_applications(self): method make_leave_block_lists (line 254) | def make_leave_block_lists(self): method update_email_account_settings (line 331) | def update_email_account_settings(self): method update_system_settings (line 337) | def update_system_settings(self): method make_records (line 342) | def make_records(self, key, records): class HRMSTestSuite (line 363) | class HRMSTestSuite(ERPNextTestSuite): FILE: hrms/uninstall.py function before_uninstall (line 6) | def before_uninstall(): FILE: hrms/utils/__init__.py function get_country (line 12) | def get_country(fields=None): function get_date_range (line 33) | def get_date_range(start_date: str, end_date: str) -> list[str]: function generate_date_range (line 39) | def generate_date_range(start_date: str, end_date: str, reverse: bool = ... function get_employee_email (line 49) | def get_employee_email(employee_id: str) -> str | None: FILE: hrms/utils/custom_method_for_charts.py function get_upcoming_holidays (line 11) | def get_upcoming_holidays(): FILE: hrms/utils/hierarchy_chart.py function get_all_nodes (line 10) | def get_all_nodes(method, company): FILE: hrms/utils/holiday_list.py function get_holiday_dates_between (line 8) | def get_holiday_dates_between( function get_holiday_dates_between_range (line 35) | def get_holiday_dates_between_range( function get_holiday_list_for_employee (line 96) | def get_holiday_list_for_employee( function get_assigned_holiday_list (line 119) | def get_assigned_holiday_list(assigned_to: str, as_on=None, as_dict: boo... function invalidate_cache (line 142) | def invalidate_cache(doc, method=None): FILE: hrms/www/hrms.py function get_context (line 7) | def get_context(context): function get_context_for_dev (line 17) | def get_context_for_dev(): function get_boot (line 23) | def get_boot(): function get_default_route (line 38) | def get_default_route(): FILE: hrms/www/jobs/index.js function update_ui_with_filters (line 75) | function update_ui_with_filters() { function disable_inapplicable_pagination_buttons (line 96) | function disable_inapplicable_pagination_buttons() { function get_new_params (line 106) | function get_new_params(filter_group) { function update_params (line 113) | function update_params(params = "") { function scroll_up_and_execute (line 123) | function scroll_up_and_execute(callback) { FILE: hrms/www/jobs/index.py function get_context (line 10) | def get_context(context): function get_job_openings (line 25) | def get_job_openings(filters=None, txt=None, sort=None, limit=20, offset... function get_no_of_pages (line 74) | def get_no_of_pages(filters=None, txt=None, page_length=20): function get_all_filters (line 94) | def get_all_filters(filters=None): function get_filters_txt_sort_offset (line 112) | def get_filters_txt_sort_offset(page_len=20): FILE: hrms/www/roster.py function get_context (line 4) | def get_context(context): FILE: roster/vite.config.js function getProxyOptions (line 37) | function getProxyOptions() { function getCommonSiteConfig (line 56) | function getCommonSiteConfig() {