gitextract_bjjbcr75/ ├── .editorconfig ├── .git-blame-ignore-revs ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ ├── config.yml │ │ └── feature_request.yaml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── helper/ │ │ ├── apps.json │ │ ├── documentation.py │ │ ├── install.sh │ │ ├── site_config.json │ │ ├── translation.py │ │ └── update_pot_file.sh │ ├── labeler.yml │ ├── release.yml │ └── workflows/ │ ├── build_image.yml │ ├── ci.yml │ ├── docs_checker.yml │ ├── generate-pot-file.yml │ ├── initiate_release.yml │ ├── labeller.yml │ ├── linters.yml │ ├── on_release.yml │ ├── release_notes.yml │ ├── run-individual-tests.yml │ └── stale.yml ├── .gitignore ├── .gitmodules ├── .mergify.yml ├── .pre-commit-config.yaml ├── .releaserc ├── .semgrepignore ├── CODE_OF_CONDUCT.md ├── MANIFEST.in ├── README.md ├── SECURITY.md ├── codecov.yml ├── commitlint.config.js ├── crowdin.yml ├── docker/ │ ├── docker-compose.yml │ └── init.sh ├── frontend/ │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.json │ ├── index.html │ ├── ionic.config.json │ ├── jsconfig.json │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ ├── frappe-push-notification.js │ │ └── sw.js │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── AttendanceCalendar.vue │ │ │ ├── AttendanceRequestItem.vue │ │ │ ├── BaseLayout.vue │ │ │ ├── BottomTabs.vue │ │ │ ├── CheckInPanel.vue │ │ │ ├── CustomIonModal.vue │ │ │ ├── EmployeeAdvanceBalance.vue │ │ │ ├── EmployeeAdvanceItem.vue │ │ │ ├── EmployeeAvatar.vue │ │ │ ├── EmployeeCheckinItem.vue │ │ │ ├── EmptyState.vue │ │ │ ├── ExpenseAdvancesTable.vue │ │ │ ├── ExpenseClaimItem.vue │ │ │ ├── ExpenseClaimSummary.vue │ │ │ ├── ExpenseItems.vue │ │ │ ├── ExpenseTaxesTable.vue │ │ │ ├── ExpensesTable.vue │ │ │ ├── FilePreviewModal.vue │ │ │ ├── FileUploaderView.vue │ │ │ ├── FormField.vue │ │ │ ├── FormView.vue │ │ │ ├── FormattedField.vue │ │ │ ├── Holidays.vue │ │ │ ├── InstallPrompt.vue │ │ │ ├── LeaveBalance.vue │ │ │ ├── LeaveRequestItem.vue │ │ │ ├── Link.vue │ │ │ ├── ListFiltersActionSheet.vue │ │ │ ├── ListItem.vue │ │ │ ├── ListView.vue │ │ │ ├── ProfileInfoModal.vue │ │ │ ├── QuickLinks.vue │ │ │ ├── RequestActionSheet.vue │ │ │ ├── RequestList.vue │ │ │ ├── RequestPanel.vue │ │ │ ├── SalaryDetailTable.vue │ │ │ ├── SalarySlipItem.vue │ │ │ ├── SemicircleChart.vue │ │ │ ├── ShiftAssignmentItem.vue │ │ │ ├── ShiftRequestItem.vue │ │ │ ├── TabButtons.vue │ │ │ ├── WorkflowActionSheet.vue │ │ │ └── icons/ │ │ │ ├── AttendanceIcon.vue │ │ │ ├── EmployeeAdvanceIcon.vue │ │ │ ├── ExpenseIcon.vue │ │ │ ├── FrappeHRLogo.vue │ │ │ ├── FrappeHRLogoType.vue │ │ │ ├── HomeIcon.vue │ │ │ ├── LeaveIcon.vue │ │ │ ├── SalaryIcon.vue │ │ │ └── ShiftIcon.vue │ │ ├── composables/ │ │ │ ├── index.js │ │ │ ├── realtime.js │ │ │ └── workflow.js │ │ ├── data/ │ │ │ ├── advances.js │ │ │ ├── attendance.js │ │ │ ├── claims.js │ │ │ ├── config/ │ │ │ │ └── requestSummaryFields.js │ │ │ ├── currencies.js │ │ │ ├── employee.js │ │ │ ├── employees.js │ │ │ ├── leaves.js │ │ │ ├── notifications.js │ │ │ ├── session.js │ │ │ └── user.js │ │ ├── main.css │ │ ├── main.js │ │ ├── plugins/ │ │ │ └── translationsPlugin.js │ │ ├── router/ │ │ │ ├── advances.js │ │ │ ├── attendance.js │ │ │ ├── claims.js │ │ │ ├── index.js │ │ │ ├── leaves.js │ │ │ └── salary_slips.js │ │ ├── socket.js │ │ ├── theme/ │ │ │ └── variables.css │ │ ├── utils/ │ │ │ ├── commonUtils.js │ │ │ ├── dayjs.js │ │ │ ├── dialogs.js │ │ │ ├── formatters.js │ │ │ ├── ionicConfig.js │ │ │ └── pushNotifications.js │ │ └── views/ │ │ ├── AppSettings.vue │ │ ├── Home.vue │ │ ├── InvalidEmployee.vue │ │ ├── Login.vue │ │ ├── Notifications.vue │ │ ├── Profile.vue │ │ ├── TabbedView.vue │ │ ├── attendance/ │ │ │ ├── AttendanceRequestForm.vue │ │ │ ├── AttendanceRequestList.vue │ │ │ ├── Dashboard.vue │ │ │ ├── EmployeeCheckinList.vue │ │ │ ├── ShiftAssignmentForm.vue │ │ │ ├── ShiftAssignmentList.vue │ │ │ ├── ShiftRequestForm.vue │ │ │ └── ShiftRequestList.vue │ │ ├── employee_advance/ │ │ │ ├── Form.vue │ │ │ └── List.vue │ │ ├── expense_claim/ │ │ │ ├── Dashboard.vue │ │ │ ├── Form.vue │ │ │ └── List.vue │ │ ├── leave/ │ │ │ ├── Dashboard.vue │ │ │ ├── Form.vue │ │ │ └── List.vue │ │ └── salary_slip/ │ │ ├── Dashboard.vue │ │ └── Detail.vue │ ├── tailwind.config.js │ └── vite.config.js ├── hrms/ │ ├── __init__.py │ ├── api/ │ │ ├── __init__.py │ │ ├── oauth.py │ │ ├── roster.py │ │ └── system_settings.py │ ├── config/ │ │ ├── __init__.py │ │ ├── desktop.py │ │ └── docs.py │ ├── controllers/ │ │ ├── employee_boarding_controller.py │ │ ├── employee_reminders.py │ │ └── tests/ │ │ └── test_employee_reminders.py │ ├── desktop_icon/ │ │ ├── expenses.json │ │ ├── frappe_hr.json │ │ ├── leaves.json │ │ ├── payroll.json │ │ ├── people.json │ │ ├── performance.json │ │ ├── recruitment.json │ │ ├── shift_&_attendance.json │ │ ├── tax_&_benefits.json │ │ └── tenure.json │ ├── hooks.py │ ├── hr/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── dashboard_chart/ │ │ │ ├── appraisal_overview/ │ │ │ │ └── appraisal_overview.json │ │ │ ├── attendance_count/ │ │ │ │ └── attendance_count.json │ │ │ ├── claims_by_type/ │ │ │ │ └── claims_by_type.json │ │ │ ├── department_wise_employee_count/ │ │ │ │ └── department_wise_employee_count.json │ │ │ ├── department_wise_expense_claims/ │ │ │ │ └── department_wise_expense_claims.json │ │ │ ├── department_wise_openings/ │ │ │ │ └── department_wise_openings.json │ │ │ ├── department_wise_timesheet_hours/ │ │ │ │ └── department_wise_timesheet_hours.json │ │ │ ├── designation_wise_employee_count/ │ │ │ │ └── designation_wise_employee_count.json │ │ │ ├── designation_wise_openings/ │ │ │ │ └── designation_wise_openings.json │ │ │ ├── employee_advance_status/ │ │ │ │ └── employee_advance_status.json │ │ │ ├── employees_by_age/ │ │ │ │ └── employees_by_age.json │ │ │ ├── employees_by_branch/ │ │ │ │ └── employees_by_branch.json │ │ │ ├── employees_by_grade/ │ │ │ │ └── employees_by_grade.json │ │ │ ├── employees_by_type/ │ │ │ │ └── employees_by_type.json │ │ │ ├── expense_claims/ │ │ │ │ └── expense_claims.json │ │ │ ├── gender_diversity_ratio/ │ │ │ │ └── gender_diversity_ratio.json │ │ │ ├── grievance_type/ │ │ │ │ └── grievance_type.json │ │ │ ├── hiring_vs_attrition_count/ │ │ │ │ └── hiring_vs_attrition_count.json │ │ │ ├── interview_status/ │ │ │ │ └── interview_status.json │ │ │ ├── job_applicant_pipeline/ │ │ │ │ └── job_applicant_pipeline.json │ │ │ ├── job_applicant_source/ │ │ │ │ └── job_applicant_source.json │ │ │ ├── job_applicants_by_country/ │ │ │ │ └── job_applicants_by_country.json │ │ │ ├── job_application_frequency/ │ │ │ │ └── job_application_frequency.json │ │ │ ├── job_application_status/ │ │ │ │ └── job_application_status.json │ │ │ ├── job_offer_status/ │ │ │ │ └── job_offer_status.json │ │ │ ├── shift_assignment_breakup/ │ │ │ │ └── shift_assignment_breakup.json │ │ │ ├── timesheet_activity_breakup/ │ │ │ │ └── timesheet_activity_breakup.json │ │ │ ├── training_type/ │ │ │ │ └── training_type.json │ │ │ ├── y_o_y_promotions/ │ │ │ │ └── y_o_y_promotions.json │ │ │ └── y_o_y_transfers/ │ │ │ └── y_o_y_transfers.json │ │ ├── dashboard_chart_source/ │ │ │ ├── __init__.py │ │ │ ├── employees_by_age/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employees_by_age.js │ │ │ │ ├── employees_by_age.json │ │ │ │ └── employees_by_age.py │ │ │ └── hiring_vs_attrition_count/ │ │ │ ├── __init__.py │ │ │ ├── hiring_vs_attrition_count.js │ │ │ ├── hiring_vs_attrition_count.json │ │ │ └── hiring_vs_attrition_count.py │ │ ├── doctype/ │ │ │ ├── __init__.py │ │ │ ├── appointment_letter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appointment_letter.js │ │ │ │ ├── appointment_letter.json │ │ │ │ ├── appointment_letter.py │ │ │ │ └── test_appointment_letter.py │ │ │ ├── appointment_letter_content/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appointment_letter_content.json │ │ │ │ └── appointment_letter_content.py │ │ │ ├── appointment_letter_template/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appointment_letter_template.js │ │ │ │ ├── appointment_letter_template.json │ │ │ │ ├── appointment_letter_template.py │ │ │ │ └── test_appointment_letter_template.py │ │ │ ├── appraisal/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal.js │ │ │ │ ├── appraisal.json │ │ │ │ ├── appraisal.py │ │ │ │ └── test_appraisal.py │ │ │ ├── appraisal_cycle/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_cycle.js │ │ │ │ ├── appraisal_cycle.json │ │ │ │ ├── appraisal_cycle.py │ │ │ │ └── test_appraisal_cycle.py │ │ │ ├── appraisal_goal/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_goal.json │ │ │ │ └── appraisal_goal.py │ │ │ ├── appraisal_kra/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_kra.json │ │ │ │ └── appraisal_kra.py │ │ │ ├── appraisal_template/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_template.js │ │ │ │ ├── appraisal_template.json │ │ │ │ ├── appraisal_template.py │ │ │ │ └── test_appraisal_template.py │ │ │ ├── appraisal_template_goal/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_template_goal.json │ │ │ │ └── appraisal_template_goal.py │ │ │ ├── appraisee/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisee.json │ │ │ │ └── appraisee.py │ │ │ ├── attendance/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── attendance.js │ │ │ │ ├── attendance.json │ │ │ │ ├── attendance.py │ │ │ │ ├── attendance_calendar.js │ │ │ │ ├── attendance_dashboard.py │ │ │ │ ├── attendance_list.js │ │ │ │ └── test_attendance.py │ │ │ ├── attendance_request/ │ │ │ │ ├── __init__.py │ │ │ │ ├── attendance_request.js │ │ │ │ ├── attendance_request.json │ │ │ │ ├── attendance_request.py │ │ │ │ ├── attendance_request_dashboard.py │ │ │ │ ├── attendance_warnings.html │ │ │ │ └── test_attendance_request.py │ │ │ ├── compensatory_leave_request/ │ │ │ │ ├── __init__.py │ │ │ │ ├── compensatory_leave_request.js │ │ │ │ ├── compensatory_leave_request.json │ │ │ │ ├── compensatory_leave_request.py │ │ │ │ └── test_compensatory_leave_request.py │ │ │ ├── daily_work_summary/ │ │ │ │ ├── __init__.py │ │ │ │ ├── daily_work_summary.js │ │ │ │ ├── daily_work_summary.json │ │ │ │ ├── daily_work_summary.py │ │ │ │ ├── test_daily_work_summary.py │ │ │ │ └── test_data/ │ │ │ │ └── test-reply.raw │ │ │ ├── daily_work_summary_group/ │ │ │ │ ├── __init__.py │ │ │ │ ├── daily_work_summary_group.js │ │ │ │ ├── daily_work_summary_group.json │ │ │ │ └── daily_work_summary_group.py │ │ │ ├── daily_work_summary_group_user/ │ │ │ │ ├── __init__.py │ │ │ │ ├── daily_work_summary_group_user.json │ │ │ │ └── daily_work_summary_group_user.py │ │ │ ├── department_approver/ │ │ │ │ ├── __init__.py │ │ │ │ ├── department_approver.json │ │ │ │ └── department_approver.py │ │ │ ├── designation_skill/ │ │ │ │ ├── __init__.py │ │ │ │ ├── designation_skill.json │ │ │ │ └── designation_skill.py │ │ │ ├── earned_leave_schedule/ │ │ │ │ ├── __init__.py │ │ │ │ ├── earned_leave_schedule.json │ │ │ │ └── earned_leave_schedule.py │ │ │ ├── employee_advance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_advance.js │ │ │ │ ├── employee_advance.json │ │ │ │ ├── employee_advance.py │ │ │ │ ├── employee_advance_dashboard.py │ │ │ │ └── test_employee_advance.py │ │ │ ├── employee_attendance_tool/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_attendance_tool.css │ │ │ │ ├── employee_attendance_tool.js │ │ │ │ ├── employee_attendance_tool.json │ │ │ │ ├── employee_attendance_tool.py │ │ │ │ └── test_employee_attendance_tool.py │ │ │ ├── employee_boarding_activity/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_boarding_activity.json │ │ │ │ └── employee_boarding_activity.py │ │ │ ├── employee_checkin/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_checkin.js │ │ │ │ ├── employee_checkin.json │ │ │ │ ├── employee_checkin.py │ │ │ │ ├── employee_checkin_list.js │ │ │ │ └── test_employee_checkin.py │ │ │ ├── employee_feedback_criteria/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_feedback_criteria.js │ │ │ │ ├── employee_feedback_criteria.json │ │ │ │ ├── employee_feedback_criteria.py │ │ │ │ └── test_employee_feedback_criteria.py │ │ │ ├── employee_feedback_rating/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_feedback_rating.json │ │ │ │ └── employee_feedback_rating.py │ │ │ ├── employee_grade/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_grade.js │ │ │ │ ├── employee_grade.json │ │ │ │ ├── employee_grade.py │ │ │ │ ├── employee_grade_dashboard.py │ │ │ │ └── test_employee_grade.py │ │ │ ├── employee_grievance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_grievance.js │ │ │ │ ├── employee_grievance.json │ │ │ │ ├── employee_grievance.py │ │ │ │ ├── employee_grievance_list.js │ │ │ │ └── test_employee_grievance.py │ │ │ ├── employee_health_insurance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_health_insurance.js │ │ │ │ ├── employee_health_insurance.json │ │ │ │ ├── employee_health_insurance.py │ │ │ │ └── test_employee_health_insurance.py │ │ │ ├── employee_onboarding/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_onboarding.js │ │ │ │ ├── employee_onboarding.json │ │ │ │ ├── employee_onboarding.py │ │ │ │ ├── employee_onboarding_list.js │ │ │ │ └── test_employee_onboarding.py │ │ │ ├── employee_onboarding_template/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_onboarding_template.js │ │ │ │ ├── employee_onboarding_template.json │ │ │ │ ├── employee_onboarding_template.py │ │ │ │ ├── employee_onboarding_template_dashboard.py │ │ │ │ └── test_employee_onboarding_template.py │ │ │ ├── employee_performance_feedback/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_performance_feedback.js │ │ │ │ ├── employee_performance_feedback.json │ │ │ │ ├── employee_performance_feedback.py │ │ │ │ └── test_employee_performance_feedback.py │ │ │ ├── employee_promotion/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_promotion.js │ │ │ │ ├── employee_promotion.json │ │ │ │ ├── employee_promotion.py │ │ │ │ └── test_employee_promotion.py │ │ │ ├── employee_property_history/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_property_history.json │ │ │ │ └── employee_property_history.py │ │ │ ├── employee_referral/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_referral.js │ │ │ │ ├── employee_referral.json │ │ │ │ ├── employee_referral.py │ │ │ │ ├── employee_referral_dashboard.py │ │ │ │ ├── employee_referral_list.js │ │ │ │ └── test_employee_referral.py │ │ │ ├── employee_separation/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_separation.js │ │ │ │ ├── employee_separation.json │ │ │ │ ├── employee_separation.py │ │ │ │ ├── employee_separation_list.js │ │ │ │ └── test_employee_separation.py │ │ │ ├── employee_separation_template/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_separation_template.js │ │ │ │ ├── employee_separation_template.json │ │ │ │ ├── employee_separation_template.py │ │ │ │ ├── employee_separation_template_dashboard.py │ │ │ │ └── test_employee_separation_template.py │ │ │ ├── employee_skill/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_skill.json │ │ │ │ └── employee_skill.py │ │ │ ├── employee_skill_map/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_skill_map.js │ │ │ │ ├── employee_skill_map.json │ │ │ │ └── employee_skill_map.py │ │ │ ├── employee_training/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_training.json │ │ │ │ └── employee_training.py │ │ │ ├── employee_transfer/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_transfer.js │ │ │ │ ├── employee_transfer.json │ │ │ │ ├── employee_transfer.py │ │ │ │ └── test_employee_transfer.py │ │ │ ├── employment_type/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── employment_type.json │ │ │ │ ├── employment_type.py │ │ │ │ ├── test_employment_type.py │ │ │ │ └── test_records.json │ │ │ ├── exit_interview/ │ │ │ │ ├── __init__.py │ │ │ │ ├── exit_interview.js │ │ │ │ ├── exit_interview.json │ │ │ │ ├── exit_interview.py │ │ │ │ ├── exit_interview_list.js │ │ │ │ ├── exit_questionnaire_notification_template.html │ │ │ │ └── test_exit_interview.py │ │ │ ├── expected_skill_set/ │ │ │ │ ├── __init__.py │ │ │ │ ├── expected_skill_set.json │ │ │ │ └── expected_skill_set.py │ │ │ ├── expense_claim/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_claim.js │ │ │ │ ├── expense_claim.json │ │ │ │ ├── expense_claim.py │ │ │ │ ├── expense_claim_dashboard.py │ │ │ │ ├── expense_claim_list.js │ │ │ │ └── test_expense_claim.py │ │ │ ├── expense_claim_account/ │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_claim_account.json │ │ │ │ └── expense_claim_account.py │ │ │ ├── expense_claim_advance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_claim_advance.json │ │ │ │ └── expense_claim_advance.py │ │ │ ├── expense_claim_detail/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_claim_detail.json │ │ │ │ └── expense_claim_detail.py │ │ │ ├── expense_claim_type/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_claim_type.js │ │ │ │ ├── expense_claim_type.json │ │ │ │ ├── expense_claim_type.py │ │ │ │ └── test_expense_claim_type.py │ │ │ ├── expense_taxes_and_charges/ │ │ │ │ ├── __init__.py │ │ │ │ ├── expense_taxes_and_charges.json │ │ │ │ └── expense_taxes_and_charges.py │ │ │ ├── full_and_final_asset/ │ │ │ │ ├── __init__.py │ │ │ │ ├── full_and_final_asset.js │ │ │ │ ├── full_and_final_asset.json │ │ │ │ ├── full_and_final_asset.py │ │ │ │ └── test_full_and_final_asset.py │ │ │ ├── full_and_final_outstanding_statement/ │ │ │ │ ├── __init__.py │ │ │ │ ├── full_and_final_outstanding_statement.json │ │ │ │ └── full_and_final_outstanding_statement.py │ │ │ ├── full_and_final_statement/ │ │ │ │ ├── __init__.py │ │ │ │ ├── full_and_final_statement.js │ │ │ │ ├── full_and_final_statement.json │ │ │ │ ├── full_and_final_statement.py │ │ │ │ ├── full_and_final_statement_list.js │ │ │ │ ├── full_and_final_statement_loan_utils.py │ │ │ │ └── test_full_and_final_statement.py │ │ │ ├── goal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── goal.js │ │ │ │ ├── goal.json │ │ │ │ ├── goal.py │ │ │ │ ├── goal_list.js │ │ │ │ ├── goal_tree.js │ │ │ │ └── test_goal.py │ │ │ ├── grievance_type/ │ │ │ │ ├── __init__.py │ │ │ │ ├── grievance_type.js │ │ │ │ ├── grievance_type.json │ │ │ │ ├── grievance_type.py │ │ │ │ └── test_grievance_type.py │ │ │ ├── holiday_list_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── holiday_list_assignment.js │ │ │ │ ├── holiday_list_assignment.json │ │ │ │ ├── holiday_list_assignment.py │ │ │ │ └── test_holiday_list_assignment.py │ │ │ ├── hr_settings/ │ │ │ │ ├── __init__.py │ │ │ │ ├── hr_settings.js │ │ │ │ ├── hr_settings.json │ │ │ │ ├── hr_settings.py │ │ │ │ └── test_hr_settings.py │ │ │ ├── identification_document_type/ │ │ │ │ ├── __init__.py │ │ │ │ ├── identification_document_type.js │ │ │ │ ├── identification_document_type.json │ │ │ │ ├── identification_document_type.py │ │ │ │ └── test_identification_document_type.py │ │ │ ├── interest/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interest.js │ │ │ │ ├── interest.json │ │ │ │ ├── interest.py │ │ │ │ └── test_interest.py │ │ │ ├── interview/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interview.js │ │ │ │ ├── interview.json │ │ │ │ ├── interview.py │ │ │ │ ├── interview_calendar.js │ │ │ │ ├── interview_feedback_reminder_template.html │ │ │ │ ├── interview_list.js │ │ │ │ ├── interview_reminder_notification_template.html │ │ │ │ └── test_interview.py │ │ │ ├── interview_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interview_detail.json │ │ │ │ └── interview_detail.py │ │ │ ├── interview_feedback/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interview_feedback.js │ │ │ │ ├── interview_feedback.json │ │ │ │ ├── interview_feedback.py │ │ │ │ └── test_interview_feedback.py │ │ │ ├── interview_round/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interview_round.js │ │ │ │ ├── interview_round.json │ │ │ │ ├── interview_round.py │ │ │ │ └── test_interview_round.py │ │ │ ├── interview_type/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interview_type.js │ │ │ │ ├── interview_type.json │ │ │ │ ├── interview_type.py │ │ │ │ └── test_interview_type.py │ │ │ ├── interviewer/ │ │ │ │ ├── __init__.py │ │ │ │ ├── interviewer.json │ │ │ │ └── interviewer.py │ │ │ ├── job_applicant/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── job_applicant.js │ │ │ │ ├── job_applicant.json │ │ │ │ ├── job_applicant.py │ │ │ │ ├── job_applicant_dashboard.html │ │ │ │ ├── job_applicant_dashboard.py │ │ │ │ ├── job_applicant_list.js │ │ │ │ └── test_job_applicant.py │ │ │ ├── job_applicant_source/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_applicant_source.js │ │ │ │ ├── job_applicant_source.json │ │ │ │ ├── job_applicant_source.py │ │ │ │ └── test_job_applicant_source.py │ │ │ ├── job_offer/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_offer.js │ │ │ │ ├── job_offer.json │ │ │ │ ├── job_offer.py │ │ │ │ ├── job_offer_list.js │ │ │ │ └── test_job_offer.py │ │ │ ├── job_offer_term/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_offer_term.json │ │ │ │ └── job_offer_term.py │ │ │ ├── job_offer_term_template/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_offer_term_template.js │ │ │ │ ├── job_offer_term_template.json │ │ │ │ ├── job_offer_term_template.py │ │ │ │ └── test_job_offer_term_template.py │ │ │ ├── job_opening/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── job_opening.js │ │ │ │ ├── job_opening.json │ │ │ │ ├── job_opening.py │ │ │ │ ├── job_opening_dashboard.py │ │ │ │ ├── templates/ │ │ │ │ │ ├── job_opening.html │ │ │ │ │ └── job_opening_row.html │ │ │ │ └── test_job_opening.py │ │ │ ├── job_opening_template/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_opening_template.js │ │ │ │ ├── job_opening_template.json │ │ │ │ ├── job_opening_template.py │ │ │ │ └── test_job_opening_template.py │ │ │ ├── job_requisition/ │ │ │ │ ├── __init__.py │ │ │ │ ├── job_requisition.js │ │ │ │ ├── job_requisition.json │ │ │ │ ├── job_requisition.py │ │ │ │ ├── job_requisition_list.js │ │ │ │ └── test_job_requisition.py │ │ │ ├── kra/ │ │ │ │ ├── __init__.py │ │ │ │ ├── kra.js │ │ │ │ ├── kra.json │ │ │ │ ├── kra.py │ │ │ │ └── test_kra.py │ │ │ ├── leave_adjustment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_adjustment.js │ │ │ │ ├── leave_adjustment.json │ │ │ │ ├── leave_adjustment.py │ │ │ │ └── test_leave_adjustment.py │ │ │ ├── leave_allocation/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_allocation.js │ │ │ │ ├── leave_allocation.json │ │ │ │ ├── leave_allocation.py │ │ │ │ ├── leave_allocation_dashboard.py │ │ │ │ ├── leave_allocation_list.js │ │ │ │ ├── test_earned_leave_schedule.py │ │ │ │ ├── test_earned_leaves.py │ │ │ │ └── test_leave_allocation.py │ │ │ ├── leave_application/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_application.js │ │ │ │ ├── leave_application.json │ │ │ │ ├── leave_application.py │ │ │ │ ├── leave_application_calendar.js │ │ │ │ ├── leave_application_dashboard.html │ │ │ │ ├── leave_application_dashboard.py │ │ │ │ ├── leave_application_email_template.html │ │ │ │ ├── leave_application_list.js │ │ │ │ ├── test_leave_application.py │ │ │ │ └── test_records.json │ │ │ ├── leave_block_list/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_block_list.js │ │ │ │ ├── leave_block_list.json │ │ │ │ ├── leave_block_list.py │ │ │ │ ├── leave_block_list_dashboard.py │ │ │ │ ├── test_leave_block_list.py │ │ │ │ └── test_records.json │ │ │ ├── leave_block_list_allow/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_block_list_allow.json │ │ │ │ └── leave_block_list_allow.py │ │ │ ├── leave_block_list_date/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_block_list_date.json │ │ │ │ └── leave_block_list_date.py │ │ │ ├── leave_control_panel/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_control_panel.js │ │ │ │ ├── leave_control_panel.json │ │ │ │ ├── leave_control_panel.py │ │ │ │ └── test_leave_control_panel.py │ │ │ ├── leave_encashment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_encashment.js │ │ │ │ ├── leave_encashment.json │ │ │ │ ├── leave_encashment.py │ │ │ │ └── test_leave_encashment.py │ │ │ ├── leave_ledger_entry/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_ledger_entry.js │ │ │ │ ├── leave_ledger_entry.json │ │ │ │ ├── leave_ledger_entry.py │ │ │ │ ├── leave_ledger_entry_list.js │ │ │ │ └── test_leave_ledger_entry.py │ │ │ ├── leave_period/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_period.js │ │ │ │ ├── leave_period.json │ │ │ │ ├── leave_period.py │ │ │ │ ├── leave_period_dashboard.py │ │ │ │ └── test_leave_period.py │ │ │ ├── leave_policy/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_policy.js │ │ │ │ ├── leave_policy.json │ │ │ │ ├── leave_policy.py │ │ │ │ ├── leave_policy_dashboard.py │ │ │ │ └── test_leave_policy.py │ │ │ ├── leave_policy_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_policy_assignment.js │ │ │ │ ├── leave_policy_assignment.json │ │ │ │ ├── leave_policy_assignment.py │ │ │ │ ├── leave_policy_assignment_dashboard.py │ │ │ │ ├── leave_policy_assignment_list.js │ │ │ │ └── test_leave_policy_assignment.py │ │ │ ├── leave_policy_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_policy_detail.js │ │ │ │ ├── leave_policy_detail.json │ │ │ │ ├── leave_policy_detail.py │ │ │ │ └── test_leave_policy_detail.py │ │ │ ├── leave_type/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_type.js │ │ │ │ ├── leave_type.json │ │ │ │ ├── leave_type.py │ │ │ │ ├── leave_type_dashboard.py │ │ │ │ ├── test_leave_type.py │ │ │ │ └── test_records.json │ │ │ ├── offer_term/ │ │ │ │ ├── __init__.py │ │ │ │ ├── offer_term.js │ │ │ │ ├── offer_term.json │ │ │ │ ├── offer_term.py │ │ │ │ └── test_offer_term.py │ │ │ ├── overtime_details/ │ │ │ │ ├── __init__.py │ │ │ │ ├── overtime_details.json │ │ │ │ └── overtime_details.py │ │ │ ├── overtime_salary_component/ │ │ │ │ ├── __init__.py │ │ │ │ ├── overtime_salary_component.json │ │ │ │ └── overtime_salary_component.py │ │ │ ├── overtime_slip/ │ │ │ │ ├── __init__.py │ │ │ │ ├── overtime_slip.js │ │ │ │ ├── overtime_slip.json │ │ │ │ ├── overtime_slip.py │ │ │ │ └── test_overtime_slip.py │ │ │ ├── overtime_type/ │ │ │ │ ├── __init__.py │ │ │ │ ├── overtime_type.js │ │ │ │ ├── overtime_type.json │ │ │ │ ├── overtime_type.py │ │ │ │ └── test_overtime_type.py │ │ │ ├── purpose_of_travel/ │ │ │ │ ├── __init__.py │ │ │ │ ├── purpose_of_travel.js │ │ │ │ ├── purpose_of_travel.json │ │ │ │ ├── purpose_of_travel.py │ │ │ │ └── test_purpose_of_travel.py │ │ │ ├── pwa_notification/ │ │ │ │ ├── __init__.py │ │ │ │ ├── pwa_notification.js │ │ │ │ ├── pwa_notification.json │ │ │ │ ├── pwa_notification.py │ │ │ │ └── test_pwa_notification.py │ │ │ ├── shift_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_assignment.js │ │ │ │ ├── shift_assignment.json │ │ │ │ ├── shift_assignment.py │ │ │ │ ├── shift_assignment_calendar.js │ │ │ │ ├── shift_assignment_list.js │ │ │ │ └── test_shift_assignment.py │ │ │ ├── shift_assignment_tool/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_assignment_tool.js │ │ │ │ ├── shift_assignment_tool.json │ │ │ │ ├── shift_assignment_tool.py │ │ │ │ └── test_shift_assignment_tool.py │ │ │ ├── shift_location/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_location.js │ │ │ │ ├── shift_location.json │ │ │ │ ├── shift_location.py │ │ │ │ ├── shift_location_list.js │ │ │ │ └── test_shift_location.py │ │ │ ├── shift_request/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_request.js │ │ │ │ ├── shift_request.json │ │ │ │ ├── shift_request.py │ │ │ │ ├── shift_request_dashboard.py │ │ │ │ ├── shift_request_list.js │ │ │ │ └── test_shift_request.py │ │ │ ├── shift_schedule/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_schedule.js │ │ │ │ ├── shift_schedule.json │ │ │ │ ├── shift_schedule.py │ │ │ │ └── shift_schedule_list.js │ │ │ ├── shift_schedule_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_schedule_assignment.js │ │ │ │ ├── shift_schedule_assignment.json │ │ │ │ ├── shift_schedule_assignment.py │ │ │ │ ├── shift_schedule_assignment_list.js │ │ │ │ └── test_shift_schedule_assignment.py │ │ │ ├── shift_type/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_type.js │ │ │ │ ├── shift_type.json │ │ │ │ ├── shift_type.py │ │ │ │ ├── shift_type_dashboard.py │ │ │ │ ├── shift_type_list.js │ │ │ │ ├── test_records.json │ │ │ │ └── test_shift_type.py │ │ │ ├── skill/ │ │ │ │ ├── __init__.py │ │ │ │ ├── skill.js │ │ │ │ ├── skill.json │ │ │ │ └── skill.py │ │ │ ├── skill_assessment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── skill_assessment.json │ │ │ │ └── skill_assessment.py │ │ │ ├── staffing_plan/ │ │ │ │ ├── __init__.py │ │ │ │ ├── staffing_plan.js │ │ │ │ ├── staffing_plan.json │ │ │ │ ├── staffing_plan.py │ │ │ │ ├── staffing_plan_dashboard.py │ │ │ │ └── test_staffing_plan.py │ │ │ ├── staffing_plan_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── staffing_plan_detail.json │ │ │ │ └── staffing_plan_detail.py │ │ │ ├── training_event/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_training_event.py │ │ │ │ ├── training_event.js │ │ │ │ ├── training_event.json │ │ │ │ ├── training_event.py │ │ │ │ ├── training_event_calendar.js │ │ │ │ └── training_event_dashboard.py │ │ │ ├── training_event_employee/ │ │ │ │ ├── __init__.py │ │ │ │ ├── training_event_employee.json │ │ │ │ └── training_event_employee.py │ │ │ ├── training_feedback/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_training_feedback.py │ │ │ │ ├── training_feedback.js │ │ │ │ ├── training_feedback.json │ │ │ │ └── training_feedback.py │ │ │ ├── training_program/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_training_program.py │ │ │ │ ├── training_program.js │ │ │ │ ├── training_program.json │ │ │ │ ├── training_program.py │ │ │ │ └── training_program_dashboard.py │ │ │ ├── training_result/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_training_result.py │ │ │ │ ├── training_result.js │ │ │ │ ├── training_result.json │ │ │ │ └── training_result.py │ │ │ ├── training_result_employee/ │ │ │ │ ├── __init__.py │ │ │ │ ├── training_result_employee.json │ │ │ │ └── training_result_employee.py │ │ │ ├── travel_itinerary/ │ │ │ │ ├── __init__.py │ │ │ │ ├── travel_itinerary.json │ │ │ │ └── travel_itinerary.py │ │ │ ├── travel_request/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_travel_request.py │ │ │ │ ├── travel_request.js │ │ │ │ ├── travel_request.json │ │ │ │ └── travel_request.py │ │ │ ├── travel_request_costing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── travel_request_costing.json │ │ │ │ └── travel_request_costing.py │ │ │ ├── upload_attendance/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── test_upload_attendance.py │ │ │ │ ├── upload_attendance.js │ │ │ │ ├── upload_attendance.json │ │ │ │ └── upload_attendance.py │ │ │ ├── vehicle_log/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_vehicle_log.py │ │ │ │ ├── vehicle_log.js │ │ │ │ ├── vehicle_log.json │ │ │ │ └── vehicle_log.py │ │ │ ├── vehicle_service/ │ │ │ │ ├── __init__.py │ │ │ │ ├── vehicle_service.json │ │ │ │ └── vehicle_service.py │ │ │ └── vehicle_service_item/ │ │ │ ├── __init__.py │ │ │ ├── test_vehicle_service_item.py │ │ │ ├── vehicle_service_item.js │ │ │ ├── vehicle_service_item.json │ │ │ └── vehicle_service_item.py │ │ ├── employee_property_update.js │ │ ├── hr_dashboard/ │ │ │ ├── attendance/ │ │ │ │ └── attendance.json │ │ │ ├── employee_lifecycle/ │ │ │ │ └── employee_lifecycle.json │ │ │ ├── expense_claims/ │ │ │ │ └── expense_claims.json │ │ │ ├── human_resource/ │ │ │ │ └── human_resource.json │ │ │ └── recruitment/ │ │ │ └── recruitment.json │ │ ├── notification/ │ │ │ ├── __init__.py │ │ │ ├── exit_interview_scheduled/ │ │ │ │ ├── __init__.py │ │ │ │ ├── exit_interview_scheduled.json │ │ │ │ ├── exit_interview_scheduled.md │ │ │ │ └── exit_interview_scheduled.py │ │ │ ├── training_feedback/ │ │ │ │ ├── __init__.py │ │ │ │ ├── training_feedback.html │ │ │ │ ├── training_feedback.json │ │ │ │ ├── training_feedback.md │ │ │ │ └── training_feedback.py │ │ │ └── training_scheduled/ │ │ │ ├── __init__.py │ │ │ ├── training_scheduled.html │ │ │ ├── training_scheduled.json │ │ │ ├── training_scheduled.md │ │ │ └── training_scheduled.py │ │ ├── number_card/ │ │ │ ├── accepted_job_applicants/ │ │ │ │ └── accepted_job_applicants.json │ │ │ ├── applicant_to_hire_percentage/ │ │ │ │ └── applicant_to_hire_percentage.json │ │ │ ├── approved_claims_(this_month)/ │ │ │ │ └── approved_claims_(this_month).json │ │ │ ├── early_exit_(this_month)/ │ │ │ │ └── early_exit_(this_month).json │ │ │ ├── employee_exits_(this_year)/ │ │ │ │ └── employee_exits_(this_year).json │ │ │ ├── employees_joining_(this_quarter)/ │ │ │ │ └── employees_joining_(this_quarter).json │ │ │ ├── employees_relieving_(this_quarter)/ │ │ │ │ └── employees_relieving_(this_quarter).json │ │ │ ├── expense_claims_(this_month)/ │ │ │ │ └── expense_claims_(this_month).json │ │ │ ├── holidays_in_this_month/ │ │ │ │ └── holidays_in_this_month.json │ │ │ ├── job_offer_acceptance_rate/ │ │ │ │ └── job_offer_acceptance_rate.json │ │ │ ├── job_offers_(this_month)/ │ │ │ │ └── job_offers_(this_month).json │ │ │ ├── job_openings/ │ │ │ │ └── job_openings.json │ │ │ ├── late_entry_(this_month)/ │ │ │ │ └── late_entry_(this_month).json │ │ │ ├── new_hires_(this_year)/ │ │ │ │ └── new_hires_(this_year).json │ │ │ ├── number_of_employees_on_leave_(this_month)/ │ │ │ │ └── number_of_employees_on_leave_(this_month).json │ │ │ ├── number_of_employees_on_leave_(today)/ │ │ │ │ └── number_of_employees_on_leave_(today).json │ │ │ ├── onboardings_(this_month)/ │ │ │ │ └── onboardings_(this_month).json │ │ │ ├── promotions_(this_month)/ │ │ │ │ └── promotions_(this_month).json │ │ │ ├── rejected_claims_(this_month)/ │ │ │ │ └── rejected_claims_(this_month).json │ │ │ ├── rejected_job_applicants/ │ │ │ │ └── rejected_job_applicants.json │ │ │ ├── separations_(this_month)/ │ │ │ │ └── separations_(this_month).json │ │ │ ├── time_to_fill/ │ │ │ │ └── time_to_fill.json │ │ │ ├── total_absent_(this_month)/ │ │ │ │ └── total_absent_(this_month).json │ │ │ ├── total_applicants_(this_month)/ │ │ │ │ └── total_applicants_(this_month).json │ │ │ ├── total_employees/ │ │ │ │ └── total_employees.json │ │ │ ├── total_present_(this_month)/ │ │ │ │ └── total_present_(this_month).json │ │ │ ├── trainings_(this_month)/ │ │ │ │ └── trainings_(this_month).json │ │ │ └── transfers_(this_month)/ │ │ │ └── transfers_(this_month).json │ │ ├── page/ │ │ │ ├── __init__.py │ │ │ ├── organizational_chart/ │ │ │ │ ├── __init__.py │ │ │ │ ├── organizational_chart.js │ │ │ │ ├── organizational_chart.json │ │ │ │ ├── organizational_chart.py │ │ │ │ └── test_organizational_chart.py │ │ │ └── team_updates/ │ │ │ ├── __init__.py │ │ │ ├── team_update_row.html │ │ │ ├── team_updates.css │ │ │ ├── team_updates.js │ │ │ ├── team_updates.json │ │ │ └── team_updates.py │ │ ├── print_format/ │ │ │ ├── __init__.py │ │ │ ├── job_offer/ │ │ │ │ ├── __init__.py │ │ │ │ └── job_offer.json │ │ │ └── standard_appointment_letter/ │ │ │ ├── __init__.py │ │ │ ├── standard_appointment_letter.html │ │ │ └── standard_appointment_letter.json │ │ ├── report/ │ │ │ ├── __init__.py │ │ │ ├── appraisal_overview/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appraisal_overview.js │ │ │ │ ├── appraisal_overview.json │ │ │ │ ├── appraisal_overview.py │ │ │ │ └── test_appraisal_overview.py │ │ │ ├── daily_work_summary_replies/ │ │ │ │ ├── __init__.py │ │ │ │ ├── daily_work_summary_replies.js │ │ │ │ ├── daily_work_summary_replies.json │ │ │ │ └── daily_work_summary_replies.py │ │ │ ├── employee_advance_summary/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_advance_summary.js │ │ │ │ ├── employee_advance_summary.json │ │ │ │ └── employee_advance_summary.py │ │ │ ├── employee_analytics/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_analytics.js │ │ │ │ ├── employee_analytics.json │ │ │ │ ├── employee_analytics.py │ │ │ │ └── test_employee_analytics.py │ │ │ ├── employee_birthday/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_birthday.js │ │ │ │ ├── employee_birthday.json │ │ │ │ ├── employee_birthday.py │ │ │ │ └── test_employee_birthday.py │ │ │ ├── employee_exits/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_exits.js │ │ │ │ ├── employee_exits.json │ │ │ │ ├── employee_exits.py │ │ │ │ └── test_employee_exits.py │ │ │ ├── employee_hours_utilization_based_on_timesheet/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_hours_utilization_based_on_timesheet.js │ │ │ │ ├── employee_hours_utilization_based_on_timesheet.json │ │ │ │ ├── employee_hours_utilization_based_on_timesheet.py │ │ │ │ └── test_employee_util.py │ │ │ ├── employee_information/ │ │ │ │ ├── __init__.py │ │ │ │ └── employee_information.json │ │ │ ├── employee_leave_balance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_leave_balance.js │ │ │ │ ├── employee_leave_balance.json │ │ │ │ ├── employee_leave_balance.py │ │ │ │ └── test_employee_leave_balance.py │ │ │ ├── employee_leave_balance_summary/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_leave_balance_summary.js │ │ │ │ ├── employee_leave_balance_summary.json │ │ │ │ ├── employee_leave_balance_summary.py │ │ │ │ └── test_employee_leave_balance_summary.py │ │ │ ├── employees_working_on_a_holiday/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employees_working_on_a_holiday.js │ │ │ │ ├── employees_working_on_a_holiday.json │ │ │ │ ├── employees_working_on_a_holiday.py │ │ │ │ └── test_employees_working_on_a_holiday.py │ │ │ ├── leave_ledger/ │ │ │ │ ├── __init__.py │ │ │ │ ├── leave_ledger.js │ │ │ │ ├── leave_ledger.json │ │ │ │ ├── leave_ledger.py │ │ │ │ └── test_leave_ledger.py │ │ │ ├── monthly_attendance_sheet/ │ │ │ │ ├── __init__.py │ │ │ │ ├── monthly_attendance_sheet.js │ │ │ │ ├── monthly_attendance_sheet.json │ │ │ │ ├── monthly_attendance_sheet.py │ │ │ │ └── test_monthly_attendance_sheet.py │ │ │ ├── project_profitability/ │ │ │ │ ├── __init__.py │ │ │ │ ├── project_profitability.js │ │ │ │ ├── project_profitability.json │ │ │ │ ├── project_profitability.py │ │ │ │ └── test_project_profitability.py │ │ │ ├── recruitment_analytics/ │ │ │ │ ├── __init__.py │ │ │ │ ├── recruitment_analytics.js │ │ │ │ ├── recruitment_analytics.json │ │ │ │ └── recruitment_analytics.py │ │ │ ├── shift_attendance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── shift_attendance.js │ │ │ │ ├── shift_attendance.json │ │ │ │ ├── shift_attendance.py │ │ │ │ └── test_shift_attendance.py │ │ │ ├── unpaid_expense_claim/ │ │ │ │ ├── __init__.py │ │ │ │ ├── unpaid_expense_claim.js │ │ │ │ ├── unpaid_expense_claim.json │ │ │ │ └── unpaid_expense_claim.py │ │ │ └── vehicle_expenses/ │ │ │ ├── __init__.py │ │ │ ├── test_vehicle_expenses.py │ │ │ ├── vehicle_expenses.js │ │ │ ├── vehicle_expenses.json │ │ │ └── vehicle_expenses.py │ │ ├── utils.py │ │ ├── web_form/ │ │ │ ├── __init__.py │ │ │ └── job_application/ │ │ │ ├── __init__.py │ │ │ ├── job_application.js │ │ │ ├── job_application.json │ │ │ └── job_application.py │ │ └── workspace/ │ │ ├── expenses/ │ │ │ └── expenses.json │ │ ├── leaves/ │ │ │ └── leaves.json │ │ ├── people/ │ │ │ └── people.json │ │ ├── performance/ │ │ │ └── performance.json │ │ ├── recruitment/ │ │ │ └── recruitment.json │ │ ├── shift_&_attendance/ │ │ │ └── shift_&_attendance.json │ │ └── tenure/ │ │ └── tenure.json │ ├── install.py │ ├── locale/ │ │ ├── af.po │ │ ├── ar.po │ │ ├── bs.po │ │ ├── cs.po │ │ ├── da.po │ │ ├── de.po │ │ ├── eo.po │ │ ├── es.po │ │ ├── fa.po │ │ ├── fi.po │ │ ├── fr.po │ │ ├── hr.po │ │ ├── hu.po │ │ ├── id.po │ │ ├── it.po │ │ ├── main.pot │ │ ├── my.po │ │ ├── nb.po │ │ ├── nl.po │ │ ├── pl.po │ │ ├── pt.po │ │ ├── pt_BR.po │ │ ├── ru.po │ │ ├── sl.po │ │ ├── sr.po │ │ ├── sr_CS.po │ │ ├── sv.po │ │ ├── ta.po │ │ ├── th.po │ │ ├── tr.po │ │ ├── vi.po │ │ ├── zh.po │ │ └── zh_TW.po │ ├── mixins/ │ │ ├── appraisal.py │ │ └── pwa_notifications.py │ ├── modules.txt │ ├── overrides/ │ │ ├── company.py │ │ ├── dashboard_overrides.py │ │ ├── employee_master.py │ │ ├── employee_payment_entry.py │ │ ├── employee_project.py │ │ └── employee_timesheet.py │ ├── patches/ │ │ ├── post_install/ │ │ │ ├── create_country_fixtures.py │ │ │ ├── delete_employee_transfer_property_doctype.py │ │ │ ├── move_doctype_reports_and_notification_from_hr_to_payroll.py │ │ │ ├── move_payroll_setting_separately_from_hr_settings.py │ │ │ ├── move_tax_slabs_from_payroll_period_to_income_tax_slab.py │ │ │ ├── rename_stop_to_send_birthday_reminders.py │ │ │ ├── set_company_in_leave_ledger_entry.py │ │ │ ├── set_department_for_doctypes.py │ │ │ ├── set_payroll_cost_centers.py │ │ │ ├── set_payroll_entry_status.py │ │ │ ├── set_training_event_attendance.py │ │ │ ├── update_allocate_on_in_leave_type.py │ │ │ ├── update_employee_advance_status.py │ │ │ ├── update_expense_claim_status_for_paid_advances.py │ │ │ ├── update_performance_module_changes.py │ │ │ ├── update_reason_for_resignation_in_employee.py │ │ │ ├── update_start_end_date_for_old_shift_assignment.py │ │ │ └── updates_for_multi_currency_payroll.py │ │ ├── v14_0/ │ │ │ ├── add_expense_claim_to_repost_settings.py │ │ │ ├── create_custom_field_for_appraisal_template.py │ │ │ ├── create_custom_field_in_loan.py │ │ │ ├── create_marginal_relief_field_for_india_localisation.py │ │ │ ├── create_vehicle_service_item.py │ │ │ ├── update_ess_user_access.py │ │ │ ├── update_loan_repayment_repay_from_salary.py │ │ │ ├── update_payroll_frequency_to_none_if_salary_slip_is_based_on_timesheet.py │ │ │ ├── update_repay_from_salary_and_payroll_payable_account_fields.py │ │ │ └── update_title_in_employee_onboarding_and_separation_templates.py │ │ ├── v15_0/ │ │ │ ├── add_leave_type_permission_for_ess.py │ │ │ ├── add_loan_docperms_to_ess.py │ │ │ ├── call_set_total_advance_paid_on_advance_documents.py │ │ │ ├── check_version_compatibility_with_frappe.py │ │ │ ├── create_accounting_dimensions_in_leave_encashment.py │ │ │ ├── create_marginal_relief_field_for_india_localisation.py │ │ │ ├── enable_allow_checkin_setting.py │ │ │ ├── fix_timesheet_status.py │ │ │ ├── make_hr_settings_tab_in_company_master.py │ │ │ ├── migrate_loan_type_to_loan_product.py │ │ │ ├── migrate_shift_assignment_schedule_to_shift_schedule.py │ │ │ ├── notify_about_loan_app_separation.py │ │ │ ├── rename_and_update_leave_encashment_fields.py │ │ │ ├── rename_claim_date_to_payroll_date_in_employee_benefit_claim.py │ │ │ ├── rename_enable_late_entry_early_exit_grace_period.py │ │ │ ├── set_default_asset_action_in_fnf.py │ │ │ ├── set_half_day_status_to_present_in_exisiting_half_day_attendance.py │ │ │ ├── update_advance_payment_ledger_amount.py │ │ │ └── update_payment_status_for_leave_encashment.py │ │ ├── v16_0/ │ │ │ ├── create_custom_field_for_employee_advance_in_employee_master.py │ │ │ ├── create_holiday_list_assignments.py │ │ │ ├── delete_old_workspaces.py │ │ │ ├── set_base_paid_amount_in_employee_advance.py │ │ │ └── set_currency_and_base_fields_in_expense_claim.py │ │ └── v1_0/ │ │ └── rearrange_employee_fields.py │ ├── patches.txt │ ├── payroll/ │ │ ├── __init__.py │ │ ├── dashboard_chart/ │ │ │ ├── department_wise_salary(last_month)/ │ │ │ │ └── department_wise_salary(last_month).json │ │ │ ├── designation_wise_salary(last_month)/ │ │ │ │ └── designation_wise_salary(last_month).json │ │ │ └── outgoing_salary/ │ │ │ └── outgoing_salary.json │ │ ├── data/ │ │ │ └── salary_components.json │ │ ├── doctype/ │ │ │ ├── __init__.py │ │ │ ├── additional_salary/ │ │ │ │ ├── __init__.py │ │ │ │ ├── additional_salary.js │ │ │ │ ├── additional_salary.json │ │ │ │ ├── additional_salary.py │ │ │ │ └── test_additional_salary.py │ │ │ ├── arrear/ │ │ │ │ ├── __init__.py │ │ │ │ ├── arrear.js │ │ │ │ ├── arrear.json │ │ │ │ ├── arrear.py │ │ │ │ └── test_arrear.py │ │ │ ├── bulk_salary_structure_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── bulk_salary_structure_assignment.js │ │ │ │ ├── bulk_salary_structure_assignment.json │ │ │ │ ├── bulk_salary_structure_assignment.py │ │ │ │ └── test_bulk_salary_structure_assignment.py │ │ │ ├── employee_benefit_application/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_benefit_application.js │ │ │ │ ├── employee_benefit_application.json │ │ │ │ ├── employee_benefit_application.py │ │ │ │ └── test_employee_benefit_application.py │ │ │ ├── employee_benefit_application_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_benefit_application_detail.json │ │ │ │ └── employee_benefit_application_detail.py │ │ │ ├── employee_benefit_claim/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_benefit_claim.js │ │ │ │ ├── employee_benefit_claim.json │ │ │ │ ├── employee_benefit_claim.py │ │ │ │ └── test_employee_benefit_claim.py │ │ │ ├── employee_benefit_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_benefit_detail.json │ │ │ │ └── employee_benefit_detail.py │ │ │ ├── employee_benefit_ledger/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_benefit_ledger.js │ │ │ │ ├── employee_benefit_ledger.json │ │ │ │ ├── employee_benefit_ledger.py │ │ │ │ └── employee_benefit_ledger_list.js │ │ │ ├── employee_cost_center/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_cost_center.json │ │ │ │ └── employee_cost_center.py │ │ │ ├── employee_incentive/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_incentive.js │ │ │ │ ├── employee_incentive.json │ │ │ │ ├── employee_incentive.py │ │ │ │ └── test_employee_incentive.py │ │ │ ├── employee_other_income/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_other_income.js │ │ │ │ ├── employee_other_income.json │ │ │ │ ├── employee_other_income.py │ │ │ │ └── test_employee_other_income.py │ │ │ ├── employee_tax_exemption_category/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_category.js │ │ │ │ ├── employee_tax_exemption_category.json │ │ │ │ ├── employee_tax_exemption_category.py │ │ │ │ └── test_employee_tax_exemption_category.py │ │ │ ├── employee_tax_exemption_declaration/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_declaration.js │ │ │ │ ├── employee_tax_exemption_declaration.json │ │ │ │ ├── employee_tax_exemption_declaration.py │ │ │ │ └── test_employee_tax_exemption_declaration.py │ │ │ ├── employee_tax_exemption_declaration_category/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_declaration_category.json │ │ │ │ └── employee_tax_exemption_declaration_category.py │ │ │ ├── employee_tax_exemption_proof_submission/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_proof_submission.js │ │ │ │ ├── employee_tax_exemption_proof_submission.json │ │ │ │ ├── employee_tax_exemption_proof_submission.py │ │ │ │ └── test_employee_tax_exemption_proof_submission.py │ │ │ ├── employee_tax_exemption_proof_submission_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_proof_submission_detail.json │ │ │ │ └── employee_tax_exemption_proof_submission_detail.py │ │ │ ├── employee_tax_exemption_sub_category/ │ │ │ │ ├── __init__.py │ │ │ │ ├── employee_tax_exemption_sub_category.js │ │ │ │ ├── employee_tax_exemption_sub_category.json │ │ │ │ ├── employee_tax_exemption_sub_category.py │ │ │ │ └── test_employee_tax_exemption_sub_category.py │ │ │ ├── gratuity/ │ │ │ │ ├── __init__.py │ │ │ │ ├── gratuity.js │ │ │ │ ├── gratuity.json │ │ │ │ ├── gratuity.py │ │ │ │ ├── gratuity_dashboard.py │ │ │ │ ├── gratuity_list.js │ │ │ │ └── test_gratuity.py │ │ │ ├── gratuity_applicable_component/ │ │ │ │ ├── __init__.py │ │ │ │ ├── gratuity_applicable_component.json │ │ │ │ └── gratuity_applicable_component.py │ │ │ ├── gratuity_rule/ │ │ │ │ ├── __init__.py │ │ │ │ ├── gratuity_rule.js │ │ │ │ ├── gratuity_rule.json │ │ │ │ ├── gratuity_rule.py │ │ │ │ ├── gratuity_rule_dashboard.py │ │ │ │ └── test_gratuity_rule.py │ │ │ ├── gratuity_rule_slab/ │ │ │ │ ├── __init__.py │ │ │ │ ├── gratuity_rule_slab.json │ │ │ │ └── gratuity_rule_slab.py │ │ │ ├── income_tax_slab/ │ │ │ │ ├── __init__.py │ │ │ │ ├── income_tax_slab.js │ │ │ │ ├── income_tax_slab.json │ │ │ │ ├── income_tax_slab.py │ │ │ │ └── test_income_tax_slab.py │ │ │ ├── income_tax_slab_other_charges/ │ │ │ │ ├── __init__.py │ │ │ │ ├── income_tax_slab_other_charges.json │ │ │ │ └── income_tax_slab_other_charges.py │ │ │ ├── payroll_correction/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_correction.js │ │ │ │ ├── payroll_correction.json │ │ │ │ ├── payroll_correction.py │ │ │ │ └── test_payroll_correction.py │ │ │ ├── payroll_correction_child/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_correction_child.json │ │ │ │ └── payroll_correction_child.py │ │ │ ├── payroll_employee_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_employee_detail.json │ │ │ │ └── payroll_employee_detail.py │ │ │ ├── payroll_entry/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_entry.js │ │ │ │ ├── payroll_entry.json │ │ │ │ ├── payroll_entry.py │ │ │ │ ├── payroll_entry_dashboard.py │ │ │ │ ├── payroll_entry_list.js │ │ │ │ └── test_payroll_entry.py │ │ │ ├── payroll_period/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_period.js │ │ │ │ ├── payroll_period.json │ │ │ │ ├── payroll_period.py │ │ │ │ ├── payroll_period_dashboard.py │ │ │ │ └── test_payroll_period.py │ │ │ ├── payroll_period_date/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_period_date.json │ │ │ │ └── payroll_period_date.py │ │ │ ├── payroll_settings/ │ │ │ │ ├── __init__.py │ │ │ │ ├── payroll_settings.js │ │ │ │ ├── payroll_settings.json │ │ │ │ ├── payroll_settings.py │ │ │ │ └── test_payroll_settings.py │ │ │ ├── retention_bonus/ │ │ │ │ ├── __init__.py │ │ │ │ ├── retention_bonus.js │ │ │ │ ├── retention_bonus.json │ │ │ │ ├── retention_bonus.py │ │ │ │ └── test_retention_bonus.py │ │ │ ├── salary_component/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_component.js │ │ │ │ ├── salary_component.json │ │ │ │ ├── salary_component.py │ │ │ │ ├── test_records.json │ │ │ │ └── test_salary_component.py │ │ │ ├── salary_component_account/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_component_account.json │ │ │ │ └── salary_component_account.py │ │ │ ├── salary_detail/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_detail.json │ │ │ │ └── salary_detail.py │ │ │ ├── salary_slip/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_slip.js │ │ │ │ ├── salary_slip.json │ │ │ │ ├── salary_slip.py │ │ │ │ ├── salary_slip_list.js │ │ │ │ ├── salary_slip_loan_utils.py │ │ │ │ └── test_salary_slip.py │ │ │ ├── salary_slip_leave/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_slip_leave.json │ │ │ │ └── salary_slip_leave.py │ │ │ ├── salary_slip_loan/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_slip_loan.json │ │ │ │ └── salary_slip_loan.py │ │ │ ├── salary_slip_timesheet/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_slip_timesheet.json │ │ │ │ └── salary_slip_timesheet.py │ │ │ ├── salary_structure/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── condition_and_formula_help.html │ │ │ │ ├── salary_structure.js │ │ │ │ ├── salary_structure.json │ │ │ │ ├── salary_structure.py │ │ │ │ ├── salary_structure_dashboard.py │ │ │ │ ├── salary_structure_list.js │ │ │ │ └── test_salary_structure.py │ │ │ ├── salary_structure_assignment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_structure_assignment.js │ │ │ │ ├── salary_structure_assignment.json │ │ │ │ ├── salary_structure_assignment.py │ │ │ │ └── test_salary_structure_assignment.py │ │ │ ├── salary_withholding/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_withholding.js │ │ │ │ ├── salary_withholding.json │ │ │ │ ├── salary_withholding.py │ │ │ │ └── test_salary_withholding.py │ │ │ ├── salary_withholding_cycle/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_withholding_cycle.json │ │ │ │ └── salary_withholding_cycle.py │ │ │ └── taxable_salary_slab/ │ │ │ ├── __init__.py │ │ │ ├── taxable_salary_slab.json │ │ │ └── taxable_salary_slab.py │ │ ├── notification/ │ │ │ ├── as │ │ │ └── retention_bonus/ │ │ │ ├── __init__.py │ │ │ ├── retention_bonus.json │ │ │ ├── retention_bonus.md │ │ │ └── retention_bonus.py │ │ ├── number_card/ │ │ │ ├── total_declaration_submitted/ │ │ │ │ └── total_declaration_submitted.json │ │ │ ├── total_incentive_given(last_month)/ │ │ │ │ └── total_incentive_given(last_month).json │ │ │ ├── total_outgoing_salary(last_month)/ │ │ │ │ └── total_outgoing_salary(last_month).json │ │ │ └── total_salary_structure/ │ │ │ └── total_salary_structure.json │ │ ├── payroll_dashboard/ │ │ │ └── payroll/ │ │ │ └── payroll.json │ │ ├── print_format/ │ │ │ ├── __init__.py │ │ │ ├── salary_slip_based_on_timesheet/ │ │ │ │ ├── __init__.py │ │ │ │ └── salary_slip_based_on_timesheet.json │ │ │ ├── salary_slip_standard/ │ │ │ │ ├── __init__.py │ │ │ │ └── salary_slip_standard.json │ │ │ └── salary_slip_with_year_to_date/ │ │ │ ├── __init__.py │ │ │ └── salary_slip_with_year_to_date.json │ │ ├── report/ │ │ │ ├── __init__.py │ │ │ ├── accrued_earnings_report/ │ │ │ │ ├── __init__.py │ │ │ │ ├── accrued_earnings_report.js │ │ │ │ ├── accrued_earnings_report.json │ │ │ │ └── accrued_earnings_report.py │ │ │ ├── bank_remittance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── bank_remittance.js │ │ │ │ ├── bank_remittance.json │ │ │ │ └── bank_remittance.py │ │ │ ├── income_tax_computation/ │ │ │ │ ├── __init__.py │ │ │ │ ├── income_tax_computation.js │ │ │ │ ├── income_tax_computation.json │ │ │ │ ├── income_tax_computation.py │ │ │ │ └── test_income_tax_computation.py │ │ │ ├── income_tax_deductions/ │ │ │ │ ├── __init__.py │ │ │ │ ├── income_tax_deductions.js │ │ │ │ ├── income_tax_deductions.json │ │ │ │ ├── income_tax_deductions.py │ │ │ │ └── test_income_tax_deductions.py │ │ │ ├── professional_tax_deductions/ │ │ │ │ ├── __init__.py │ │ │ │ ├── professional_tax_deductions.js │ │ │ │ ├── professional_tax_deductions.json │ │ │ │ └── professional_tax_deductions.py │ │ │ ├── provident_fund_deductions/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provident_fund_deductions.js │ │ │ │ ├── provident_fund_deductions.json │ │ │ │ └── provident_fund_deductions.py │ │ │ ├── salary_payments_based_on_payment_mode/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_payments_based_on_payment_mode.js │ │ │ │ ├── salary_payments_based_on_payment_mode.json │ │ │ │ └── salary_payments_based_on_payment_mode.py │ │ │ ├── salary_payments_via_ecs/ │ │ │ │ ├── __init__.py │ │ │ │ ├── salary_payments_via_ecs.js │ │ │ │ ├── salary_payments_via_ecs.json │ │ │ │ └── salary_payments_via_ecs.py │ │ │ └── salary_register/ │ │ │ ├── __init__.py │ │ │ ├── salary_register.html │ │ │ ├── salary_register.js │ │ │ ├── salary_register.json │ │ │ └── salary_register.py │ │ ├── utils.py │ │ └── workspace/ │ │ ├── payroll/ │ │ │ └── payroll.json │ │ └── tax_&_benefits/ │ │ └── tax_&_benefits.json │ ├── public/ │ │ ├── .gitkeep │ │ ├── build.json │ │ ├── js/ │ │ │ ├── erpnext/ │ │ │ │ ├── bank_transaction.js │ │ │ │ ├── company.js │ │ │ │ ├── delivery_trip.js │ │ │ │ ├── department.js │ │ │ │ ├── employee.js │ │ │ │ ├── journal_entry.js │ │ │ │ ├── payment_entry.js │ │ │ │ └── timesheet.js │ │ │ ├── hierarchy-chart.bundle.js │ │ │ ├── hierarchy_chart/ │ │ │ │ ├── hierarchy_chart_desktop.js │ │ │ │ └── hierarchy_chart_mobile.js │ │ │ ├── hrms.bundle.js │ │ │ ├── interview.bundle.js │ │ │ ├── performance/ │ │ │ │ └── performance_feedback.js │ │ │ ├── performance.bundle.js │ │ │ ├── salary_slip_deductions_report_filters.js │ │ │ ├── templates/ │ │ │ │ ├── circular_progress_bar.html │ │ │ │ ├── employees_with_unmarked_attendance.html │ │ │ │ ├── feedback_history.html │ │ │ │ ├── feedback_summary.html │ │ │ │ ├── interview_feedback.html │ │ │ │ ├── node_card.html │ │ │ │ ├── performance_feedback.html │ │ │ │ └── rating.html │ │ │ └── utils/ │ │ │ ├── index.js │ │ │ ├── leave_utils.js │ │ │ └── payroll_utils.js │ │ └── scss/ │ │ ├── circular_progress.scss │ │ ├── feedback.scss │ │ ├── hierarchy_chart.scss │ │ └── hrms.bundle.scss │ ├── regional/ │ │ ├── india/ │ │ │ ├── data/ │ │ │ │ └── salary_components.json │ │ │ ├── setup.py │ │ │ └── utils.py │ │ └── united_arab_emirates/ │ │ └── setup.py │ ├── setup.py │ ├── subscription_utils.py │ ├── templates/ │ │ ├── __init__.py │ │ ├── emails/ │ │ │ ├── anniversary_reminder.html │ │ │ ├── birthday_reminder.html │ │ │ ├── daily_work_summary.html │ │ │ ├── daily_work_summary.txt │ │ │ ├── holiday_reminder.html │ │ │ └── training_event.html │ │ ├── generators/ │ │ │ └── job_opening.html │ │ ├── includes/ │ │ │ └── salary_slip_log.html │ │ └── pages/ │ │ └── __init__.py │ ├── tests/ │ │ ├── test_utils.py │ │ └── utils.py │ ├── uninstall.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── custom_method_for_charts.py │ │ ├── hierarchy_chart.py │ │ └── holiday_list.py │ ├── workspace_sidebar/ │ │ ├── expenses.json │ │ ├── leaves.json │ │ ├── payroll.json │ │ ├── people.json │ │ ├── performance.json │ │ ├── recruitment.json │ │ ├── shift_&_attendance.json │ │ ├── tax_&_benefits.json │ │ └── tenure.json │ └── www/ │ ├── __init__.py │ ├── hrms.py │ ├── jobs/ │ │ ├── __init__.py │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ └── index.py │ └── roster.py ├── license.txt ├── package.json ├── pyproject.toml └── roster/ ├── .gitignore ├── index.d.ts ├── index.html ├── package.json ├── postcss.config.js ├── src/ │ ├── App.vue │ ├── components/ │ │ ├── Link.vue │ │ ├── MonthViewHeader.vue │ │ ├── MonthViewTable.vue │ │ ├── NavBar.vue │ │ └── ShiftAssignmentDialog.vue │ ├── icons/ │ │ └── FrappeHRLogo.vue │ ├── index.css │ ├── main.ts │ ├── router.ts │ ├── utils/ │ │ ├── dayjs.ts │ │ └── index.ts │ └── views/ │ ├── Home.vue │ └── MonthView.vue ├── tailwind.config.js ├── tsconfig.json └── vite.config.js