├── .editorconfig ├── .git-blame-ignore-revs ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.yaml │ ├── config.yml │ └── feature_request.yaml ├── PULL_REQUEST_TEMPLATE.md ├── frappe-hr-logo.png ├── frappe-hr-old-logo.png ├── helper │ ├── apps.json │ ├── documentation.py │ ├── install.sh │ ├── site_config.json │ ├── translation.py │ └── update_pot_file.sh ├── hrms-appraisal.png ├── hrms-attendance.png ├── hrms-hero.png ├── hrms-pwa.png ├── hrms-requisition.png ├── hrms-salary.png ├── labeler.yml ├── try-on-f-cloud-button.svg └── 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 ├── .gitignore ├── .gitmodules ├── .mergify.yml ├── .pre-commit-config.yaml ├── .releaserc ├── .semgrepignore ├── CODE_OF_CONDUCT.md ├── MANIFEST.in ├── README.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 │ ├── favicon.png │ ├── 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 │ │ ├── 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 └── yarn.lock ├── hrms.png ├── hrms ├── __init__.py ├── api │ ├── __init__.py │ ├── oauth.py │ └── roster.py ├── config │ ├── __init__.py │ ├── desktop.py │ └── docs.py ├── controllers │ ├── employee_boarding_controller.py │ ├── employee_reminders.py │ └── tests │ │ └── test_employee_reminders.py ├── hooks.py ├── hr │ ├── README.md │ ├── __init__.py │ ├── dashboard_chart │ │ ├── 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 │ │ ├── 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 │ │ ├── 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_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_allocation │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── leave_allocation.js │ │ │ ├── leave_allocation.json │ │ │ ├── leave_allocation.py │ │ │ ├── leave_allocation_dashboard.py │ │ │ ├── leave_allocation_list.js │ │ │ ├── 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 │ │ ├── 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 │ │ │ └── test_shift_schedule.py │ │ ├── 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 │ │ ├── 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 │ │ ├── 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 │ │ ├── employee_birthday │ │ │ ├── __init__.py │ │ │ ├── employee_birthday.js │ │ │ ├── employee_birthday.json │ │ │ └── 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 │ │ ├── employee_lifecycle │ │ └── employee_lifecycle.json │ │ ├── expense_claims │ │ └── expense_claims.json │ │ ├── leaves │ │ └── leaves.json │ │ ├── overview │ │ └── overview.json │ │ ├── performance │ │ └── performance.json │ │ ├── recruitment │ │ └── recruitment.json │ │ └── shift_&_attendance │ │ └── shift_&_attendance.json ├── hrms.png ├── install.py ├── locale │ ├── af.po │ ├── ar.po │ ├── bs.po │ ├── de.po │ ├── eo.po │ ├── es.po │ ├── fa.po │ ├── fi.po │ ├── fr.po │ ├── hr.po │ ├── hu.po │ ├── id.po │ ├── it.po │ ├── main.pot │ ├── nl.po │ ├── pl.po │ ├── pt.po │ ├── pt_BR.po │ ├── ru.po │ ├── sr_CS.po │ ├── sv.po │ ├── sv_SE.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.txt ├── 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_loan_docperms_to_ess.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 │ │ ├── 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_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_payment_status_for_leave_encashment.py │ └── v1_0 │ │ └── rearrange_employee_fields.py ├── 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 │ │ ├── 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_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_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 │ │ ├── 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 │ │ ├── salary_payout │ │ └── salary_payout.json │ │ └── tax_&_benefits │ │ └── tax_&_benefits.json ├── public │ ├── .gitkeep │ ├── build.json │ ├── images │ │ ├── frappe-hr-logo.png │ │ └── frappe-hr-logo.svg │ ├── 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.bundle.js │ │ ├── performance │ │ │ └── performance_feedback.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 │ ├── manifest │ │ ├── apple-icon-180.png │ │ ├── apple-splash-1125-2436.jpg │ │ ├── apple-splash-1136-640.jpg │ │ ├── apple-splash-1170-2532.jpg │ │ ├── apple-splash-1179-2556.jpg │ │ ├── apple-splash-1242-2208.jpg │ │ ├── apple-splash-1242-2688.jpg │ │ ├── apple-splash-1284-2778.jpg │ │ ├── apple-splash-1290-2796.jpg │ │ ├── apple-splash-1334-750.jpg │ │ ├── apple-splash-1536-2048.jpg │ │ ├── apple-splash-1620-2160.jpg │ │ ├── apple-splash-1668-2224.jpg │ │ ├── apple-splash-1668-2388.jpg │ │ ├── apple-splash-1792-828.jpg │ │ ├── apple-splash-2048-1536.jpg │ │ ├── apple-splash-2048-2732.jpg │ │ ├── apple-splash-2160-1620.jpg │ │ ├── apple-splash-2208-1242.jpg │ │ ├── apple-splash-2224-1668.jpg │ │ ├── apple-splash-2388-1668.jpg │ │ ├── apple-splash-2436-1125.jpg │ │ ├── apple-splash-2532-1170.jpg │ │ ├── apple-splash-2556-1179.jpg │ │ ├── apple-splash-2688-1242.jpg │ │ ├── apple-splash-2732-2048.jpg │ │ ├── apple-splash-2778-1284.jpg │ │ ├── apple-splash-2796-1290.jpg │ │ ├── apple-splash-640-1136.jpg │ │ ├── apple-splash-750-1334.jpg │ │ ├── apple-splash-828-1792.jpg │ │ ├── favicon-196.png │ │ ├── frappe-hr-logo.svg │ │ ├── manifest-icon-192.maskable.png │ │ └── manifest-icon-512.maskable.png │ └── 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 │ ├── hierarchy_chart.py │ └── holiday_list.py └── 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 ├── public │ └── favicon.png ├── src │ ├── App.vue │ ├── components │ │ ├── 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 └── yarn.lock └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # Root editor config file 2 | root = true 3 | 4 | # Common settings 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | charset = utf-8 10 | 11 | # js indentation settings 12 | [{*.js,*.ts,*.vue,*.css,*.scss,*.html}] 13 | indent_style = tab 14 | indent_size = 4 15 | max_line_length = 99 16 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This is a comment. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in 5 | # the repo. Unless a later match takes precedence. 6 | 7 | * @ruchamahabal -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Community Forum 4 | url: https://discuss.frappe.io/ 5 | about: For general QnA, discussions and community help. 6 | -------------------------------------------------------------------------------- /.github/frappe-hr-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/frappe-hr-logo.png -------------------------------------------------------------------------------- /.github/frappe-hr-old-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/frappe-hr-old-logo.png -------------------------------------------------------------------------------- /.github/helper/apps.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"url": "https://github.com/frappe/erpnext","branch": "version-15"}, 3 | {"url": "https://github.com/frappe/payments","branch": "version-15"}, 4 | {"url": "https://github.com/frappe/hrms","branch": "version-15"} 5 | ] -------------------------------------------------------------------------------- /.github/helper/site_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "db_host": "127.0.0.1", 3 | "db_port": 3306, 4 | "db_name": "test_frappe", 5 | "db_password": "test_frappe", 6 | "use_mysqlclient": 1, 7 | "auto_email_id": "test@example.com", 8 | "mail_server": "smtp.example.com", 9 | "mail_login": "test@example.com", 10 | "mail_password": "test", 11 | "admin_password": "admin", 12 | "root_login": "root", 13 | "root_password": "root", 14 | "host_name": "http://test_site:8000", 15 | "install_apps": ["payments", "erpnext"], 16 | "throttle_user_limit": 100 17 | } 18 | -------------------------------------------------------------------------------- /.github/hrms-appraisal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-appraisal.png -------------------------------------------------------------------------------- /.github/hrms-attendance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-attendance.png -------------------------------------------------------------------------------- /.github/hrms-hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-hero.png -------------------------------------------------------------------------------- /.github/hrms-pwa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-pwa.png -------------------------------------------------------------------------------- /.github/hrms-requisition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-requisition.png -------------------------------------------------------------------------------- /.github/hrms-salary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/.github/hrms-salary.png -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | # Any python files modifed but no test files modified 2 | needs-tests: 3 | - any: ['hrms/**/*.py'] 4 | all: ['!hrms/**/test*.py'] 5 | -------------------------------------------------------------------------------- /.github/workflows/labeller.yml: -------------------------------------------------------------------------------- 1 | name: "Pull Request Labeler" 2 | on: 3 | pull_request_target: 4 | types: [opened, reopened] 5 | 6 | jobs: 7 | triage: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/labeler@v4 11 | with: 12 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | *.egg-info 4 | *.swp 5 | tags 6 | hrms/public/dist 7 | hrms/public/node_modules 8 | hrms/docs/current 9 | node_modules/ 10 | dist/ 11 | __pycache__/ 12 | 13 | # build/ 14 | .vscode 15 | .vs 16 | node_modules 17 | *debug.log 18 | hrms/docs/current 19 | hrms/public/frontend 20 | hrms/www/hrms.html 21 | hrms/public/roster 22 | hrms/www/roster.html 23 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "frappe-ui"] 2 | path = frappe-ui 3 | url = https://github.com/frappe/frappe-ui 4 | -------------------------------------------------------------------------------- /.semgrepignore: -------------------------------------------------------------------------------- 1 | hrms/patches/post_install/ 2 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include MANIFEST.in 2 | include *.json 3 | include *.md 4 | include *.py 5 | include *.txt 6 | recursive-include hrms *.css 7 | recursive-include hrms *.csv 8 | recursive-include hrms *.html 9 | recursive-include hrms *.ico 10 | recursive-include hrms *.js 11 | recursive-include hrms *.json 12 | recursive-include hrms *.md 13 | recursive-include hrms *.png 14 | recursive-include hrms *.py 15 | recursive-include hrms *.svg 16 | recursive-include hrms *.txt 17 | recursive-exclude hrms *.pyc 18 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | require_ci_to_pass: yes 3 | 4 | coverage: 5 | status: 6 | project: 7 | default: 8 | target: auto 9 | threshold: 0.5% 10 | 11 | patch: 12 | default: 13 | target: 85% 14 | threshold: 0% 15 | base: auto 16 | branches: 17 | - develop 18 | if_ci_failed: ignore 19 | only_pulls: true 20 | 21 | comment: 22 | layout: "diff, files" 23 | require_changes: true 24 | 25 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parserPreset: "conventional-changelog-conventionalcommits", 3 | rules: { 4 | "subject-empty": [2, "never"], 5 | "type-case": [2, "always", "lower-case"], 6 | "type-empty": [2, "never"], 7 | "type-enum": [ 8 | 2, 9 | "always", 10 | [ 11 | "build", 12 | "chore", 13 | "ci", 14 | "docs", 15 | "feat", 16 | "fix", 17 | "perf", 18 | "refactor", 19 | "revert", 20 | "style", 21 | "test", 22 | "patch", 23 | ], 24 | ], 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /hrms/locale/main.pot 3 | translation: /hrms/locale/%two_letters_code%.po 4 | pull_request_title: "fix: sync translations from crowdin" 5 | pull_request_labels: 6 | - translation 7 | commit_message: "fix: %language% translations" 8 | append_commit_message: false 9 | languages_mapping: 10 | two_letters_code: 11 | pt-BR: pt_BR 12 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dev-dist 4 | dist 5 | dist-ssr 6 | *.local -------------------------------------------------------------------------------- /frontend/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "tabWidth": 2, 4 | "useTabs": true 5 | } 6 | -------------------------------------------------------------------------------- /frontend/ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FrappeHR", 3 | "integrations": {}, 4 | "type": "vue", 5 | "server": { 6 | "url": "http://localhost:8080/" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /frontend/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /frontend/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/frontend/public/favicon.png -------------------------------------------------------------------------------- /frontend/src/components/EmptyState.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 18 | -------------------------------------------------------------------------------- /frontend/src/components/icons/AttendanceIcon.vue: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /frontend/src/components/icons/HomeIcon.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /frontend/src/components/icons/LeaveIcon.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /frontend/src/composables/realtime.js: -------------------------------------------------------------------------------- 1 | import { reactive } from "vue" 2 | 3 | const subscribed = reactive({}) 4 | 5 | export function useListUpdate(socket, doctype, callback) { 6 | subscribe(socket, doctype) 7 | socket.on("list_update", (data) => { 8 | if (data.doctype == doctype) { 9 | callback(data.name) 10 | } 11 | }) 12 | } 13 | 14 | function subscribe(socket, doctype) { 15 | if (subscribed[doctype]) return 16 | 17 | socket.emit("doctype_subscribe", doctype) 18 | subscribed[doctype] = true 19 | } 20 | -------------------------------------------------------------------------------- /frontend/src/data/advances.js: -------------------------------------------------------------------------------- 1 | import { createResource } from "frappe-ui" 2 | import { employeeResource } from "./employee" 3 | 4 | const transformAdvanceData = (data) => { 5 | return data.map((claim) => { 6 | claim.doctype = "Employee Advance" 7 | return claim 8 | }) 9 | } 10 | 11 | export const advanceBalance = createResource({ 12 | url: "hrms.api.get_employee_advance_balance", 13 | params: { 14 | employee: employeeResource.data.name, 15 | }, 16 | auto: true, 17 | cache: "hrms:employee_advance_balance", 18 | transform(data) { 19 | return transformAdvanceData(data) 20 | }, 21 | }) 22 | -------------------------------------------------------------------------------- /frontend/src/data/employee.js: -------------------------------------------------------------------------------- 1 | import router from "@/router" 2 | import { createResource } from "frappe-ui" 3 | 4 | export const employeeResource = createResource({ 5 | url: "hrms.api.get_current_employee_info", 6 | cache: "hrms:employee", 7 | onError(error) { 8 | if (error && error.exc_type === "AuthenticationError") { 9 | router.push("/login") 10 | } 11 | }, 12 | }) 13 | -------------------------------------------------------------------------------- /frontend/src/data/user.js: -------------------------------------------------------------------------------- 1 | import router from "@/router" 2 | import { createResource } from "frappe-ui" 3 | 4 | export const userResource = createResource({ 5 | url: "hrms.api.get_current_user_info", 6 | cache: "hrms:user", 7 | onError(error) { 8 | if (error && error.exc_type === "AuthenticationError") { 9 | router.push({ name: "Login" }) 10 | } 11 | }, 12 | }) 13 | -------------------------------------------------------------------------------- /frontend/src/router/advances.js: -------------------------------------------------------------------------------- 1 | const routes = [ 2 | { 3 | name: "EmployeeAdvanceListView", 4 | path: "/employee-advances", 5 | component: () => import("@/views/employee_advance/List.vue"), 6 | }, 7 | { 8 | name: "EmployeeAdvanceFormView", 9 | path: "/employee-advances/new", 10 | component: () => import("@/views/employee_advance/Form.vue"), 11 | }, 12 | { 13 | name: "EmployeeAdvanceDetailView", 14 | path: "/employee-advances/:id", 15 | props: true, 16 | component: () => import("@/views/employee_advance/Form.vue"), 17 | }, 18 | ] 19 | 20 | export default routes 21 | -------------------------------------------------------------------------------- /frontend/src/router/claims.js: -------------------------------------------------------------------------------- 1 | const routes = [ 2 | { 3 | name: "ExpenseClaimListView", 4 | path: "/expense-claims", 5 | component: () => import("@/views/expense_claim/List.vue"), 6 | }, 7 | { 8 | name: "ExpenseClaimFormView", 9 | path: "/expense-claims/new", 10 | component: () => import("@/views/expense_claim/Form.vue"), 11 | }, 12 | { 13 | name: "ExpenseClaimDetailView", 14 | path: "/expense-claims/:id", 15 | props: true, 16 | component: () => import("@/views/expense_claim/Form.vue"), 17 | }, 18 | ] 19 | 20 | export default routes 21 | -------------------------------------------------------------------------------- /frontend/src/router/leaves.js: -------------------------------------------------------------------------------- 1 | const routes = [ 2 | { 3 | name: "LeaveApplicationListView", 4 | path: "/leave-applications", 5 | component: () => import("@/views/leave/List.vue"), 6 | }, 7 | { 8 | name: "LeaveApplicationFormView", 9 | path: "/leave-applications/new", 10 | component: () => import("@/views/leave/Form.vue"), 11 | }, 12 | { 13 | name: "LeaveApplicationDetailView", 14 | path: "/leave-applications/:id", 15 | props: true, 16 | component: () => import("@/views/leave/Form.vue"), 17 | }, 18 | ] 19 | 20 | export default routes 21 | -------------------------------------------------------------------------------- /frontend/src/router/salary_slips.js: -------------------------------------------------------------------------------- 1 | const routes = [ 2 | { 3 | path: "/salary-slips/:id", 4 | name: "SalarySlipDetailView", 5 | props: true, 6 | component: () => import("@/views/salary_slip/Detail.vue"), 7 | }, 8 | ] 9 | 10 | export default routes 11 | -------------------------------------------------------------------------------- /frontend/src/utils/dayjs.js: -------------------------------------------------------------------------------- 1 | import dayjs from "dayjs" 2 | import updateLocale from "dayjs/plugin/updateLocale" 3 | import localizedFormat from "dayjs/plugin/localizedFormat" 4 | import relativeTime from "dayjs/plugin/relativeTime" 5 | import isToday from "dayjs/plugin/isToday" 6 | import isYesterday from "dayjs/plugin/isYesterday" 7 | import isBetween from "dayjs/plugin/isBetween" 8 | 9 | dayjs.extend(updateLocale) 10 | dayjs.extend(localizedFormat) 11 | dayjs.extend(relativeTime) 12 | dayjs.extend(isToday) 13 | dayjs.extend(isYesterday) 14 | dayjs.extend(isBetween) 15 | 16 | export default dayjs 17 | -------------------------------------------------------------------------------- /frontend/src/utils/dialogs.js: -------------------------------------------------------------------------------- 1 | export const showErrorAlert = async (message) => { 2 | const alert = await alertController.create({ 3 | header: "Error", 4 | message, 5 | buttons: ["OK"], 6 | }) 7 | 8 | await alert.present() 9 | } 10 | 11 | import { alertController } from "@ionic/vue" 12 | -------------------------------------------------------------------------------- /frontend/src/views/TabbedView.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /hrms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms.png -------------------------------------------------------------------------------- /hrms/__init__.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | __version__ = "16.0.0-dev" 4 | 5 | 6 | def refetch_resource(cache_key: str | list, user=None): 7 | frappe.publish_realtime( 8 | "hrms:refetch_resource", 9 | {"cache_key": cache_key}, 10 | user=user or frappe.session.user, 11 | after_commit=True, 12 | ) 13 | -------------------------------------------------------------------------------- /hrms/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/config/__init__.py -------------------------------------------------------------------------------- /hrms/config/desktop.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return [{"module_name": "HRMS", "type": "module", "label": _("HRMS")}] 6 | -------------------------------------------------------------------------------- /hrms/config/docs.py: -------------------------------------------------------------------------------- 1 | """ 2 | Configuration for docs 3 | """ 4 | 5 | # source_link = "https://github.com/[org_name]/hrms" 6 | # headline = "App that does everything" 7 | # sub_heading = "Yes, you got that right the first time, everything" 8 | 9 | 10 | def get_context(context): 11 | context.brand_html = "HRMS" 12 | -------------------------------------------------------------------------------- /hrms/hr/README.md: -------------------------------------------------------------------------------- 1 | Key features: 2 | 3 | - Leave and Attendance 4 | - Payroll 5 | - Appraisal 6 | - Expense Claim -------------------------------------------------------------------------------- /hrms/hr/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/__init__.py -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/dashboard_chart_source/__init__.py -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/employees_by_age/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/dashboard_chart_source/employees_by_age/__init__.py -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/employees_by_age/employees_by_age.js: -------------------------------------------------------------------------------- 1 | frappe.provide("frappe.dashboards.chart_sources"); 2 | 3 | frappe.dashboards.chart_sources["Employees by Age"] = { 4 | method: "hrms.hr.dashboard_chart_source.employees_by_age.employees_by_age.get_data", 5 | filters: [ 6 | { 7 | fieldname: "company", 8 | label: __("Company"), 9 | fieldtype: "Link", 10 | options: "Company", 11 | default: frappe.defaults.get_user_default("Company"), 12 | }, 13 | ], 14 | }; 15 | -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/employees_by_age/employees_by_age.json: -------------------------------------------------------------------------------- 1 | { 2 | "creation": "2022-08-22 12:49:07.303139", 3 | "docstatus": 0, 4 | "doctype": "Dashboard Chart Source", 5 | "idx": 0, 6 | "modified": "2022-08-22 12:49:07.303139", 7 | "modified_by": "Administrator", 8 | "module": "HR", 9 | "name": "Employees by Age", 10 | "owner": "Administrator", 11 | "source_name": "Employees by Age", 12 | "timeseries": 0 13 | } -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/hiring_vs_attrition_count/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/dashboard_chart_source/hiring_vs_attrition_count/__init__.py -------------------------------------------------------------------------------- /hrms/hr/dashboard_chart_source/hiring_vs_attrition_count/hiring_vs_attrition_count.json: -------------------------------------------------------------------------------- 1 | { 2 | "creation": "2022-08-21 21:38:22.271985", 3 | "docstatus": 0, 4 | "doctype": "Dashboard Chart Source", 5 | "idx": 0, 6 | "modified": "2022-08-21 21:38:22.271985", 7 | "modified_by": "Administrator", 8 | "module": "HR", 9 | "name": "Hiring vs Attrition Count", 10 | "owner": "Administrator", 11 | "source_name": "Hiring vs Attrition Count", 12 | "timeseries": 1 13 | } -------------------------------------------------------------------------------- /hrms/hr/doctype/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appointment_letter/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter/test_appointment_letter.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestAppointmentLetter(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_content/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appointment_letter_content/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_content/appointment_letter_content.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class AppointmentLettercontent(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appointment_letter_template/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_template/appointment_letter_template.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Appointment Letter Template", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_template/appointment_letter_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class AppointmentLetterTemplate(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appointment_letter_template/test_appointment_letter_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestAppointmentLetterTemplate(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal/README.md: -------------------------------------------------------------------------------- 1 | Performance of an Employee in a Time Period against given goals. -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_cycle/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal_cycle/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_goal/README.md: -------------------------------------------------------------------------------- 1 | Goal for the parent Appraisal. -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_goal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal_goal/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_goal/appraisal_goal.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class AppraisalGoal(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_kra/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal_kra/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_kra/appraisal_kra.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class AppraisalKRA(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template/README.md: -------------------------------------------------------------------------------- 1 | Standard set of goals for an Employee / Designation / Job Profile. New Appraisal transactions can be created from the Template. -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal_template/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template/appraisal_template.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Appraisal Template", { 5 | setup(frm) { 6 | frm.get_field("rating_criteria").grid.editable_fields = [ 7 | { fieldname: "criteria", columns: 6 }, 8 | { fieldname: "per_weightage", columns: 5 }, 9 | ]; 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template/appraisal_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | import frappe 6 | from frappe import _ 7 | from frappe.model.document import Document 8 | from frappe.utils import flt 9 | 10 | from hrms.mixins.appraisal import AppraisalMixin 11 | 12 | 13 | class AppraisalTemplate(Document, AppraisalMixin): 14 | def validate(self): 15 | self.validate_total_weightage("goals", "KRAs") 16 | self.validate_total_weightage("rating_criteria", "Criteria") 17 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template_goal/README.md: -------------------------------------------------------------------------------- 1 | Goal details for the parent Appraisal Template. -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template_goal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisal_template_goal/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisal_template_goal/appraisal_template_goal.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class AppraisalTemplateGoal(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisee/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/appraisee/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/appraisee/appraisee.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class Appraisee(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance/README.md: -------------------------------------------------------------------------------- 1 | Attendance record of an Employee on a particular date. -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/attendance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance/attendance.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors 2 | // License: GNU General Public License v3. See license.txt 3 | 4 | frappe.ui.form.on("Attendance", { 5 | refresh(frm) { 6 | if (frm.doc.__islocal && !frm.doc.attendance_date) { 7 | frm.set_value("attendance_date", frappe.datetime.get_today()); 8 | } 9 | 10 | frm.set_query("employee", () => { 11 | return { 12 | query: "erpnext.controllers.queries.employee_query", 13 | }; 14 | }); 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance/attendance_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return {"fieldname": "attendance", "transactions": [{"label": "", "items": ["Employee Checkin"]}]} 3 | -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance_request/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/attendance_request/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/attendance_request/attendance_request_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return {"fieldname": "attendance_request", "transactions": [{"items": ["Attendance"]}]} 3 | -------------------------------------------------------------------------------- /hrms/hr/doctype/compensatory_leave_request/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/compensatory_leave_request/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/daily_work_summary/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary/daily_work_summary.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Daily Work Summary", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary_group/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/daily_work_summary_group/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary_group/daily_work_summary_group.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Daily Work Summary Group", { 5 | refresh: function (frm) { 6 | if (!frm.is_new()) { 7 | frm.add_custom_button(__("Daily Work Summary"), function () { 8 | frappe.set_route("List", "Daily Work Summary"); 9 | }); 10 | } 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary_group_user/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/daily_work_summary_group_user/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class DailyWorkSummaryGroupUser(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/department_approver/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/department_approver/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/designation_skill/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/designation_skill/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/designation_skill/designation_skill.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class DesignationSkill(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_advance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_advance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_advance/employee_advance_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "employee_advance", 4 | "non_standard_fieldnames": { 5 | "Payment Entry": "reference_name", 6 | "Journal Entry": "reference_name", 7 | }, 8 | "transactions": [{"items": ["Expense Claim"]}, {"items": ["Payment Entry", "Journal Entry"]}], 9 | } 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_attendance_tool/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_attendance_tool/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_boarding_activity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_boarding_activity/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_boarding_activity/employee_boarding_activity.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeBoardingActivity(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_checkin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_checkin/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_criteria/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_feedback_criteria/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_criteria/employee_feedback_criteria.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Employee Feedback Criteria", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_criteria/employee_feedback_criteria.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeFeedbackCriteria(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_criteria/test_employee_feedback_criteria.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestEmployeeFeedbackCriteria(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_rating/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_feedback_rating/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_feedback_rating/employee_feedback_rating.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeFeedbackRating(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grade/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_grade/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grade/employee_grade.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeGrade(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grade/employee_grade_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "transactions": [ 4 | { 5 | "items": ["Employee", "Leave Period"], 6 | }, 7 | {"items": ["Employee Onboarding Template", "Employee Separation Template"]}, 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grade/test_employee_grade.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeGrade(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grievance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_grievance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grievance/employee_grievance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | import frappe 5 | from frappe import _, bold 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeGrievance(Document): 10 | def on_submit(self): 11 | if self.status not in ["Invalid", "Resolved"]: 12 | frappe.throw( 13 | _("Only Employee Grievance with status {0} or {1} can be submitted").format( 14 | bold("Invalid"), bold("Resolved") 15 | ) 16 | ) 17 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_grievance/employee_grievance_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Employee Grievance"] = { 2 | has_indicator_for_draft: 1, 3 | get_indicator: function (doc) { 4 | var colors = { 5 | Open: "red", 6 | Investigated: "orange", 7 | Resolved: "green", 8 | Invalid: "grey", 9 | }; 10 | return [__(doc.status), colors[doc.status], "status,=," + doc.status]; 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_health_insurance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_health_insurance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_health_insurance/employee_health_insurance.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Health Insurance", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_health_insurance/employee_health_insurance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeHealthInsurance(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_health_insurance/test_employee_health_insurance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeHealthInsurance(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_onboarding/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding/employee_onboarding_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Employee Onboarding"] = { 2 | add_fields: ["boarding_status", "employee_name", "date_of_joining", "department"], 3 | filters: [["boarding_status", "=", "Pending"]], 4 | get_indicator: function (doc) { 5 | return [ 6 | __(doc.boarding_status), 7 | frappe.utils.guess_colour(doc.boarding_status), 8 | "status,=," + doc.boarding_status, 9 | ]; 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_onboarding_template/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding_template/employee_onboarding_template.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Onboarding Template", { 5 | setup: function (frm) { 6 | frm.set_query("department", function () { 7 | return { 8 | filters: { 9 | company: frm.doc.company, 10 | }, 11 | }; 12 | }); 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding_template/employee_onboarding_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeOnboardingTemplate(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding_template/employee_onboarding_template_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "employee_onboarding_template", 4 | "transactions": [ 5 | {"items": ["Employee Onboarding"]}, 6 | ], 7 | } 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_onboarding_template/test_employee_onboarding_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeOnboardingTemplate(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_performance_feedback/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_performance_feedback/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_promotion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_promotion/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_promotion/employee_promotion.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | {% include 'hrms/hr/employee_property_update.js' %} 5 | 6 | frappe.ui.form.on('Employee Promotion', { 7 | refresh: function(frm) { 8 | 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_property_history/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_property_history/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_property_history/employee_property_history.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeePropertyHistory(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_referral/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_referral/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_referral/employee_referral_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "employee_referral", 4 | "non_standard_fieldnames": {"Additional Salary": "ref_docname"}, 5 | "transactions": [ 6 | {"items": ["Job Applicant", "Additional Salary"]}, 7 | ], 8 | } 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_separation/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation/employee_separation.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from hrms.controllers.employee_boarding_controller import EmployeeBoardingController 6 | 7 | 8 | class EmployeeSeparation(EmployeeBoardingController): 9 | def validate(self): 10 | super().validate() 11 | 12 | def on_submit(self): 13 | super().on_submit() 14 | 15 | def on_update_after_submit(self): 16 | self.create_task_and_notify_user() 17 | 18 | def on_cancel(self): 19 | super().on_cancel() 20 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation/employee_separation_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Employee Separation"] = { 2 | add_fields: ["boarding_status", "employee_name", "department"], 3 | filters: [["boarding_status", "=", "Pending"]], 4 | get_indicator: function (doc) { 5 | return [ 6 | __(doc.boarding_status), 7 | frappe.utils.guess_colour(doc.boarding_status), 8 | "status,=," + doc.boarding_status, 9 | ]; 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_separation_template/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation_template/employee_separation_template.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Separation Template", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation_template/employee_separation_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeSeparationTemplate(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation_template/employee_separation_template_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "employee_separation_template", 4 | "transactions": [ 5 | {"items": ["Employee Separation"]}, 6 | ], 7 | } 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_separation_template/test_employee_separation_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeSeparationTemplate(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_skill/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_skill/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_skill/employee_skill.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeSkill(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_skill_map/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_skill_map/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_skill_map/employee_skill_map.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeSkillMap(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_training/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_training/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_training/employee_training.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeTraining(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_transfer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employee_transfer/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employee_transfer/employee_transfer.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | {% include 'hrms/hr/employee_property_update.js' %} 5 | 6 | frappe.ui.form.on('Employee Transfer', { 7 | refresh: function(frm) { 8 | 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employment_type/README.md: -------------------------------------------------------------------------------- 1 | Type of employment. 2 | 3 | e.g. Permanent, Probation, Intern etc. -------------------------------------------------------------------------------- /hrms/hr/doctype/employment_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/employment_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/employment_type/employment_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmploymentType(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employment_type/test_employment_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | import frappe 5 | 6 | # test_records = frappe.get_test_records("Employment Type") 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/employment_type/test_records.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "doctype": "Employment Type", 4 | "employee_type_name": "_Test Employment Type" 5 | } 6 | ] -------------------------------------------------------------------------------- /hrms/hr/doctype/exit_interview/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/exit_interview/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expected_skill_set/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expected_skill_set/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expected_skill_set/expected_skill_set.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class ExpectedSkillSet(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim/README.md: -------------------------------------------------------------------------------- 1 | Amount claimed by Employee for expense made by the Employee on organization's behalf. -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_claim/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim/expense_claim_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "reference_name", 7 | "internal_links": {"Employee Advance": ["advances", "employee_advance"]}, 8 | "transactions": [ 9 | {"label": _("Payment"), "items": ["Payment Entry", "Journal Entry"]}, 10 | {"label": _("Reference"), "items": ["Employee Advance"]}, 11 | ], 12 | } 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim/expense_claim_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Expense Claim"] = { 2 | add_fields: ["company"], 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_account/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_claim_account/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_account/expense_claim_account.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class ExpenseClaimAccount(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_advance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_claim_advance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_advance/expense_claim_advance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class ExpenseClaimAdvance(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_detail/README.md: -------------------------------------------------------------------------------- 1 | Detail of expense in parent Expense Claim. -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_claim_detail/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_detail/expense_claim_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class ExpenseClaimDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_type/README.md: -------------------------------------------------------------------------------- 1 | Type of expense for Expense Claim. -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_claim_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_claim_type/test_expense_claim_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | # test_records = frappe.get_test_records('Expense Claim Type') 7 | 8 | 9 | class TestExpenseClaimType(IntegrationTestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_taxes_and_charges/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/expense_taxes_and_charges/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class ExpenseTaxesandCharges(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_asset/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/full_and_final_asset/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_asset/full_and_final_asset.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Full and Final Asset", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_asset/full_and_final_asset.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class FullandFinalAsset(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_asset/test_full_and_final_asset.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestFullandFinalAsset(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_outstanding_statement/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/full_and_final_outstanding_statement/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_outstanding_statement/full_and_final_outstanding_statement.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class FullandFinalOutstandingStatement(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_statement/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/full_and_final_statement/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/full_and_final_statement/full_and_final_statement_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Full and Final Statement"] = { 2 | get_indicator: function (doc) { 3 | var colors = { 4 | Draft: "red", 5 | Unpaid: "orange", 6 | Paid: "green", 7 | Cancelled: "red", 8 | }; 9 | return [__(doc.status), colors[doc.status], "status,=," + doc.status]; 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/goal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/goal/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/grievance_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/grievance_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/grievance_type/grievance_type.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Grievance Type", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/grievance_type/grievance_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class GrievanceType(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/grievance_type/test_grievance_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestGrievanceType(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/hr_settings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/hr_settings/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/hr_settings/test_hr_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestHRSettings(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/identification_document_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/identification_document_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/identification_document_type/identification_document_type.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Identification Document Type", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/identification_document_type/identification_document_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class IdentificationDocumentType(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/identification_document_type/test_identification_document_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestIdentificationDocumentType(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interest/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interest/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interest/interest.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Interest", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interest/interest.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class Interest(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interest/test_interest.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | # test_records = frappe.get_test_records('Interest') 7 | 8 | 9 | class TestInterest(IntegrationTestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interview/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interview/interview_calendar.js: -------------------------------------------------------------------------------- 1 | frappe.views.calendar["Interview"] = { 2 | field_map: { 3 | start: "from", 4 | end: "to", 5 | id: "name", 6 | title: "subject", 7 | allDay: "allDay", 8 | color: "color", 9 | }, 10 | order_by: "scheduled_on", 11 | gantt: true, 12 | get_events_method: "hrms.hr.doctype.interview.interview.get_events", 13 | }; 14 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview/interview_feedback_reminder_template.html: -------------------------------------------------------------------------------- 1 |

