ERP · Human Resources module

Lifecycle Ledger

What the HR module can actually do today, verified page-by-page against the running code and organized the way an employee walks it — from requisition to retirement.

Verified against erp-backend + erp-frontend sourceMethod every page and its matching controller read directly, not inferredScope 12 lifecycle stages + ESS/MSS
01

Recruitment

Built

Job openings, candidates, interviews, selection — the full pipeline exists and is wired end to end.

  • Job Requisitionsopen a requisition against an org unit and designation, set the opening count, track status (Open / On Hold / Closed).
  • Jobspublish a posting against a requisition with a location and employment type; mark it Open or Closed.
  • Candidateslog applicants per posting, capture source and resume link, move them through Applied → Screening → Interviewing → Offered → Hired → Rejected.
  • Interviewsschedule a round against an internal employee as interviewer, record a Pass / Fail / Pending outcome and free-text feedback.
  • Offersdraft an offer with salary, joining date and expiry date; track it Draft → Sent → Accepted / Declined / Withdrawn.

Gap — there’s no automatic hand-off from an accepted offer to a new Employee record; HR still creates that manually in Hiring.

02

Hiring

Partial

Offer letter, employee creation, joining details.

  • Employee creationcode, name, email, designation, reporting manager, employment type and date of joining captured at intake.
  • Login provisioninggenerate a username and one-time password for a new hire, or reset it later from their record.

Gap — no offer-letter document generation or e-signature, and no link back to the requisition/offer that triggered the hire.

03

Onboarding

Partial

Documents, bank/PF/ESI details, onboarding tasks.

  • Employee Documentsupload, download and delete files (ID proof, contracts, and similar) against an employee, tagged by document type.
  • Statutory & banking fieldsPAN, masked Aadhaar, UAN, ESI number, bank account + IFSC, and an emergency contact all exist on the employee record, but only PAN and UAN appear on the quick-create form today; the rest need a direct API call until a fuller edit form exists.

Gap — no onboarding task checklist or workflow (asset issuance, policy acknowledgment, and so on).

04

Employee Management

Built

Profile, department, designation, location, documents — the most complete stage in the module.

  • Employeesa searchable directory showing designation, org unit, manager and status; every field editable.
  • Employee profile pagea per-employee view of core details, access/credential status, and direct reports.
  • Reporting linereassign a manager, view an employee's direct reports, or browse the whole company as a lazily-loaded org chart.
  • Org Structurea company → branch → department tree, each level independently creatable, editable and deletable.
  • Designations & Gradeseach designation links to exactly one grade; grade level 1 is the most senior.
  • Locationsa master list of physical offices, referenced by job postings and (once extended) employee assignment.
05

Attendance & Leave

Built

Attendance, shifts, holidays, leave requests — including approvals.

  • Attendancemark Present / Absent / Half-day / On-leave per employee per date, with remarks.
  • Shiftsdefine named shifts with start/end time and a grace period.
  • Rosterassign an employee to a shift for an effective date range.
  • Attendance Regularizationan employee requests a corrected status for a past date; pending requests can be approved or rejected.
  • Overtimelog extra hours worked with a reason; pending entries can be approved or rejected.
  • Leaveapply for Annual / Sick / Unpaid / Other leave over a date range; pending requests can be approved or rejected, including directly from the Dashboard.
  • Holidaysmaintain the company holiday calendar, optionally recurring every year.
06

Payroll

Built

Salary calculation, deductions, payslips — component-based, not a flat structure.

  • Salary Componentsdefine named Earning/Deduction components, each Flat or a Percentage-of-Basic, flagged taxable, basic, and active.
  • Salary Structuresassemble an employee's pay from those components with an effective date; gross pay, deductions and net pay resolve automatically.
  • Payroll Runsopen a run for a given month/year, then process it.
  • Payslipsgenerated per employee per run, viewable by run or drilled into per employee, with the full component breakdown.
07

Benefits & Compliance

Partial

PF, ESI, TDS, PT, statutory compliance.

  • Tax Configthe API supports creating and updating per-financial-year tax configuration, but no page renders it.

Gap — the /finance/tax-config sidebar link has no matching route, so this is currently unreachable from the UI. And no PF, ESI or professional-tax calculation exists — the ESI number captured at onboarding is only an identifier, not a computed contribution.

08

Performance

Not built

Goals, appraisals, reviews, ratings.

No controller, page, or data model exists for this stage in either repository yet.

09

Career

Not built

Promotion, increment, transfers, career progression.

Reassigning a manager, or editing an employee's designation and grade, is possible via the existing Employee Management APIs — but there's no dedicated promotion/increment/transfer workflow, approval trail, or career-history record.

10

Exit

Not built

Resignation, notice period, clearance.

An employee's status can be flipped to Inactive or Terminated, but there's no resignation capture, notice-period tracking, or clearance checklist.

11

Full & Final

Not built

Pending salary, leave encashment, deductions, settlement.

No settlement calculation exists yet.

12

Retirement

Not built

Retirement processing and applicable benefits/documents.

No retirement-specific processing exists; this would likely reuse Exit and Full & Final once those are built.

Employee & Manager Self-Service

Minimal

Cuts across every stage above rather than being one itself — today it's the thinnest layer in the module.

  • My Detailsa signed-in user can see their own username, tenant, role and timezone (read-only).
  • Inline manager approvalsa manager acts on Leave, Overtime and Regularization requests directly from those pages, and pending leave also surfaces as a Dashboard widget.

Gap — no dedicated self-service portal: an employee can’t see their own payslips, attendance history or leave balance in one place, and there’s no manager-scoped “my team” view distinct from the full admin tables.

Worth flagging

The in-app Help Center is out of date

/help still lists Recruitment, employee documents, and login-credential generation under its Roadmap tab — all three are live in the code as of this review. Its Docs tab is also missing Shifts, Roster, Regularization, and Overtime entirely. This ledger reflects the code directly; the in-app page doesn’t yet.

Payroll is already component-based

Earlier planning notes described Salary Structure as a flat basic/HRA/allowances model. That’s no longer accurate — Salary Components and component-based Salary Structures are both live, ahead of where prior scope discussions assumed the module stood.