Chapter 14 — Human Resources
Module codes: HR, ATT (attendance), LEAVE, PAYROLL, RECRUITMENT
Home: /hr/
HR is several related areas under one roof. Use the table to jump to yours.
| Area | Section | Module code |
|---|---|---|
| Employee records | 14.2–14.4 | HR |
| Attendance | 14.5–14.9 | ATT |
| Leave | 14.10–14.14 | LEAVE |
| Payroll | 14.15–14.19 | PAYROLL |
| Recruitment | 14.20–14.25 | RECRUITMENT |
| Separation and offboarding | 14.26–14.28 | HR / LEAVE |
| Employee self-service | 14.29 | — |
14.1 Before you start
HR depends on Chapter 3 being done:
[ ] Companies exist
[ ] Departments exist
[ ] Designations exist, with "Reports to" set — this drives leave approval
Employee records are also what connect a user account to HR self-service. A user with no linked employee record has no attendance, no leave and no payslips. The link is made on the user (Chapter 4).
14.2 Employee records
/employees/ directory
/employees/add/ new employee
/employees/<id>/ detail
/employees/<id>/edit/ edit
/employees/import/ bulk import
/employees/import/sample-csv/ import template
/employees/types/ employee types
/employees/bulk-update/ bulk changes
Employee types
Screen: /employees/types/
Categories such as Permanent, Contract, Probation, Daily wage. They are used by payroll rules and by permission scoping, so create them before adding employees.
Creating an employee
Screen: /employees/add/
The form is organised in tabs.
Personal - Name, father's or husband's name, date of birth, gender, marital status. - National identity number, passport number. - Photograph.
Contact - Present address and permanent address. Both are captured; do not put the same address in twice if they genuinely differ, because the permanent address is what is used for statutory correspondence. - Personal phone, email. - Emergency contact.
Employment - Employee code — your own numbering. Unique. - Company, department, designation — the designation is what routes leave approvals, so check it. - Employee type. - Date of joining, probation period, confirmation date. - Reporting manager. - Work location.
Salary and bank - Bank, branch, account number, for salary transfer. - Basic salary and allowances — or leave these to the salary record (section 14.16) if you keep salary history separately.
Family members - Add dependants with the Add button. Used for benefits and for emergency records.
Documents - Upload contracts, certificates, identity documents. Each with a type and an expiry date where relevant, so expiring documents can be found.
Save.
Importing employees in bulk
- Download the template at
/employees/import/sample-csv/. - Check the field configuration at
/employees/import/fields-config/to see which columns are expected and which are required. - Fill in the file and upload it at
/employees/import/. - Review the result. Failed rows are reported with the reason.
Import departments, designations and employee types before the employees that reference them.
14.3 Bulk updates
/employees/bulk-update/ changes a field across many selected employees at once — a
department reorganisation, a work location change. Filter first, review the selection,
then apply.
14.4 The employee directory
/employees/ lists employees with filters by company, department, designation,
employee type and status, and a card view. It is the screen most people mean when they
say "the staff list".
14.5 Attendance: how it works
Attendance can arrive three ways:
Biometric device ──► ┐
File import ──► ├──► Attendance records ──► Reports and payroll
Mobile check-in ──► ┘ ▲
│
Manual requests, after approval
Whichever route it arrives by, the record is the same, and payroll reads it.
14.6 Attendance setup
Devices
/attendance/devices/ device list
/attendance/devices/sync-status/<id>/ sync status for one device
Register each biometric device with its identifier, location and connection details. The sync status page shows when it last reported and how many records came in — the first place to look when someone's punches are missing.
Settings
Screen: /attendance/settings/
Rules that decide how raw punches become attendance:
- Grace period before a late mark.
- Half-day and absent thresholds.
- Rounding of check-in and check-out times.
- Whether the mobile check-in application is allowed.
Set these to your written policy before going live. Changing them later does not retrospectively re-mark old records.
Shifts
/attendance/shifts/ shift definitions
/attendance/employee-shifts/ assigning shifts to employees
- Create each shift: name, start and end time, break duration, working days, and whether it crosses midnight.
- Assign shifts to employees at
/attendance/employee-shifts/, with effective dates so a change of shift is dated rather than retrospective.
An employee with no shift cannot be marked late or absent correctly, because there is nothing to be late against. Assign shifts to everyone before relying on attendance reports.
14.7 Getting attendance in
From devices
Devices push records automatically. Check /attendance/devices/ for last-seen times.
By file import
/attendance/import/ import
/attendance/import/status/<id>/ result of an import
- Go to
/attendance/import/and upload the file. - Map the columns.
- Import, then open the status page to see how many records were accepted and which rows failed.
By mobile check-in
Employees can check in and out from their phone where this is enabled in settings. Location is captured with the punch.
Location requires a secure connection. On a plain http address the browser
refuses to give the page a location and check-in will not work. This is a browser rule,
not a product limitation.
14.8 Manual attendance requests
When a punch is genuinely missing — a device failure, a day spent at a customer site — the employee requests a correction rather than anyone editing the record directly.
/attendance/manual-request/ employee submits a request
/attendance/my-manual-requests/ employee tracks their requests
/attendance/manual-approval/ HR queue of pending requests
Employee:
1. Open /attendance/manual-request/.
2. Choose the date, the check-in and check-out times, and give a reason.
3. Submit.
HR:
1. Open /attendance/manual-approval/.
2. Review each request against the reason given.
3. Approve or reject.
Approved requests create the attendance record. This is the only way attendance should be corrected, because it leaves a reason and an approver attached.
14.9 Attendance reports
/attendance/ attendance dashboard
/attendance/records/ raw records
/attendance/my/ my own attendance
/attendance/sheet/day/ daily sheet
/attendance/grouped/ grouped report
/attendance/month/ monthly view
Exports:
/attendance/sheet/export/ daily sheet to file
/attendance/month/export/ monthly summary
/attendance/month/export/detailed/ monthly detail
/attendance/month/export/pdf/ monthly summary as PDF
/attendance/month/export/pdf/detailed/ monthly detail as PDF
| Question | Report |
|---|---|
| Who is in today? | Daily sheet |
| What did this person do all month? | Monthly view |
| How does a department compare? | Grouped report |
| What does payroll need? | Monthly detailed export |
Run and check the monthly report before running payroll. Attendance drives deductions, and a missing punch found after payslips are issued is a much larger problem than one found before.
14.10 Leave: setup
Leave types
/leave/types/ list
/leave/types/add/ new type
For each type — Annual, Sick, Casual, Unpaid, Maternity — set:
| Setting | Meaning |
|---|---|
| Name and code | |
| Days per year | The entitlement |
| Paid or unpaid | Whether payroll deducts |
| Carry forward | Whether unused days roll into next year, and any cap |
| Requires document | Whether a medical certificate or similar must be attached |
| Minimum notice | How far ahead it must be applied for |
| Applies to | Which employee types are entitled |
Holiday calendar
/leave/holidays/ calendar
/leave/holidays/add/ add a holiday
/leave/holidays/copy-recurring/ copy recurring holidays to a new year
Public holidays are excluded from leave day counts, so a week's leave spanning a public holiday costs the employee four days rather than five. Load the calendar for the whole year before that year begins, and use copy recurring to carry the fixed-date holidays forward.
Balances
Screen: /leave/balance/
Shows entitlement, taken, pending and remaining per employee per leave type. This is the screen to check before approving anything.
14.11 Applying for leave
Screen: /leave/apply/
- Open
/leave/apply/. - Choose the leave type. Your remaining balance for it is shown.
- Choose the from and to dates. The number of days is calculated, excluding weekends and public holidays.
- Give a reason.
- Attach a document if the type requires one.
- Submit.
Track it at /leave/my-applications/.
14.12 Approving leave
Leave goes through up to three stages.
Employee applies
│
▼
Line approval ── the manager stage, by department and
│ designation hierarchy
▼
Second line approval ── where the hierarchy has two line steps
│
▼
HR approval ── always final
│
▼
Approved
How many line steps apply depends on the applicant's designation and the reporting hierarchy configured in Chapter 3. A supervisor's application may pass through a deputy manager and then a manager; a deputy manager's may go straight to the head of department. HR always has the last word, because leave is a policy matter as well as an operational one.
Manager stage
Screen: /leave/manager-approval/
- Open the queue. Applications waiting on you are listed.
- Open one. Check the dates, the reason, the employee's remaining balance, and who else in the team is away in the same period.
- Approve or reject. A rejection should carry a reason — the employee sees it.
HR stage
Screen: /leave/hr-approval/
- Open the queue of manager-approved applications.
- Check entitlement and policy compliance.
- Approve or reject.
The balance is updated on final approval, not before. An application approved by a manager but not yet by HR shows as pending in the balance, so the days are visible but not yet spent.
14.13 Adjusting an absence with leave
Screen: /leave/adjust-absence/
Where someone was marked absent but has since produced a valid leave reason, HR can convert the absence to leave, which removes the payroll deduction. This requires HR approval rights and is recorded.
14.14 All applications
Screen: /leave/applications/
The full list with filters by employee, department, type, status and date. Use it for reporting on leave patterns, and for finding an old application when a query arises.
14.15 Payroll: setup
Home: /payroll/
Fiscal years and tax slabs
/payroll/fiscal-years/new/ new fiscal year
/payroll/tax-slabs/ tax slabs
/payroll/slabs/new/ new slab
- Create the fiscal year with its start and end dates.
- Add the tax slabs for that year: the income range, the rate, and any fixed amount.
Tax slabs change with each budget. Create a new fiscal year with new slabs rather than editing last year's — historic payslips must continue to explain themselves.
Attendance rules
Screen: /payroll/attendance-rules/
How attendance turns into money: what a late mark costs, what a half day costs, how absence is deducted, and how overtime is paid. Set these to your written policy and have them signed off before the first run.
14.16 Salary records
/payroll/salaries/ all employees
/payroll/employee/<id>/salary-records/ one employee's history
/payroll/employee/<id>/salary-records/new/ new salary record
A salary record is an employee's pay from an effective date. Raises create a new record rather than editing the old one, so history is preserved and an old payslip still recomputes correctly.
- Open the employee's salary records and select New.
- Enter the effective date.
- Enter the basic salary and each allowance — house rent, conveyance, medical, and any other.
- Save.
14.17 Deductions and loans
/payroll/deductions/ all deductions
/payroll/employee/<id>/deductions/ one employee
/payroll/employee/<id>/deductions/new/ new deduction
Recurring deductions and loan repayments. For each:
- The type and the amount, or the instalment.
- The start date, and the number of instalments or an end date.
The system stops the deduction when the instalments are complete. Employees see their
own at /employee/loans/.
14.18 Running payroll
/payroll/periods/ periods
/payroll/periods/new/ new period
/payroll/periods/<id>/ period detail
/payroll/periods/<id>/calculate/ calculate
/payroll/periods/<id>/delete-runs/ delete the calculated runs
- Create the period — the month, its start and end dates, and the payment date.
- Before calculating, confirm:
[ ] Attendance for the whole period is complete and corrected
[ ] Manual attendance requests are approved or rejected, none pending
[ ] Leave applications for the period are finalised
[ ] Salary records are current, including any mid-month raises
[ ] Deductions and loan instalments are current
[ ] New joiners are in the system with a joining date
[ ] Leavers have their separation completed
- Select Calculate. A payroll run is produced for each employee, made up of earnings, attendance-based deductions, statutory deductions and tax.
- Review the results at
/payroll/periods/<id>/. Look for anything unusual: a net pay far from last month, a zero, a negative. - Open individual runs at
/payroll/periods/<id>/runs/<run>/to see the full breakdown — earnings, each deduction day type (late, early, half day), the additions and deductions detail, and the leave balance used.
If something is wrong, fix the underlying data and use Delete runs to recalculate. Do not adjust the payslip; adjust what produced it.
14.19 Payslips
/payroll/periods/<id>/runs/<run>/payslip/ view
/payroll/periods/<id>/runs/<run>/payslip/pdf/ PDF
/employee/payslips/ employee self-service
Once the run is approved, employees see their own payslips at /employee/payslips/
and can download the PDF.
14.20 Recruitment: the flow
Home: /recruitment/
Requisition ──► Job posting ──► Applications ──► Interviews ──► Offer ──► Hire
(a manager (published (candidates (scheduled (approved
asks for internally apply) and scored) and sent)
a person) and on the
careers page)
14.21 Requisitions
/recruitment/requisitions/ list
/recruitment/requisitions/create/ new
/recruitment/requisitions/<id>/ detail
/recruitment/requisitions/<id>/create-job/ turn it into a job posting
A requisition is a manager's request to fill a post — the department, the designation, how many, why (replacement or new post), and the budget. It is approved before any job is advertised, which is the control that stops headcount growing unnoticed.
Once approved, Create job turns the requisition into a job posting, carrying its details across.
14.22 Job postings
/recruitment/jobs/ list
/recruitment/jobs/create/ new
/recruitment/jobs/<id>/ detail
/recruitment/jobs/<id>/edit/ edit
A job posting carries the title, department, description, requirements, the number of positions, the closing date and the screening questions candidates must answer.
Screening questions
/recruitment/default-questions/ reusable questions
/recruitment/default-questions/add/ add one
Maintain a library of standard questions and add job-specific ones on the posting. Good screening questions are the cheapest filtering you have.
The public careers page
/careers/ list of open jobs
/careers/<id>/apply/ application form
Published jobs appear on a public page that candidates reach without signing in. They apply, upload a CV and answer the screening questions.
After applying, the candidate is emailed links to:
/careers/application/<token>/review/ review what they submitted
/careers/application/<token>/edit/ correct it
/careers/interview/<token>/confirm/ confirm an interview slot
/careers/offer/<token>/ view an offer
These links are personal to the application. Candidates never get a portal login.
14.23 Applications and candidates
/recruitment/applications/ list
/recruitment/applications/<id>/ detail
/recruitment/applications/export/excel/ export
/recruitment/applications/export/pdf/ export
/recruitment/candidates/ candidate list
/recruitment/candidates/<id>/ candidate detail
An application is one person applying for one job. A candidate is the person — so a candidate who has applied three times over two years shows all three applications in one place, with the history.
The application detail page holds the CV, the screening answers, the interview record, the scorecards, and a comment thread with attachments for the hiring team.
14.24 Interviews
/recruitment/interviews/ list
/recruitment/interviews/schedule/<application>/ schedule one
/recruitment/interviews/<id>/ detail
/recruitment/interviews/<id>/scorecard/ score it
/recruitment/interviews/<id>/send-reminder/ remind the candidate
/recruitment/interviews/<id>/cancel/ cancel
- From an application, select Schedule interview.
- Set the round, the date and time, the mode (in person, telephone, video), the location or link, and the panel.
- The candidate is emailed and can confirm through their personal link.
- After the interview, each panel member completes a scorecard against the defined criteria.
- The application shows the combined scores.
Scorecards completed on the day are worth several times more than impressions recalled a week later. Make it part of the interview, not a follow-up task.
14.25 Offers
/recruitment/offers/ list
/recruitment/offers/create/<application>/ create
/recruitment/offers/<id>/ detail
/recruitment/offers/<id>/submit/ submit for approval
/recruitment/offers/<id>/approve/ approve
/recruitment/offers/<id>/reject/ reject
/recruitment/offers/<id>/send/ send to the candidate
/recruitment/offers/<id>/mark-accepted/ record acceptance
/recruitment/offers/<id>/mark-declined/ record decline
- Create the offer from the successful application: designation, salary, joining date, probation, and any conditions.
- Submit it for approval.
- An authorised approver approves or rejects. Nothing goes to the candidate before this.
- Send the offer. The candidate views it through their personal link.
- Record the outcome — accepted or declined.
- On acceptance, create the employee record (section 14.2) using the offer's details.
14.26 Resignation
/resignation/apply/ submit a resignation
/resignation/my/ track your own
/resignation/<id>/withdraw/ withdraw one
An employee submits their own resignation, or a supervisor submits on their behalf. It carries the intended last working day and the reason.
An employee may withdraw a resignation while it is still pending the manager stage. After that, withdrawal is an HR conversation rather than a button.
14.27 Termination
Screen: /separation/terminate/
HR opens a termination case with the reason, the last working day and the notice arrangement. Termination cases are HR-initiated and require offboarding rights.
14.28 Working a separation case
/separation/ offboarding dashboard
/separation/cases/ case list
/separation/cases/<id>/ case detail
/separation/manager-queue/ manager's pending queue
/separation/cases/<id>/manager-approve/ manager approves
/separation/cases/<id>/manager-reject/ manager rejects
/separation/cases/<id>/hr-approve/ HR approves
/separation/cases/<id>/hr-reject/ HR rejects
/separation/cases/<id>/complete/ complete the separation
The flow:
Resignation or termination raised
│
▼
Manager approval (/separation/manager-queue/)
│
▼
HR approval
│
▼
Clearance each department signs off
│
▼
Complete the employee record is updated
Clearance is tracked per department on the case detail page: IT returns equipment and closes accounts, finance settles advances and loans, stores collects issued items, HR collects identity cards. Each is signed off individually so nothing is assumed.
Complete is the final step. It updates the employee master record to reflect that the person has left. Do not complete a case with clearance outstanding — after completion, chasing a returned laptop is a phone call rather than a workflow.
Deactivating the user account
Completing the separation does not by itself remove the person's sign-in. Deactivate their user account as described in Chapter 4, and reassign any tickets, tasks or approvals sitting with them.
14.29 Employee self-service
Every employee with a linked user account has:
/employee/dashboard/ personal dashboard
/attendance/my/ own attendance
/leave/apply/ apply for leave
/leave/my-applications/ own leave applications
/leave/balance/ own leave balance
/employee/payslips/ own payslips
/employee/loans/ own deductions and loans
/attendance/manual-request/ request an attendance correction
/resignation/apply/ submit a resignation
These screens are scoped to the signed-in person by the own data only permission setting (Chapter 4). An employee cannot see anyone else's record through them.
The same screens are available on a phone through the mobile app — Chapter 22.
14.30 Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| An employee has no leave or payslip screens | Their user account is not linked to an employee record | Link it on the user |
| Leave approval reaches nobody | The designation has no Reports to, or nobody holds approval rights in that department | Fix the designation chain (Chapter 3); check approver roles |
| Leave days calculated wrongly | Public holidays are missing from the calendar | Load the holiday calendar for the year |
| An employee is marked absent when they were present | Missing punch, or no shift assigned | Raise a manual attendance request; assign a shift |
| Attendance records stop arriving | Device offline or sync failing | Check /attendance/devices/ for last-seen time |
| Mobile check-in does nothing | The site is being used over an insecure connection | Location requires https |
| Payroll shows zero for an employee | No current salary record, or no attendance | Create the salary record; check attendance |
| Payroll deducts too much | Attendance rules, or unapproved leave counted as absence | Approve the leave, then recalculate |
| A payslip is wrong | Data behind it is wrong | Fix the data, delete the runs, recalculate — never edit the payslip |
| Candidates cannot apply | The job is not published, or the closing date has passed | Check the job posting |
| An offer cannot be sent | It is not approved | Submit and approve it first |
| A leaver still appears in the directory | The separation was never completed | Complete the case |
| A leaver can still sign in | Completing a separation does not deactivate the user | Deactivate the account (Chapter 4) |