├── .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 |
2 |
8 | {{ __(props.message) }}
9 |
10 |
11 |
12 |
18 |
--------------------------------------------------------------------------------
/frontend/src/components/icons/AttendanceIcon.vue:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
--------------------------------------------------------------------------------
/frontend/src/components/icons/HomeIcon.vue:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
--------------------------------------------------------------------------------
/frontend/src/components/icons/LeaveIcon.vue:
--------------------------------------------------------------------------------
1 |
2 |
19 |
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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
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 |
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 | - {{ frappe.format(holiday.holiday_date, 'Date') }} - {{ holiday.description }}
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 | {{title}}
3 |
4 |
5 | {% for key in keys %}
6 | {{ key }} |
7 | {% endfor %}
8 |
9 |
10 |
11 | {% for ss_dict in ss_list %}
12 |
13 | {% for key, value in ss_dict.items()|sort %}
14 | {{value}} |
15 | {% endfor %}
16 |
17 | {% endfor %}
18 |
19 |
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 |
2 |
3 |
4 |
5 |
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 |
--------------------------------------------------------------------------------