Interview Feedback Reminder

2 | 3 |

4 | Interview Feedback for Interview {{ name }} is not submitted yet. Please submit your feedback. Thank you, good day! 5 |

6 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview/interview_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Interview"] = { 2 | has_indicator_for_draft: 1, 3 | get_indicator: function (doc) { 4 | let status_color = { 5 | Pending: "orange", 6 | "Under Review": "blue", 7 | Cleared: "green", 8 | Rejected: "red", 9 | }; 10 | return [__(doc.status), status_color[doc.status], "status,=," + doc.status]; 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview/interview_reminder_notification_template.html: -------------------------------------------------------------------------------- 1 |

Interview Reminder

2 | 3 |

4 | Interview: {{name}} is scheduled on {{scheduled_on}} from {{from_time}} to {{to_time}} 5 |

6 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interview_detail/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_detail/interview_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class InterviewDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_feedback/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interview_feedback/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_round/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interview_round/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_round/test_interview_round.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | # import frappe 7 | 8 | 9 | class TestInterviewRound(IntegrationTestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interview_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_type/interview_type.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Interview Type", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_type/interview_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class InterviewType(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interview_type/test_interview_type.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestInterviewType(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/interviewer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/interviewer/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/interviewer/interviewer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class Interviewer(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant/README.md: -------------------------------------------------------------------------------- 1 | Applicant for Job. -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_applicant/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant/job_applicant_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "job_applicant", 4 | "transactions": [ 5 | {"items": ["Employee", "Employee Onboarding"]}, 6 | {"items": ["Job Offer", "Appointment Letter"]}, 7 | {"items": ["Interview"]}, 8 | ], 9 | } 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant_source/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_applicant_source/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant_source/job_applicant_source.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Job Applicant Source", { 5 | refresh: function () {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant_source/job_applicant_source.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class JobApplicantSource(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_applicant_source/test_job_applicant_source.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestJobApplicantSource(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_offer/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_offer_term/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term/job_offer_term.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class JobOfferTerm(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_offer_term_template/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term_template/job_offer_term_template.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Job Offer Term Template", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term_template/job_offer_term_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class JobOfferTermTemplate(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_offer_term_template/test_job_offer_term_template.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestJobOfferTermTemplate(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_opening/README.md: -------------------------------------------------------------------------------- 1 | Open position for Job. -------------------------------------------------------------------------------- /hrms/hr/doctype/job_opening/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_opening/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/job_opening/job_opening_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "job_title", 4 | "transactions": [{"items": ["Job Applicant"]}], 5 | } 6 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_opening/templates/job_opening.html: -------------------------------------------------------------------------------- 1 | {% extends "templates/web.html" %} 2 | 3 | {% block page_content %} 4 |

