Leave Setup
Everything leave runs on, in one tabbed workspace: the leave year, the leave types, the staffing floors, the statutory checks, and the buttons that run the module's jobs by hand.
Where: HR → Leave Management → Leave Setup · Who: HR administrators
Before you start: the company's departments, ranks and supervisors should be in place, because approvals are routed through supervisors and department heads, and rank allocations attach to ranks. If you want HR as a final approver, assign someone the HR Leave Approval Manager role under Management Roles.
First-time setup, in order
- Defaults and Jobs → Write the defaults. Creates the current leave year (January to December, cap 5, warning 60 days, SLA 2 days), the six Ghana statutory rules, a staffing floor per department at 70% of headcount, and classifies your existing leave types by name. Safe to repeat.
- Leave Years. Correct the dates, cap, forfeit date, SLA and liability ceiling if the defaults are not your policy.
- Leave Types. Check each type's category and flags. Make sure exactly one type accrues.
- Staffing Floors. Replace the 70% guesses with real minimums, and declare critical roles.
- Statutory Rules. Review the citations and remedies; switch off any that are not your policy.
- Set days per year on Rank Allocation, then run the accrual from Entitlements or from the last tab here.
The Leave Dashboard offers the same first step as a banner, Set up leave accounting, which writes the defaults and runs the accrual in one go.
Tab: Leave Years
The accounting period leave is measured in. A year is created here or by the year-end close, never by simply looking at a screen.
| Column | Meaning |
|---|---|
| Year | The title, or the year code |
| Starts / Ends | The accounting period |
| Carry cap | Days that may be pushed into the next year |
| Forfeits | The date days above the cap are lost |
| SLA | Working days an approver has before a request is late |
| Ceiling | The board's tolerance for accrued untaken days |
| State | Open (green) or Closed (grey) |
New leave year opens a dialog with these fields. The year code cannot be changed once the year exists.
| Field | Meaning | Dialog default |
|---|---|---|
| Year code | The year number, e.g. 2026 | current year |
| Title | Display name | "2026 Leave Year" |
| Starts / Ends | The period | 1 January to 31 December |
| Carry-over cap (days) | Days above this are forfeited at close | 0 |
| Forfeit date | When that happens | blank |
| Warn before (days) | Lead time on the forfeit warning | 30 |
| Approval SLA (working days) | Drives the age colouring on the dashboard queue | 3 |
| Liability ceiling (days) | Draws the ceiling line on the liability chart; blank means no ceiling | blank |
Changing the cap or the dates changes what the accrual computes. Run the accrual afterwards rather than waiting for the night.
Close year starts the year-end close, which is described step by step in Year End and Jobs. It always previews who loses what before anything is written.
Tab: Leave Types
The category replaces guessing a type's behaviour from its name. It fills the flags in; every one stays editable.
| Column | Meaning |
|---|---|
| Name | The type, with its description underneath |
| Category | Annual, Sick, Maternity, Paternity, Compassionate, Study, Unpaid or Other |
| Default days | The allowance used when neither an individual figure nor a rank allocation exists |
| Behaviour | Chips: accrues, carries over, liability (amber), unpaid (red), cert > Nd |
| Approval | Which stages the type routes through: Supervisor · Dept head · HR |
The dialog has these fields:
| Field | Meaning |
|---|---|
| Name, Description | What the employee sees in the picker |
| Category | Choosing one overwrites the four flags and the certificate threshold with that category's defaults (see Key Concepts). Adjust afterwards if your policy differs |
| Default days | Fallback allowance |
| Certificate required after (days) | Zero means never. The statutory certificate rule reads this figure |
| Accrues monthly | Only one type may accrue. It is the one that carries over, forfeits and forms the liability |
| Carries over | Into the next leave year, up to the cap |
| Counts as liability | Off for sick leave: you do not owe unused sick days |
| Paid | Off for unpaid leave: it is deducted from pay and pauses accrual on other types while taken |
| Supervisor / Department head / HR approval | The approval route. A new type defaults to supervisor only |
The system refuses a second accruing type, naming the one that already accrues. If you genuinely need two, that is a policy conversation, not a checkbox.
The old standalone Leave Types menu item now redirects here.
Tab: Staffing Floors
The minimum a unit must keep on the floor. Without one the eight-week absence grid is only a count; the floor is what turns it into a warning.
| Field | Meaning |
|---|---|
| Department | Required |
| Sub-unit (optional) | "Line 2", "Dispatch". A department may have several rules; its effective floor is the largest minimum across them |
| Minimum staff | People who must be available. Below this the day or week is a breach |
| Critical role | A job title so thin that two holders away together is itself a risk. Must match the employees' job title exactly (case does not matter) or the clash check never fires |
| Holders of that role | How many people hold it. With one holder, that person being away is itself a clash |
| Active | Retire a rule rather than deleting it; it stops raising warnings but stays on record |
State pill: Active (green) or Retired (grey).
Tab: Statutory Rules
Each check carries the clause it rests on, because a compliance row that cannot cite its basis is an opinion.
| Field | Meaning |
|---|---|
| Title, Rule code | The check as it appears on the dashboard, and a stable code such as MIN_ANNUAL_DAYS |
| Check | One of: Minimum days taken, Certificate required, Taken inside the year, Approval before start, Reconciled with payroll |
| Applies to | One leave type, or all |
| Basis (the clause) | Printed verbatim, e.g. "Labour Act 651, s.20" |
| Jurisdiction | Defaults to Ghana |
| Minimum days / Threshold days | Used by the minimum-days and certificate checks |
| Remedy shown when it fails | Becomes the tooltip on the dashboard's compliance row |
| Active | An inactive rule is kept but not checked |
What each check fails on:
| Check | Fails when |
|---|---|
| Minimum days taken | An employee's taken + booked days of that type fall short of the minimum |
| Certificate required | A committed spell longer than the threshold has no certificate recorded |
| Taken inside the year | An employee's remaining balance exceeds the leave year's carry-over cap |
| Approval before start | The request was filed after the leave began (annual and study leave only) |
| Reconciled with payroll | Committed unpaid leave has no pay period attached, so it was never deducted |
The rule coded MIN_ANNUAL_DAYS is special: the dashboard reads its minimum for the "Tracking below the statutory minimum" row. Deleting it falls back to 15.
Tab: Defaults and Jobs
Five buttons that do by hand what otherwise runs on a timer or at a milestone.
| Button | What it does | When to press it |
|---|---|---|
| Write defaults | Creates the current leave year, the statutory checks, a 70% staffing floor per department, and classifies existing leave types. Idempotent | Once, at go-live. Again if a rule was deleted by mistake |
| Run accrual | Advances every request's lifecycle, recomputes every entitlement row, reconciles returns against attendance. The nightly 01:30 job does the same | After changing a leave year, a rank allocation or a grant, so the figures do not wait for the night |
| Snapshot | Freezes this month's liability so the trend chart has a point. The month-end job does this on the 1st | To backfill a missing month |
| Normalise | Converts requests written before the module gained separate decision and lifecycle statuses. Safe to repeat | Once, after upgrading. Again if any request still shows Unknown |
| Propose (exit settlements) | Raises a settlement proposal for every leaver still holding an accrued balance. Nothing is paid or written off here | Before a payroll run that includes final pay |
Common questions
The dashboard says leave accounting is not set up, but I have leave types. Types alone are not enough. The accrual has never written entitlement rows. Press Write defaults then Run accrual, or use the dashboard banner.
Balances are all zero after the accrual. No entitlement could be resolved: no individual figure, no rank allocation, and the leave type's default days are zero. Set one of the three.
I changed the category and my custom flags vanished. Choosing a category deliberately lays down its defaults first. Re-tick the flags you want, then save.
Can I delete a leave year? No. Close it. A closed year is read-only and its figures are final.
