Holidays, blackouts and caps
Three tabs under Leave → Settings shape when leave can be taken, as opposed to how much of it people get.
Holidays
Section titled “Holidays”The Holidays tab is the organization’s public-holiday calendar. Holidays never count against entitlement and are skipped by every working-day calculation — including leave day counts, notice periods and payroll proration. Attendance reads the same list, so the two modules can never disagree about which days are working days.
Add one by hand
Section titled “Add one by hand”The Add holiday card takes a Date and a Name (placeholder Hari Raya), then Add. Two holidays may share a date — the uniqueness rule is on the date and name together, so a duplicate of both is refused.
Import a preset
Section titled “Import a preset”Select Import preset holidays.
-
Pick a State / Federal Territory — all 16 Malaysian states and federal territories are listed.
-
Pick a Year.
-
Review the preview. The status line reads {n} entries — {n} new. Each row shows the holiday name and date; ones you already have are marked Already imported, and Employment Act mandatory holidays carry an amber Compulsory badge.
-
Select Import {n} new.
The import only adds what’s missing — existing dates are skipped, and the toast reports both counts. Once imported, the holidays are yours: fully editable and disconnected from the preset list.
Delete
Section titled “Delete”Use the row action menu for one holiday, or tick several and use the Delete button that appears next to the {n} selected counter. The confirmation is This cannot be undone.
Blackouts
Section titled “Blackouts”A blackout is a date range where new leave applications are refused — a year-end freeze, a stocktake, a product launch.
The Add blackout period card takes:
| Field | Notes |
|---|---|
| Start date / End date | Inclusive at both ends. End must be on or after start. |
| Name | Shown to employees in the error message and as a marker in the date picker. |
| Reason (optional) | Internal note. |
| Applies to | The All leave types checkbox blocks everything. Untick it to reveal a checkbox per enabled leave type and block only those. |
The table lists Start, End, Name, Applies to (either All types or the named types), and Reason.
Employees see blackout ranges marked in the date picker with an orange dot and a Blackout: {name} tooltip, get a red inline warning while filling the form, and are refused on submit with Leave cannot be applied during the “{name}” blackout period ({start} to {end}). Any overlap blocks — even a single day at the edge.
Deleting a blackout confirms with Future leave applications during this window will no longer be blocked.
Department caps
Section titled “Department caps”A department cap limits how many people from one department can be on leave on the same day — “at most two people out of Support at once”.
The table is live, not just configuration:
| Column | Shows |
|---|---|
| Department | — |
| Leave type | The type it applies to, or All types |
| Cap | 2 person(s) or 20% of dept |
| Headcount | Current active headcount in the department |
| Available today | {n} of {limit}, with a tooltip giving how many are on leave today and the resolved limit |
Add a cap
Section titled “Add a cap”-
Pick a Department.
-
Applies to — a specific leave type, or All leave types. A cap set to all types counts every kind of leave together.
-
Cap mode — Absolute (headcount) or Percent of department.
-
Enter the value. The label changes with the mode: Max people or Percent (1–100).
-
Select Add cap.
You can stack several caps on one department — for example an overall cap of 3 plus an annual-leave-only cap of 2. All of them must pass, so the tightest one wins in practice.
How caps are enforced
Section titled “How caps are enforced”On submit, every day of the requested range is checked. The system counts distinct active employees in the same department already on leave that day, adds the applicant, and refuses if the limit is exceeded:
Department cap reached on 2026-07-30: max 20% of active department headcount (= 2) for this leave type
Colleagues counted include those on pending leave, not just approved — so the first person to apply holds the slot.
Percent caps floor down
Section titled “Percent caps floor down”A percent limit is rounded down. 50% of a three-person department is one person, not two. 20% of a four-person department is zero — which blocks everybody.
The form refuses to create a cap that already resolves to zero: This percent cap resolves to 0 people against the current headcount of 4 — every leave application would be rejected. Pick a higher percentage or use an absolute cap.
Editing and deleting
Section titled “Editing and deleting”Use Edit in the row menu to change the Cap mode and value. The department and leave type are fixed — to change those, delete the cap and add a new one.
Because an absolute count and a percentage aren’t interchangeable, switching mode always requires a value, and the zero-resolution check re-runs on save.
The delete confirmation is Future leave applications will no longer be checked against this limit.
What each control actually blocks
Section titled “What each control actually blocks”| Control | Blocks | Affects existing approved leave? |
|---|---|---|
| Holidays | Nothing — days simply don’t count | No, but recomputing changes day counts going forward |
| Blackouts | New applications overlapping the range | No |
| Department caps | New applications that would exceed the limit on any day | No |
Department caps count colleagues on pending, returned, approved and cancellation pending leave — every status that still holds a balance. So a request an approver sent back for edit keeps its slot while the employee fixes it, rather than letting a colleague take the last one out from under them.