{{ title |e }}

5 | {% endblock %} 6 | 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_opening/templates/job_opening_row.html: -------------------------------------------------------------------------------- 1 |
2 | {{ (doc.title or doc.name) |e }} 3 |
4 | 5 | -------------------------------------------------------------------------------- /hrms/hr/doctype/job_requisition/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/job_requisition/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/kra/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/kra/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/kra/kra.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("KRA", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/kra/kra.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class KRA(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/kra/test_kra.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestKRA(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_allocation/README.md: -------------------------------------------------------------------------------- 1 | Leave Allocated to an Employee at the beginning of the period. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_allocation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_allocation/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_allocation/leave_allocation_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "leave_allocation", 4 | "transactions": [{"items": ["Compensatory Leave Request"]}, {"items": ["Leave Encashment"]}], 5 | "reports": [{"items": ["Employee Leave Balance"]}], 6 | } 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_allocation/leave_allocation_list.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors 2 | // License: GNU General Public License v3. See license.txt 3 | 4 | // render 5 | frappe.listview_settings["Leave Allocation"] = { 6 | get_indicator: function (doc) { 7 | if (doc.status === "Expired") { 8 | return [__("Expired"), "gray", "expired, =, 1"]; 9 | } 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_application/README.md: -------------------------------------------------------------------------------- 1 | Application for Leave by an Employee. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_application/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_application/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_application/leave_application_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "leave_application", 7 | "transactions": [{"items": ["Attendance"]}], 8 | "reports": [{"label": _("Reports"), "items": ["Employee Leave Balance"]}], 9 | } 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_application/test_records.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list/README.md: -------------------------------------------------------------------------------- 1 | List of days on which leaves can only be approved by special users. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_block_list/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list/leave_block_list_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return {"fieldname": "leave_block_list", "transactions": [{"items": ["Department"]}]} 3 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_allow/README.md: -------------------------------------------------------------------------------- 1 | User allowed to approve leave on blocked date. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_allow/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_block_list_allow/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_allow/leave_block_list_allow.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | # For license information, please see license.txt 5 | 6 | 7 | from frappe.model.document import Document 8 | 9 | 10 | class LeaveBlockListAllow(Document): 11 | pass 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_date/README.md: -------------------------------------------------------------------------------- 1 | Date blocked on parent Leave Block List. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_date/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_block_list_date/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_block_list_date/leave_block_list_date.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | # For license information, please see license.txt 5 | 6 | 7 | from frappe.model.document import Document 8 | 9 | 10 | class LeaveBlockListDate(Document): 11 | pass 12 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_control_panel/README.md: -------------------------------------------------------------------------------- 1 | Tool to allocate leaves in bulk. -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_control_panel/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_control_panel/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_encashment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_encashment/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_ledger_entry/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_ledger_entry/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Leave Ledger Entry", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Leave Ledger Entry"] = { 2 | onload: function (listview) { 3 | if (listview.page.fields_dict.transaction_type) { 4 | listview.page.fields_dict.transaction_type.get_query = function () { 5 | return { 6 | filters: { 7 | name: [ 8 | "in", 9 | ["Leave Allocation", "Leave Application", "Leave Encashment"], 10 | ], 11 | }, 12 | }; 13 | }; 14 | } 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_period/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_period/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_period/leave_period_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "leave_period", 7 | "transactions": [{"label": _("Transactions"), "items": ["Leave Allocation"]}], 8 | } 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_policy/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy/leave_policy_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "leave_policy", 7 | "transactions": [ 8 | {"label": _("Leaves"), "items": ["Leave Policy Assignment", "Leave Allocation"]}, 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_assignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_policy_assignment/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_assignment/leave_policy_assignment_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "leave_policy_assignment", 7 | "transactions": [ 8 | {"label": _("Leaves"), "items": ["Leave Allocation"]}, 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_assignment/leave_policy_assignment_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Leave Policy Assignment"] = { 2 | onload: function (list_view) { 3 | list_view.page.add_inner_button(__("Bulk Leave Policy Assignment"), function () { 4 | frappe.set_route("Form", "Leave Control Panel"); 5 | }); 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_policy_detail/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_detail/leave_policy_detail.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Leave Policy Detail", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_detail/leave_policy_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class LeavePolicyDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_policy_detail/test_leave_policy_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestLeavePolicyDetail(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_type/README.md: -------------------------------------------------------------------------------- 1 | Type of Leave. 2 | 3 | e.g. 4 | 5 | - Casual Leave 6 | - Sick Leave -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/leave_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/leave_type/leave_type_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "leave_type", 4 | "transactions": [ 5 | { 6 | "items": ["Leave Allocation", "Leave Application"], 7 | }, 8 | {"items": ["Attendance", "Leave Encashment"]}, 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/offer_term/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/offer_term/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/offer_term/offer_term.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Offer Term", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/offer_term/offer_term.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class OfferTerm(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/offer_term/test_offer_term.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | # test_records = frappe.get_test_records('Offer Term') 7 | 8 | 9 | class TestOfferTerm(IntegrationTestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/purpose_of_travel/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/purpose_of_travel/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/purpose_of_travel/purpose_of_travel.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Purpose of Travel", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/purpose_of_travel/purpose_of_travel.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class PurposeofTravel(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/purpose_of_travel/test_purpose_of_travel.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestPurposeofTravel(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/pwa_notification/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/pwa_notification/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/pwa_notification/pwa_notification.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("PWA Notification", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/pwa_notification/test_pwa_notification.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestPWANotification(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_assignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_assignment/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_assignment/shift_assignment.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Shift Assignment", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_assignment/shift_assignment_calendar.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.views.calendar["Shift Assignment"] = { 5 | field_map: { 6 | start: "start_date", 7 | end: "end_date", 8 | id: "name", 9 | docstatus: 1, 10 | allDay: "allDay", 11 | convertToUserTz: "convertToUserTz", 12 | }, 13 | get_events_method: "hrms.hr.doctype.shift_assignment.shift_assignment.get_events", 14 | }; 15 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_assignment/shift_assignment_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Assignment"] = { 2 | onload: (list_view) => hrms.add_shift_tools_button_to_list(list_view), 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_assignment_tool/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_assignment_tool/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_location/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_location/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_location/shift_location.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | import frappe 5 | from frappe.model.document import Document 6 | 7 | from hrms.hr.utils import set_geolocation_from_coordinates 8 | 9 | 10 | class ShiftLocation(Document): 11 | def validate(self): 12 | self.set_geolocation() 13 | 14 | @frappe.whitelist() 15 | def set_geolocation(self): 16 | set_geolocation_from_coordinates(self) 17 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_location/shift_location_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Location"] = { 2 | onload: (list_view) => hrms.add_shift_tools_button_to_list(list_view), 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_location/test_shift_location.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestShiftLocation(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_request/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_request/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_request/shift_request.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Shift Request", { 5 | setup: function (frm) { 6 | frm.set_query("approver", function () { 7 | return { 8 | query: "hrms.hr.doctype.department_approver.department_approver.get_approvers", 9 | filters: { 10 | employee: frm.doc.employee, 11 | doctype: frm.doc.doctype, 12 | }, 13 | }; 14 | }); 15 | frm.set_query("employee", erpnext.queries.employee); 16 | }, 17 | }); 18 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_request/shift_request_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "shift_request", 4 | "transactions": [ 5 | {"items": ["Shift Assignment"]}, 6 | ], 7 | } 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_request/shift_request_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Request"] = { 2 | onload: (list_view) => 3 | hrms.add_shift_tools_button_to_list(list_view, "Process Shift Requests"), 4 | }; 5 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_schedule/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule/shift_schedule.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Shift Schedule", { 5 | refresh(frm) { 6 | if (frm.doc.docstatus === 1) 7 | hrms.add_shift_tools_button_to_form(frm, { 8 | action: "Assign Shift Schedule", 9 | shift_schedule: frm.doc.name, 10 | }); 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule/shift_schedule_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Schedule"] = { 2 | onload: (list_view) => hrms.add_shift_tools_button_to_list(list_view, "Assign Shift Schedule"), 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule_assignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_schedule_assignment/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule_assignment/shift_schedule_assignment.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Shift Schedule Assignment", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_schedule_assignment/shift_schedule_assignment_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Schedule Assignment"] = { 2 | onload: (list_view) => hrms.add_shift_tools_button_to_list(list_view, "Assign Shift Schedule"), 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_type/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/shift_type/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_type/shift_type_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "shift", 4 | "non_standard_fieldnames": {"Shift Request": "shift_type", "Shift Assignment": "shift_type"}, 5 | "transactions": [{"items": ["Attendance", "Employee Checkin", "Shift Request", "Shift Assignment"]}], 6 | } 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_type/shift_type_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Shift Type"] = { 2 | onload: (list_view) => hrms.add_shift_tools_button_to_list(list_view), 3 | }; 4 | -------------------------------------------------------------------------------- /hrms/hr/doctype/shift_type/test_records.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "doctype": "Shift Type", 4 | "name": "Day Shift", 5 | "start_time": "9:00:00", 6 | "end_time": "18:00:00" 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/skill/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/skill/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/skill/skill.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Skill", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/skill/skill.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class Skill(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/skill_assessment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/skill_assessment/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/skill_assessment/skill_assessment.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class SkillAssessment(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/staffing_plan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/staffing_plan/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/staffing_plan/staffing_plan_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "staffing_plan", 4 | "transactions": [{"items": ["Job Opening"]}], 5 | } 6 | -------------------------------------------------------------------------------- /hrms/hr/doctype/staffing_plan_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/staffing_plan_detail/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/staffing_plan_detail/staffing_plan_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class StaffingPlanDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_event/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_event/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_event/training_event_calendar.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | // License: GNU General Public License v3. See license.txt 3 | 4 | frappe.views.calendar["Training Event"] = { 5 | field_map: { 6 | start: "start_time", 7 | end: "end_time", 8 | id: "name", 9 | title: "event_name", 10 | allDay: "allDay", 11 | }, 12 | gantt: true, 13 | get_events_method: "frappe.desk.calendar.get_events", 14 | }; 15 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_event/training_event_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "training_event", 4 | "transactions": [ 5 | {"items": ["Training Result", "Training Feedback"]}, 6 | ], 7 | } 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_event_employee/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_event_employee/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_event_employee/training_event_employee.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class TrainingEventEmployee(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_feedback/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_feedback/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_feedback/training_feedback.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Training Feedback", { 5 | onload: function (frm) { 6 | frm.add_fetch("training_event", "course", "course"); 7 | frm.add_fetch("training_event", "event_name", "event_name"); 8 | frm.add_fetch("training_event", "trainer_name", "trainer_name"); 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_program/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_program/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_program/test_training_program.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestTrainingProgram(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_program/training_program.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Training Program", {}); 5 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_program/training_program.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class TrainingProgram(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_program/training_program_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "training_program", 7 | "transactions": [ 8 | {"label": _("Training Events"), "items": ["Training Event"]}, 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_result/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_result/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_result/test_training_result.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | # test_records = frappe.get_test_records('Training Result') 7 | 8 | 9 | class TestTrainingResult(IntegrationTestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/hr/doctype/training_result_employee/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/training_result_employee/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/training_result_employee/training_result_employee.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class TrainingResultEmployee(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_itinerary/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/travel_itinerary/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_itinerary/travel_itinerary.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class TravelItinerary(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/travel_request/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request/test_travel_request.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestTravelRequest(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request/travel_request.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Travel Request", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request/travel_request.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | from hrms.hr.utils import validate_active_employee 8 | 9 | 10 | class TravelRequest(Document): 11 | def validate(self): 12 | validate_active_employee(self.employee) 13 | -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request_costing/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/travel_request_costing/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/travel_request_costing/travel_request_costing.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class TravelRequestCosting(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/upload_attendance/README.md: -------------------------------------------------------------------------------- 1 | Tool to upload attendance via csv file. -------------------------------------------------------------------------------- /hrms/hr/doctype/upload_attendance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/upload_attendance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_log/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/vehicle_log/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/vehicle_service/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service/vehicle_service.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class VehicleService(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service_item/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/doctype/vehicle_service_item/__init__.py -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service_item/test_vehicle_service_item.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestVehicleServiceItem(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service_item/vehicle_service_item.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Vehicle Service Item", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/hr/doctype/vehicle_service_item/vehicle_service_item.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class VehicleServiceItem(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/hr/notification/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/notification/__init__.py -------------------------------------------------------------------------------- /hrms/hr/notification/exit_interview_scheduled/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/notification/exit_interview_scheduled/__init__.py -------------------------------------------------------------------------------- /hrms/hr/notification/exit_interview_scheduled/exit_interview_scheduled.py: -------------------------------------------------------------------------------- 1 | # import frappe 2 | 3 | 4 | def get_context(context): 5 | # do your magic here 6 | pass 7 | -------------------------------------------------------------------------------- /hrms/hr/notification/training_feedback/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/notification/training_feedback/__init__.py -------------------------------------------------------------------------------- /hrms/hr/notification/training_feedback/training_feedback.html: -------------------------------------------------------------------------------- 1 |

{{ _("Hello") }},

2 | 3 |

You attended training {{ frappe.utils.get_link_to_form( 4 | "Training Event", doc.training_event) }}

5 | 6 |

{{ _("Please share your feedback to the training by clicking on 'Training Feedback' and then 'New'") }}

7 | -------------------------------------------------------------------------------- /hrms/hr/notification/training_feedback/training_feedback.md: -------------------------------------------------------------------------------- 1 |

{{_("Training Event")}}

2 |

{{ message }}

3 | 4 |

{{_("Details")}}

5 | {{_("Event Name")}}: {{ name }} 6 |
{{_("Event Location")}}: {{ location }} 7 |
{{_("Start Time")}}: {{ start_time }} 8 |
{{_("End Time")}}: {{ end_time }} 9 |
{{_("Attendance")}}: {{ attendance }} 10 | -------------------------------------------------------------------------------- /hrms/hr/notification/training_feedback/training_feedback.py: -------------------------------------------------------------------------------- 1 | def get_context(context): 2 | # do your magic here 3 | pass 4 | -------------------------------------------------------------------------------- /hrms/hr/notification/training_scheduled/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/notification/training_scheduled/__init__.py -------------------------------------------------------------------------------- /hrms/hr/notification/training_scheduled/training_scheduled.py: -------------------------------------------------------------------------------- 1 | def get_context(context): 2 | # do your magic here 3 | pass 4 | -------------------------------------------------------------------------------- /hrms/hr/page/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/page/__init__.py -------------------------------------------------------------------------------- /hrms/hr/page/organizational_chart/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/page/organizational_chart/__init__.py -------------------------------------------------------------------------------- /hrms/hr/page/team_updates/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/page/team_updates/__init__.py -------------------------------------------------------------------------------- /hrms/hr/print_format/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/print_format/__init__.py -------------------------------------------------------------------------------- /hrms/hr/print_format/job_offer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/print_format/job_offer/__init__.py -------------------------------------------------------------------------------- /hrms/hr/print_format/standard_appointment_letter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/print_format/standard_appointment_letter/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/appraisal_overview/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/appraisal_overview/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/daily_work_summary_replies/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/daily_work_summary_replies/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/daily_work_summary_replies/daily_work_summary_replies.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | /* eslint-disable */ 5 | frappe.query_reports["Daily Work Summary Replies"] = { 6 | filters: [ 7 | { 8 | fieldname: "group", 9 | label: __("Group"), 10 | fieldtype: "Link", 11 | options: "Daily Work Summary Group", 12 | reqd: 1, 13 | }, 14 | { 15 | fieldname: "range", 16 | label: __("Date Range"), 17 | fieldtype: "DateRange", 18 | reqd: 1, 19 | }, 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /hrms/hr/report/employee_advance_summary/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_advance_summary/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_analytics/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_analytics/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_birthday/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_birthday/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_exits/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_exits/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_hours_utilization_based_on_timesheet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_hours_utilization_based_on_timesheet/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_information/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_information/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_leave_balance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_leave_balance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employee_leave_balance_summary/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employee_leave_balance_summary/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/employees_working_on_a_holiday/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/employees_working_on_a_holiday/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/leave_ledger/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/leave_ledger/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/monthly_attendance_sheet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/monthly_attendance_sheet/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/project_profitability/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/project_profitability/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/recruitment_analytics/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/recruitment_analytics/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/shift_attendance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/shift_attendance/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/unpaid_expense_claim/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/unpaid_expense_claim/__init__.py -------------------------------------------------------------------------------- /hrms/hr/report/unpaid_expense_claim/unpaid_expense_claim.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.query_reports["Unpaid Expense Claim"] = { 5 | filters: [ 6 | { 7 | fieldname: "employee", 8 | label: __("Employee"), 9 | fieldtype: "Link", 10 | options: "Employee", 11 | }, 12 | ], 13 | }; 14 | -------------------------------------------------------------------------------- /hrms/hr/report/vehicle_expenses/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/report/vehicle_expenses/__init__.py -------------------------------------------------------------------------------- /hrms/hr/web_form/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/web_form/__init__.py -------------------------------------------------------------------------------- /hrms/hr/web_form/job_application/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hr/web_form/job_application/__init__.py -------------------------------------------------------------------------------- /hrms/hr/web_form/job_application/job_application.js: -------------------------------------------------------------------------------- 1 | frappe.ready(function () { 2 | // bind events here 3 | }); 4 | -------------------------------------------------------------------------------- /hrms/hr/web_form/job_application/job_application.py: -------------------------------------------------------------------------------- 1 | def get_context(context): 2 | # do your magic here 3 | pass 4 | -------------------------------------------------------------------------------- /hrms/hrms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/hrms.png -------------------------------------------------------------------------------- /hrms/install.py: -------------------------------------------------------------------------------- 1 | import click 2 | 3 | from hrms.setup import after_install as setup 4 | 5 | 6 | def after_install(): 7 | try: 8 | print("Setting up Frappe HR...") 9 | setup() 10 | 11 | click.secho("Thank you for installing Frappe HR!", fg="green") 12 | 13 | except Exception as e: 14 | BUG_REPORT_URL = "https://github.com/frappe/hrms/issues/new" 15 | click.secho( 16 | "Installation for Frappe HR app failed due to an error." 17 | " Please try re-installing the app or" 18 | f" report the issue on {BUG_REPORT_URL} if not resolved.", 19 | fg="bright_red", 20 | ) 21 | raise e 22 | -------------------------------------------------------------------------------- /hrms/modules.txt: -------------------------------------------------------------------------------- 1 | HR 2 | Payroll -------------------------------------------------------------------------------- /hrms/patches/post_install/create_country_fixtures.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | from hrms.overrides.company import make_salary_components, run_regional_setup 4 | 5 | 6 | def execute(): 7 | for country in frappe.get_all("Company", pluck="country", distinct=True): 8 | run_regional_setup(country) 9 | make_salary_components(country) 10 | -------------------------------------------------------------------------------- /hrms/patches/post_install/delete_employee_transfer_property_doctype.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | frappe.delete_doc("DocType", "Employee Transfer Property", ignore_missing=True) 6 | -------------------------------------------------------------------------------- /hrms/patches/post_install/set_payroll_entry_status.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | PayrollEntry = frappe.qb.DocType("Payroll Entry") 6 | 7 | status = ( 8 | frappe.qb.terms.Case() 9 | .when(PayrollEntry.docstatus == 0, "Draft") 10 | .when(PayrollEntry.docstatus == 1, "Submitted") 11 | .else_("Cancelled") 12 | ) 13 | 14 | (frappe.qb.update(PayrollEntry).set("status", status).where(PayrollEntry.status.isnull())).run() 15 | -------------------------------------------------------------------------------- /hrms/patches/post_install/update_start_end_date_for_old_shift_assignment.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | 5 | import frappe 6 | 7 | 8 | def execute(): 9 | frappe.reload_doc("hr", "doctype", "shift_assignment") 10 | if frappe.db.has_column("Shift Assignment", "date"): 11 | frappe.db.sql( 12 | """update `tabShift Assignment` 13 | set end_date=date, start_date=date 14 | where date IS NOT NULL and start_date IS NULL and end_date IS NULL;""" 15 | ) 16 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/add_expense_claim_to_repost_settings.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | """ 6 | Add `Expense Claim` to Repost settings 7 | """ 8 | allowed_types = ["Expense Claim"] 9 | repost_settings = frappe.get_doc("Repost Accounting Ledger Settings") 10 | for x in allowed_types: 11 | repost_settings.append("allowed_types", {"document_type": x, "allowed": True}) 12 | repost_settings.save() 13 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/create_custom_field_for_appraisal_template.py: -------------------------------------------------------------------------------- 1 | from frappe.custom.doctype.custom_field.custom_field import create_custom_field 2 | 3 | 4 | def execute(): 5 | create_custom_field( 6 | "Designation", 7 | { 8 | "fieldname": "appraisal_template", 9 | "fieldtype": "Link", 10 | "label": "Appraisal Template", 11 | "options": "Appraisal Template", 12 | "insert_after": "description", 13 | "allow_in_quick_entry": 1, 14 | }, 15 | ) 16 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/create_marginal_relief_field_for_india_localisation.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | import frappe 5 | 6 | from hrms.regional.india.setup import make_custom_fields 7 | 8 | 9 | def execute(): 10 | company = frappe.get_all("Company", filters={"country": "India"}) 11 | if not company: 12 | return 13 | 14 | make_custom_fields() 15 | 16 | frappe.reload_doc("payroll", "doctype", "income_tax_slab") 17 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/create_vehicle_service_item.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | service_items = [ 6 | "Brake Oil", 7 | "Brake Pad", 8 | "Clutch Plate", 9 | "Engine Oil", 10 | "Oil Change", 11 | "Wheels", 12 | ] 13 | for item in service_items: 14 | doc = frappe.new_doc("Vehicle Service Item") 15 | doc.service_item = item 16 | doc.insert(ignore_permissions=True, ignore_if_duplicate=True) 17 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/update_ess_user_access.py: -------------------------------------------------------------------------------- 1 | from hrms.setup import add_non_standard_user_types 2 | 3 | 4 | def execute(): 5 | add_non_standard_user_types() 6 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/update_loan_repayment_repay_from_salary.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | if frappe.db.exists("Custom Field", "Loan Repayment-repay_from_salary"): 6 | frappe.db.set_value( 7 | "Custom Field", 8 | "Loan Repayment-repay_from_salary", 9 | {"fetch_from": None, "fetch_if_empty": 0}, 10 | ) 11 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/update_payroll_frequency_to_none_if_salary_slip_is_based_on_timesheet.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | salary_structure = frappe.qb.DocType("Salary Structure") 6 | frappe.qb.update(salary_structure).set(salary_structure.payroll_frequency, "").where( 7 | salary_structure.salary_slip_based_on_timesheet == 1 8 | ).run() 9 | -------------------------------------------------------------------------------- /hrms/patches/v14_0/update_repay_from_salary_and_payroll_payable_account_fields.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | if frappe.db.exists("Custom Field", {"name": "Loan Repayment-repay_from_salary"}): 6 | frappe.db.set_value("Custom Field", {"name": "Loan Repayment-repay_from_salary"}, "fetch_if_empty", 1) 7 | 8 | if frappe.db.exists("Custom Field", {"name": "Loan Repayment-payroll_payable_account"}): 9 | frappe.db.set_value( 10 | "Custom Field", 11 | {"name": "Loan Repayment-payroll_payable_account"}, 12 | "insert_after", 13 | "payment_account", 14 | ) 15 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/add_loan_docperms_to_ess.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | from hrms.setup import add_lending_docperms_to_ess, update_user_type_doctype_limit 4 | 5 | 6 | def execute(): 7 | if "lending" in frappe.get_installed_apps(): 8 | update_user_type_doctype_limit() 9 | add_lending_docperms_to_ess() 10 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/create_accounting_dimensions_in_leave_encashment.py: -------------------------------------------------------------------------------- 1 | from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( 2 | create_accounting_dimensions_for_doctype, 3 | ) 4 | 5 | 6 | def execute(): 7 | create_accounting_dimensions_for_doctype(doctype="Leave Encashment") 8 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/create_marginal_relief_field_for_india_localisation.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe and Contributors 2 | # License: GNU General Public License v3. See license.txt 3 | 4 | import frappe 5 | 6 | from hrms.regional.india.setup import make_custom_fields 7 | 8 | 9 | def execute(): 10 | company = frappe.get_all("Company", filters={"country": "India"}) 11 | if not company: 12 | return 13 | 14 | make_custom_fields() 15 | 16 | frappe.reload_doc("payroll", "doctype", "income_tax_slab") 17 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/enable_allow_checkin_setting.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | settings = frappe.get_single("HR Settings") 6 | settings.allow_employee_checkin_from_mobile_app = 1 7 | settings.flags.ignore_mandatory = True 8 | settings.flags.ignore_permissions = True 9 | settings.save() 10 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/migrate_loan_type_to_loan_product.py: -------------------------------------------------------------------------------- 1 | from frappe.model.utils.rename_field import rename_field 2 | 3 | 4 | def execute(): 5 | try: 6 | rename_field("Salary Slip Loan", "loan_type", "loan_product") 7 | 8 | except Exception as e: 9 | if e.args[0] != 1054: 10 | raise 11 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/rename_enable_late_entry_early_exit_grace_period.py: -------------------------------------------------------------------------------- 1 | from frappe.model.utils.rename_field import rename_field 2 | 3 | 4 | def execute(): 5 | try: 6 | rename_field("Shift Type", "enable_entry_grace_period", "enable_late_entry_marking") 7 | rename_field("Shift Type", "enable_exit_grace_period", "enable_early_exit_marking") 8 | 9 | except Exception as e: 10 | if e.args[0] != 1054: 11 | raise 12 | -------------------------------------------------------------------------------- /hrms/patches/v15_0/set_default_asset_action_in_fnf.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def execute(): 5 | FnF = frappe.qb.DocType("Full and Final Asset") 6 | frappe.qb.update(FnF).set(FnF.action, "Return").where((FnF.action.isnull()) | (FnF.action == "")).run() 7 | -------------------------------------------------------------------------------- /hrms/payroll/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/additional_salary/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/additional_salary/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/bulk_salary_structure_assignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/bulk_salary_structure_assignment/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_benefit_application/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_benefit_application/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_benefit_application_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_benefit_application_detail/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeBenefitApplicationDetail(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_benefit_claim/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_benefit_claim/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_benefit_claim/test_employee_benefit_claim.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeBenefitClaim(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_cost_center/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_cost_center/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_cost_center/employee_cost_center.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeCostCenter(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_incentive/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_incentive/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_incentive/test_employee_incentive.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeIncentive(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_other_income/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_other_income/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_other_income/employee_other_income.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Other Income", { 5 | // refresh: function(frm) { 6 | // } 7 | }); 8 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_other_income/employee_other_income.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeOtherIncome(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_other_income/test_employee_other_income.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestEmployeeOtherIncome(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_category/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_category/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_category/employee_tax_exemption_category.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Tax Exemption Category", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_category/employee_tax_exemption_category.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class EmployeeTaxExemptionCategory(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_category/test_employee_tax_exemption_category.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeTaxExemptionCategory(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_declaration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_declaration/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_declaration_category/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_declaration_category/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeTaxExemptionDeclarationCategory(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_proof_submission/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_proof_submission/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_proof_submission_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_proof_submission_detail/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class EmployeeTaxExemptionProofSubmissionDetail(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_sub_category/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/employee_tax_exemption_sub_category/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_sub_category/employee_tax_exemption_sub_category.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Employee Tax Exemption Sub Category", { 5 | refresh: function (frm) {}, 6 | }); 7 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/employee_tax_exemption_sub_category/test_employee_tax_exemption_sub_category.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestEmployeeTaxExemptionSubCategory(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/gratuity/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity/gratuity_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "reference_name", 7 | "non_standard_fieldnames": { 8 | "Additional Salary": "ref_docname", 9 | }, 10 | "transactions": [{"label": _("Payment"), "items": ["Payment Entry", "Additional Salary"]}], 11 | } 12 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity/gratuity_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Gratuity"] = { 2 | get_indicator: function (doc) { 3 | let status_color = { 4 | Draft: "red", 5 | Submitted: "blue", 6 | Cancelled: "red", 7 | Paid: "green", 8 | Unpaid: "orange", 9 | }; 10 | return [__(doc.status), status_color[doc.status], "status,=," + doc.status]; 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_applicable_component/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/gratuity_applicable_component/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_applicable_component/gratuity_applicable_component.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class GratuityApplicableComponent(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_rule/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/gratuity_rule/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_rule/gratuity_rule_dashboard.py: -------------------------------------------------------------------------------- 1 | from frappe import _ 2 | 3 | 4 | def get_data(): 5 | return { 6 | "fieldname": "gratuity_rule", 7 | "transactions": [{"label": _("Gratuity"), "items": ["Gratuity"]}], 8 | } 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_rule/test_gratuity_rule.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestGratuityRule(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_rule_slab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/gratuity_rule_slab/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class GratuityRuleSlab(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/income_tax_slab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/income_tax_slab/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/income_tax_slab/income_tax_slab.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | # import frappe 8 | import erpnext 9 | 10 | 11 | class IncomeTaxSlab(Document): 12 | def validate(self): 13 | if self.company: 14 | self.currency = erpnext.get_company_currency(self.company) 15 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/income_tax_slab/test_income_tax_slab.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestIncomeTaxSlab(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/income_tax_slab_other_charges/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/income_tax_slab_other_charges/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class IncomeTaxSlabOtherCharges(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_employee_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/payroll_employee_detail/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_employee_detail/payroll_employee_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class PayrollEmployeeDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_entry/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/payroll_entry/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_entry/payroll_entry_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "payroll_entry", 4 | "non_standard_fieldnames": { 5 | "Journal Entry": "reference_name", 6 | "Payment Entry": "reference_name", 7 | }, 8 | "transactions": [{"items": ["Salary Slip", "Journal Entry"]}], 9 | } 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_entry/payroll_entry_list.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors 2 | // License: GNU General Public License v3. See license.txt 3 | 4 | // render 5 | frappe.listview_settings["Payroll Entry"] = { 6 | has_indicator_for_draft: 1, 7 | get_indicator: function (doc) { 8 | var status_color = { 9 | Draft: "red", 10 | Submitted: "blue", 11 | Queued: "orange", 12 | Failed: "red", 13 | Cancelled: "red", 14 | }; 15 | return [__(doc.status), status_color[doc.status], "status,=," + doc.status]; 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_period/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/payroll_period/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_period/payroll_period_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "payroll_period", 4 | "transactions": [ 5 | {"items": ["Employee Tax Exemption Proof Submission", "Employee Tax Exemption Declaration"]}, 6 | ], 7 | } 8 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_period/test_payroll_period.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestPayrollPeriod(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_period_date/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/payroll_period_date/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_period_date/payroll_period_date.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class PayrollPeriodDate(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_settings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/payroll_settings/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/payroll_settings/test_payroll_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests import IntegrationTestCase 6 | 7 | 8 | class TestPayrollSettings(IntegrationTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/retention_bonus/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/retention_bonus/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/retention_bonus/test_retention_bonus.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestRetentionBonus(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_component/README.md: -------------------------------------------------------------------------------- 1 | Type of earning and deductions that is a part of the salary. 2 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_component/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_component/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_component_account/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_component_account/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_component_account/salary_component_account.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class SalaryComponentAccount(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_detail/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_detail/salary_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | from frappe.model.document import Document 6 | 7 | 8 | class SalaryDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip/README.md: -------------------------------------------------------------------------------- 1 | Details of monthly salary paid for an Employee. -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_slip/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_leave/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_slip_leave/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_leave/salary_slip_leave.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class SalarySlipLeave(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_loan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_slip_loan/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_loan/salary_slip_loan.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class SalarySlipLoan(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_timesheet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_slip_timesheet/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_slip_timesheet/salary_slip_timesheet.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class SalarySlipTimesheet(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure/README.md: -------------------------------------------------------------------------------- 1 | Salary Template for an Employee, basis of which monthly Salary is calculated. -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_structure/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure/salary_structure_dashboard.py: -------------------------------------------------------------------------------- 1 | def get_data(): 2 | return { 3 | "fieldname": "salary_structure", 4 | "non_standard_fieldnames": {"Employee Grade": "default_salary_structure"}, 5 | "transactions": [ 6 | {"items": ["Salary Structure Assignment", "Salary Slip"]}, 7 | {"items": ["Employee Grade"]}, 8 | ], 9 | } 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure/salary_structure_list.js: -------------------------------------------------------------------------------- 1 | frappe.listview_settings["Salary Structure"] = { 2 | onload: function (list_view) { 3 | list_view.page.add_inner_button(__("Bulk Salary Structure Assignment"), function () { 4 | frappe.set_route("Form", "Bulk Salary Structure Assignment"); 5 | }); 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure_assignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_structure_assignment/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_structure_assignment/test_salary_structure_assignment.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors 2 | # See license.txt 3 | 4 | from frappe.tests import IntegrationTestCase 5 | 6 | 7 | class TestSalaryStructureAssignment(IntegrationTestCase): 8 | pass 9 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_withholding/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_withholding/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_withholding_cycle/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/salary_withholding_cycle/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/salary_withholding_cycle/salary_withholding_cycle.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class SalaryWithholdingCycle(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /hrms/payroll/doctype/taxable_salary_slab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/doctype/taxable_salary_slab/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/doctype/taxable_salary_slab/taxable_salary_slab.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors 2 | # For license information, please see license.txt 3 | 4 | 5 | # import frappe 6 | from frappe.model.document import Document 7 | 8 | 9 | class TaxableSalarySlab(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /hrms/payroll/notification/as: -------------------------------------------------------------------------------- 1 | update from `tabNotification` set module='Payroll' where name = "Retention Bonus" 2 | -------------------------------------------------------------------------------- /hrms/payroll/notification/retention_bonus/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/notification/retention_bonus/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/notification/retention_bonus/retention_bonus.md: -------------------------------------------------------------------------------- 1 |

{{ _("Hello") }},

2 | 3 |

{{ _("Retention Bonus for") }} {{ doc.employee_name }} {{ _("due on") }} {{ doc.bonus_payment_date }}

-------------------------------------------------------------------------------- /hrms/payroll/notification/retention_bonus/retention_bonus.py: -------------------------------------------------------------------------------- 1 | def get_context(context): 2 | # do your magic here 3 | pass 4 | -------------------------------------------------------------------------------- /hrms/payroll/print_format/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/print_format/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/print_format/salary_slip_based_on_timesheet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/print_format/salary_slip_based_on_timesheet/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/print_format/salary_slip_standard/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/print_format/salary_slip_standard/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/print_format/salary_slip_with_year_to_date/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/print_format/salary_slip_with_year_to_date/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/bank_remittance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/bank_remittance/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/income_tax_computation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/income_tax_computation/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/income_tax_deductions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/income_tax_deductions/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/income_tax_deductions/income_tax_deductions.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | /* eslint-disable */ 4 | 5 | frappe.query_reports["Income Tax Deductions"] = $.extend( 6 | {}, 7 | hrms.salary_slip_deductions_report_filters, 8 | ); 9 | -------------------------------------------------------------------------------- /hrms/payroll/report/professional_tax_deductions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/professional_tax_deductions/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/professional_tax_deductions/professional_tax_deductions.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | /* eslint-disable */ 4 | 5 | frappe.query_reports["Professional Tax Deductions"] = $.extend( 6 | {}, 7 | hrms.salary_slip_deductions_report_filters, 8 | ); 9 | -------------------------------------------------------------------------------- /hrms/payroll/report/provident_fund_deductions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/provident_fund_deductions/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/provident_fund_deductions/provident_fund_deductions.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | /* eslint-disable */ 4 | 5 | frappe.query_reports["Provident Fund Deductions"] = $.extend( 6 | {}, 7 | hrms.salary_slip_deductions_report_filters, 8 | ); 9 | -------------------------------------------------------------------------------- /hrms/payroll/report/salary_payments_based_on_payment_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/salary_payments_based_on_payment_mode/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/salary_payments_via_ecs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/salary_payments_via_ecs/__init__.py -------------------------------------------------------------------------------- /hrms/payroll/report/salary_payments_via_ecs/salary_payments_via_ecs.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | /* eslint-disable */ 4 | 5 | frappe.query_reports["Salary Payments via ECS"] = $.extend( 6 | {}, 7 | hrms.salary_slip_deductions_report_filters, 8 | ); 9 | 10 | frappe.query_reports["Salary Payments via ECS"]["filters"].push({ 11 | fieldname: "type", 12 | label: __("Type"), 13 | fieldtype: "Select", 14 | options: ["", "Bank", "Cash", "Cheque"], 15 | }); 16 | -------------------------------------------------------------------------------- /hrms/payroll/report/salary_register/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/payroll/report/salary_register/__init__.py -------------------------------------------------------------------------------- /hrms/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/.gitkeep -------------------------------------------------------------------------------- /hrms/public/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "js/hrms.min.js": [ 3 | "public/js/utils.js" 4 | ], 5 | "js/hierarchy-chart.min.js": [ 6 | "public/js/hierarchy_chart/hierarchy_chart_desktop.js", 7 | "public/js/hierarchy_chart/hierarchy_chart_mobile.js" 8 | ] 9 | } -------------------------------------------------------------------------------- /hrms/public/images/frappe-hr-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/images/frappe-hr-logo.png -------------------------------------------------------------------------------- /hrms/public/js/erpnext/bank_transaction.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Bank Transaction", { 5 | get_payment_doctypes: function () { 6 | return [ 7 | "Payment Entry", 8 | "Journal Entry", 9 | "Sales Invoice", 10 | "Purchase Invoice", 11 | "Expense Claim", 12 | ]; 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /hrms/public/js/erpnext/department.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on("Department", { 5 | refresh: function (frm) { 6 | frm.set_query("payroll_cost_center", function () { 7 | return { 8 | filters: { 9 | company: frm.doc.company, 10 | is_group: 0, 11 | }, 12 | }; 13 | }); 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /hrms/public/js/hierarchy-chart.bundle.js: -------------------------------------------------------------------------------- 1 | import "./hierarchy_chart/hierarchy_chart_desktop.js"; 2 | import "./hierarchy_chart/hierarchy_chart_mobile.js"; 3 | import "./templates/node_card.html"; 4 | -------------------------------------------------------------------------------- /hrms/public/js/hrms.bundle.js: -------------------------------------------------------------------------------- 1 | import "./templates/employees_with_unmarked_attendance.html"; 2 | import "./templates/feedback_summary.html"; 3 | import "./templates/feedback_history.html"; 4 | import "./templates/rating.html"; 5 | import "./utils"; 6 | import "./utils/payroll_utils"; 7 | import "./utils/leave_utils"; 8 | import "./salary_slip_deductions_report_filters.js"; 9 | -------------------------------------------------------------------------------- /hrms/public/js/interview.bundle.js: -------------------------------------------------------------------------------- 1 | import "./templates/interview_feedback.html"; 2 | import "./templates/circular_progress_bar.html"; 3 | -------------------------------------------------------------------------------- /hrms/public/js/performance.bundle.js: -------------------------------------------------------------------------------- 1 | import "./performance/performance_feedback.js"; 2 | import "./templates/performance_feedback.html"; 3 | -------------------------------------------------------------------------------- /hrms/public/js/utils/leave_utils.js: -------------------------------------------------------------------------------- 1 | hrms.leave_utils = { 2 | add_view_ledger_button(frm) { 3 | if (frm.doc.__islocal || frm.doc.docstatus != 1) return; 4 | 5 | frm.add_custom_button(__("View Ledger"), () => { 6 | frappe.route_options = { 7 | from_date: frm.doc.from_date, 8 | to_date: frm.doc.to_date, 9 | transaction_type: frm.doc.doctype, 10 | transaction_name: frm.doc.name, 11 | }; 12 | frappe.set_route("query-report", "Leave Ledger"); 13 | }); 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /hrms/public/manifest/apple-icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-icon-180.png -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1125-2436.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1125-2436.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1136-640.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1136-640.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1170-2532.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1170-2532.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1179-2556.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1179-2556.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1242-2208.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1242-2208.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1242-2688.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1242-2688.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1284-2778.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1284-2778.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1290-2796.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1290-2796.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1334-750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1334-750.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1536-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1536-2048.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1620-2160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1620-2160.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1668-2224.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1668-2224.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1668-2388.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1668-2388.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-1792-828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-1792-828.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2048-1536.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2048-1536.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2048-2732.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2048-2732.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2160-1620.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2160-1620.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2208-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2208-1242.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2224-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2224-1668.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2388-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2388-1668.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2436-1125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2436-1125.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2532-1170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2532-1170.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2556-1179.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2556-1179.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2688-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2688-1242.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2732-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2732-2048.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2778-1284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2778-1284.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-2796-1290.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-2796-1290.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-640-1136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-640-1136.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-750-1334.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-750-1334.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/apple-splash-828-1792.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/apple-splash-828-1792.jpg -------------------------------------------------------------------------------- /hrms/public/manifest/favicon-196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/favicon-196.png -------------------------------------------------------------------------------- /hrms/public/manifest/manifest-icon-192.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/manifest-icon-192.maskable.png -------------------------------------------------------------------------------- /hrms/public/manifest/manifest-icon-512.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/public/manifest/manifest-icon-512.maskable.png -------------------------------------------------------------------------------- /hrms/public/scss/hrms.bundle.scss: -------------------------------------------------------------------------------- 1 | @import "./feedback"; 2 | @import "./circular_progress"; 3 | @import "./hierarchy_chart"; 4 | -------------------------------------------------------------------------------- /hrms/templates/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/templates/__init__.py -------------------------------------------------------------------------------- /hrms/templates/emails/daily_work_summary.txt: -------------------------------------------------------------------------------- 1 | {{ title }} 2 | 3 | {% for reply in replies %} 4 | {{ reply.sender_name }}: 5 | {{ reply.content }} 6 | 7 | 8 | {% endfor %} 9 | {% if did_not_reply %} 10 | {{ did_not_reply_title }}: {{ did_not_reply }} 11 | {% endif %} -------------------------------------------------------------------------------- /hrms/templates/emails/holiday_reminder.html: -------------------------------------------------------------------------------- 1 |
2 | {{ reminder_text }} 3 |

{{ message }}

4 |
5 | 6 | {% if advance_holiday_reminder %} 7 | {% if holidays | len > 0 %} 8 |
    9 | {% for holiday in holidays %} 10 |
  1. {{ frappe.format(holiday.holiday_date, 'Date') }} - {{ holiday.description }}
  2. 11 | {% endfor %} 12 |
13 | {% else %} 14 |

You have no upcoming holidays this {{ frequency }}.

15 | {% endif %} 16 | {% endif %} 17 | -------------------------------------------------------------------------------- /hrms/templates/includes/salary_slip_log.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% for key in keys %} 6 | 7 | {% endfor %} 8 | 9 | 10 | 11 | {% for ss_dict in ss_list %} 12 | 13 | {% for key, value in ss_dict.items()|sort %} 14 | 15 | {% endfor %} 16 | 17 | {% endfor %} 18 | 19 |
{{title}}
{{ key }}
{{value}}
20 | -------------------------------------------------------------------------------- /hrms/templates/pages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/templates/pages/__init__.py -------------------------------------------------------------------------------- /hrms/www/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/www/__init__.py -------------------------------------------------------------------------------- /hrms/www/jobs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/hrms/www/jobs/__init__.py -------------------------------------------------------------------------------- /hrms/www/roster.py: -------------------------------------------------------------------------------- 1 | import frappe 2 | 3 | 4 | def get_context(context): 5 | csrf_token = frappe.sessions.get_csrf_token() 6 | frappe.db.commit() # nosempgrep 7 | context = frappe._dict() 8 | context.csrf_token = csrf_token 9 | return context 10 | -------------------------------------------------------------------------------- /roster/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local -------------------------------------------------------------------------------- /roster/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "frappe-ui"; 2 | -------------------------------------------------------------------------------- /roster/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Roster 8 | 9 | 10 |
11 |
12 |
13 | 14 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /roster/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /roster/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/hrms/0730c4354726078864f5d4703d86d9e3e62977e4/roster/public/favicon.png -------------------------------------------------------------------------------- /roster/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /roster/src/index.css: -------------------------------------------------------------------------------- 1 | @import "frappe-ui/src/style.css"; 2 | -------------------------------------------------------------------------------- /roster/src/main.ts: -------------------------------------------------------------------------------- 1 | import "./index.css"; 2 | 3 | import { createApp } from "vue"; 4 | import router from "./router"; 5 | import App from "./App.vue"; 6 | 7 | import { Button, setConfig, frappeRequest, resourcesPlugin } from "frappe-ui"; 8 | 9 | const app = createApp(App); 10 | 11 | setConfig("resourceFetcher", frappeRequest); 12 | 13 | app.use(router); 14 | app.use(resourcesPlugin); 15 | 16 | app.component("Button", Button); 17 | app.mount("#app"); 18 | -------------------------------------------------------------------------------- /roster/src/router.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from "vue-router"; 2 | 3 | const routes = [ 4 | { 5 | path: "/", 6 | name: "Home", 7 | component: () => import("./views/Home.vue"), 8 | }, 9 | ]; 10 | 11 | const router = createRouter({ 12 | history: createWebHistory("/hr/roster"), 13 | routes, 14 | }); 15 | 16 | export default router; 17 | -------------------------------------------------------------------------------- /roster/src/utils/dayjs.ts: -------------------------------------------------------------------------------- 1 | import dayjs from "dayjs"; 2 | import updateLocale from "dayjs/plugin/updateLocale"; 3 | import localizedFormat from "dayjs/plugin/localizedFormat"; 4 | import isSameOrBefore from "dayjs/plugin/isSameOrBefore"; 5 | import isSameOrAfter from "dayjs/plugin/isSameOrAfter"; 6 | import customParseFormat from "dayjs/plugin/customParseFormat"; 7 | 8 | dayjs.extend(updateLocale); 9 | dayjs.extend(localizedFormat); 10 | dayjs.extend(isSameOrBefore); 11 | dayjs.extend(isSameOrAfter); 12 | dayjs.extend(customParseFormat); 13 | 14 | export default dayjs; 15 | -------------------------------------------------------------------------------- /roster/tailwind.config.js: -------------------------------------------------------------------------------- 1 | import frappeUIPreset from "frappe-ui/src/tailwind/preset"; 2 | export default { 3 | presets: [frappeUIPreset], 4 | content: [ 5 | "./index.html", 6 | "./src/**/*.{vue,js,ts,jsx,tsx}", 7 | "./node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}", 8 | "../node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}", 9 | ], 10 | theme: {}, 11 | plugins: [], 12 | }; 13 | -------------------------------------------------------------------------------- /roster/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "checkJs": true, 5 | "target": "ESNext", 6 | "useDefineForClassFields": true, 7 | "module": "ESNext", 8 | "moduleResolution": "Node", 9 | "strict": true, 10 | "jsx": "preserve", 11 | "sourceMap": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "esModuleInterop": true, 15 | "lib": ["ESNext", "DOM"], 16 | "skipLibCheck": true, 17 | "types": ["vite/client"] 18 | }, 19 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue", "index.d.ts"] 20 | } 21 | --------------------------------------------------------------------------------