Solavel Docs

Leave

Last updated

SolaHR handles leave from request to balance. Employees request their own leave in My Portal → My Leave or in the employee portal on their phone. Managers and HR review requests in Leave, and they keep leave types, balances and accrual rules up to date there too.

Approving a request takes the days off the employee's balance. Cancelling an approved request gives the days back. Only working days are charged by default: the employee's weekly days off and public holidays inside the dates are not deducted, and both HR and the employee are told exactly which days were left out (see How days are counted).

Where to find it

What Path URL
Leave requests (review) Sidebar Time & Attendance → Leave /leaves
New request on behalf of an employee Leave → Request Leave (top-right) /leaves/create
One request Click a row in Leave /leaves/{id}
Leave types Leave → Leave Types (top-right) /leaves/types
Balances and accrual policies Leave → Leave Balances (top-right) /leaves/balances
Your own leave Sidebar Overview → My Portal, then My Leave /self-service/leaves
Scoped reviewers (HR Manager, Department Manager) HR operations page, Leave requests section /operations
Balances for another year Leave Balances → Year /leaves/balances?year=2025

When there are pending requests, the Leave menu item shows a counter. The menu item appears if your role has the Leave → View permission and your plan includes leave management. If the plan does not include it, leave pages and the employee portal's Leave module are hidden.

Who can do what

Role What they get
Owner (Full access) and SolaHR Administrator Every request in the organization. Can approve, reject and cancel requests, create requests for any employee, and manage leave types, balances and policies.
HR Operations Manager (older role) Leave → View and Manage with audit oversight: every request, approve/reject/cancel, types, balances and policies.
HR Records Viewer (older role) Leave → View only: requests of direct reports, types and all balances, read-only.
Other SolaHR roles with leave permissions Leave → View lets you open the pages. Leave → Manage adds approve, reject, cancel, Request Leave, type editing and balance adjustments. Without organization-wide oversight (the audit or settings permission), the list shows only requests from employees who report to you. SolaHR matches your sign-in email to an employee record and uses that employee's direct reports.
HR Manager and Department Manager (scoped) Review requests only for the departments and employees assigned in Team access. They work from the HR operations page, not from Leave.
HR Viewer (scoped) Sees the Leave requests list on HR operations for assigned employees. Cannot review.
Attendance Recorder (scoped) No access to leave review.
Every employee with a linked employee record Their own requests and balances in My Portal → My Leave. Scoped roles keep this self-service too.

Two rules apply to everyone:

  • No self-approval. You cannot approve or reject your own leave request. The message is "Employees cannot approve their own leave requests." (or "...reject...").
  • The server checks every action. Hiding a button is only for display, so a direct link to a request you are not allowed to review returns an access error.

Leave requests list

Leave opens on Leave Requests — "Manage employee leave requests".

Header buttons (top-right, left to right):

Button Who sees it Opens
Leave Types Everyone with Leave → View /leaves/types
Leave Balances Everyone with Leave → View /leaves/balances
Request Leave Leave → Manage /leaves/create

When no request matches, the page shows "No leave requests found" (with Request Leave for managers). The Leave starts on/after filter matches the first leave day; Leave ends on/before matches the last leave day. Search matches employee name or number.

Four tiles across the top count only the requests you are allowed to see:

Tile Counts
Pending approval Requests waiting for a decision.
Approved this month Requests approved in the current calendar month.
Leave days this month Total days of approved requests that start this month.
On leave today Approved requests that include today.

The toolbar has:

  • a search box, "Search by name or employee number…",
  • Status (All, Pending, Approved, Rejected, Cancelled),
  • Leave type (All, or one active type),
  • two date boxes: Leave starts on/after and Leave ends on/before.

Every filter has its own label above the box: Search, Status, Leave type, Leave starts on/after and Leave ends on/before.

The table has these columns: Employee (with employee number), Leave type (with its colour dot), First leave day, Last leave day (inclusive), Duration (days deducted) and Status, then an Actions column with the ⋯ row menu. When some of the selected days were not charged, the Duration cell adds a line such as "excluding 2 day(s) off". The list shows 15 requests per page, newest first, and its header stays visible while you scroll.

Click a row to open the request. The row's ⋯ menu has View. If you can manage leave, it also has Approve and Reject for pending requests, and Cancel Request for pending or approved ones.

Review a request

  1. Open Leave and click the request (or use the row ⋯ menu).
  2. The Leave Request Details page shows the status badge (top-right) and these cards:
    • A blue notice at the top when days were not charged: "This request includes n day(s) off that are not deducted" with "Not deducted: 17 Oct 2026 (day off), 18 Oct 2026 (day off). Selected 10 day(s); 8 day(s) are deducted from the balance." The notice appears only when the saved day count still matches today's calendar.
    • Request Details: Days deducted from balance, First leave day, Last leave day (inclusive), Request date, Reviewed by (after a decision), Reason / Notes, and Rejection reason if it was rejected.
    • A day panel under the details: Selected days, Days deducted from balance, Days not charged, the list of excluded dates with the weekday and the reason (day off or public holiday), and a line saying whether the type charges working days or calendar days.
    • Attachments: a View attachment button when the employee uploaded a file.
    • Employee Information (right): name, number, Department, Job title.
    • Balance type (right): Entitled, Used and Remaining days for this leave type in the current year.
  3. Choose an action in the Actions card (pending requests only):
    • Approve opens "Approve leave request?" — "The leave days will be deducted from the employee balance." Click Approve to confirm. You see "Request approved."
    • Reject opens Reject Leave Request. Rejection reason is required. Click Confirm Rejection. If the reason is empty you see "Please correct the highlighted fields." On success: "Request rejected."
  4. To withdraw a pending or approved request, click Cancel Request below the actions. The dialog asks "Are you sure you want to cancel this request?". Confirm to get "Request cancelled."

When you approve, SolaHR runs the request checks again and recounts the days against today's calendar, while it holds the request locked so two reviewers cannot approve it twice: overlapping requests, required attachment, days to deduct and remaining balance. The employee's balance or the holiday calendar might have changed since they submitted. If a check fails, the request stays Pending and you see the reason, for example "Insufficient leave balance. Remaining days: 4."

Protected attachments

Leave attachments are stored privately. They are not public links. View attachment opens the file in a new tab only for someone allowed to review that employee's leave. Anyone else, including a person with a copied link, gets an access error. The file is named leave-request-{id}.pdf (or .jpg/.png), and the browser is told not to cache it.

Employees do not see the attachment again after they submit. They see the request details only.

Statuses

Status Meaning Next
Pending Submitted and waiting for review. Counts against overlap checks. Approve, Reject, Cancel
Approved Days are added to Used in the balance for the year the leave starts. Cancel (days are restored)
Rejected Declined with a reason. No balance effect. Final
Cancelled Withdrawn by the employee or a reviewer. An approved request's days return to the balance. Final

Every leave type currently goes through review. The Requires approval setting on a leave type is stored and displayed, but every new request still starts as Pending.

If you act on a request whose status has already changed, you see "This request cannot be approved." (or "...rejected.", "...cancelled."), or "Only pending leave requests can be approved."

Create a request for an employee

Use this when an employee asks HR to file leave for them. You need Leave → Manage.

  1. On Leave, click Request Leave (top-right). The page is New Leave Request — "Create a clear, review-ready request for an employee".
  2. 01 Employee: pick the Employee (required) from a searchable list ("Search by name or employee code"). Only active employees of the selected organization are listed.
  3. 02 Choose a leave type: click a type card. Each card shows the default days and Paid or Unpaid. If no type is active you see "No active leave types are configured for this organization." and a Manage leave types button.
  4. 03 Duration: set First leave day and Last leave day (inclusive). Both are required. Choose the final day of leave, not the return-to-work date. The box now reads Days deducted from balance and shows the server's count. Under it a note says "n day(s) will be deducted from the leave balance. Remaining after this request: m." and lists Selected days, Days deducted from balance, Days not charged and each excluded date with its reason.
  5. 04 Reason / Notes: Reason / Notes is required here (up to 500 characters). Use Attachments to upload a PDF, JPG or PNG up to 5 MB. When the chosen type requires attachments, the label shows an asterisk.
  6. Check the right-hand panel. Request summary repeats your choices. Leave Balance shows Entitled, Used and Remaining once an employee and a type are chosen.
  7. Click Submit Request (bottom). You return to the list with "Leave request submitted." The request is Pending like any other.

SolaHR adds the starter leave types to an organization automatically the first time someone opens this form or Leave Types, so a new organization is never left with an empty form.

Request your own leave (My Leave)

Any user whose sign-in email matches an employee record in the current organization can do this.

  1. Open My Portal in the sidebar and click My Leave.
  2. In New Leave Request, choose the Leave type (required).
  3. Enter Start date and End date (both required; the end can be the same day).
  4. Optionally add Notes and an Attachment (PDF, JPG or PNG, up to 5 MB). If the type requires attachments, upload one or the request is refused with "This leave type requires an attachment."
  5. Click Submit Leave Request. You see "Leave request submitted for review." and the request appears in Request History.

My leave balances (next to the form) lists each active leave type as remaining / total entitled.

Request History columns: Leave type, Period, Days, Status, and a View button. The detail page shows Days, Notes, Approver and Remaining balance.

To withdraw a request, open it and click Cancel (shown while it is pending or approved). Confirm "Cancel this leave request?" You see "Leave request cancelled." If the request was already approved, the days return to your balance.

If your account is not linked to an employee record, you see "No employee profile linked". Ask HR to set your email on your employee record.

Requests from the employee portal

Employees who use the SolaHR employee portal on their phone (see Portal Access) request leave in its Leave tab. Leave is a protected tab, so the employee unlocks it with their six-digit PIN first. See Employee portal for the whole portal.

  1. Open Leave. The top of the tab shows the remaining days for each leave type ("21 days of 30").
  2. Tap + New request.
  3. Choose Leave type (names appear in the portal's language), then From and To. From must be today or later. A standing hint reads "Weekly days off and public holidays inside the dates are not deducted from your balance."
  4. As soon as the dates are filled, a note previews the real count: "n days will be deducted from your leave balance", "Remaining after this request: m", "Selected 10 day(s): 2 day(s) off not counted, 8 deducted" and the excluded dates marked "day off" or "public holiday".
  5. Optionally enter a Reason (up to 2,000 characters).
  6. Attach a file in Attach supporting document (optional) (PDF or image, 5 MB maximum). When the type requires one, the box reads Attachment required for this leave type, and the submit button stays disabled until a file is chosen.
  7. Tap Submit for approval.

The request appears in the tab's list with its status, the days deducted ("deducted 8 days") and, when days were left out, "excluding 2 day(s) off" with the dates. A rejected request shows the Rejection reason. Pending requests have Withdraw ("Withdraw this request?" → Yes, withdraw); an approved request cannot be withdrawn by the employee and stays with HR. Maternity and paternity types follow the employee's gender, and this is enforced when the request is submitted. If something is wrong, the portal shows the server's message under the field concerned.

The request also appears in Leave for reviewers, who see the attachment through View attachment. When it is approved or rejected, the employee gets an update in the portal's bell (see Employee portal).

Rules checked on every request

These checks apply to all channels: HR form, My Leave, employee portal, and again at approval.

Rule Message
End date before start date "Leave end date must be on or after the start date."
Type requires attachment, none uploaded "This leave type requires an attachment."
Overlaps another pending or approved request for the same employee "Employee already has a pending or approved leave request in this date range."
Every selected date is a day off or a public holiday "All selected dates are non-working days or public holidays, so there is no leave to request."
Paid type and not enough remaining chargeable days "Insufficient leave balance. Remaining days: n."
Attachment too large or wrong format Standard file validation message (PDF, JPG, JPEG or PNG; max 5 MB).

Unpaid leave types are not limited by balance. A request whose selected dates are all days off or public holidays is refused (see below).

How days are counted

Leave is charged in working days. Every channel (HR form, My Leave, employee portal, approval and the balance) uses one calculation, so the number you see before you submit is the number that is saved and deducted.

For each date from the first to the last leave day, SolaHR decides:

Rule Result
The date is a day off for this employee Not charged, reason day off. The employee's own work schedule decides this; without one, the Main work schedule; without that, the weekend days saved in Attendance Defaults (Friday and Saturday if nothing is saved). Never a hard-coded weekend.
The date is a public holiday for the employee's department Not charged, reason public holiday. See Holidays.
Anything else Charged: one day.

The selected dates are never extended: if the employee picks Thursday to Monday, the days off in between are skipped, but the leave still starts on Thursday and ends on Monday. A range made only of days off is refused: "All selected dates are non-working days or public holidays, so there is no leave to request."

Each leave type has two switches on its policy (Leave Balances → Accrual and Carryover Policies): Count weekends and Count holidays. They are cleared by default, which gives working-day leave. Tick them to charge calendar days. The starter type Maternity Leave (code MATERNITY) is created with both ticked, because statutory leave periods run in calendar days. A policy you set yourself is never changed by SolaHR. The note under every request says which basis applies: "Days off in the employee schedule and public holidays are not charged." or "This leave type counts calendar days, including days off."

Requests approved before 7 October 2026 had counted days off by mistake (a Thursday-to-Saturday request with Friday off cost 3 days instead of 2). A repair run corrected the requests where the employee's days off could be proven from stored data, returned the excess to the balance with a "correction" entry, and listed the rest for a person to review.

Unpaid leave is different in one way: payroll prices unpaid leave per calendar day against the run's period, so it is deducted from salary independently of the balance count (see Payroll).

Leave types

Leave → Leave Types — "Manage available leave types". Each type is a card with its colour, name, code, Active/Inactive badge, Default days, Paid, Requires approval, Requires attachments, and the number of approved requests ("12 requests").

New organizations start with these types. You can edit their days, but the figures are only placeholders and do not reflect labour law:

Type Code Default days Paid Requires attachments
Annual Leave ANNUAL 21 Yes No
Sick Leave SICK 15 Yes Yes
Emergency Leave EMERGENCY 3 Yes No
Unpaid Leave UNPAID 30 No No
Maternity Leave MATERNITY 70 Yes Yes
Paternity Leave PATERNITY 3 Yes Yes
Bereavement Leave BEREAVEMENT 5 Yes No
Marriage Leave MARRIAGE 3 Yes Yes
Hajj / Umrah Leave HAJJ_UMRAH 21 Yes Yes
Study / Exam Leave STUDY_EXAM 10 Yes Yes

Starter types show their English names in English and their Arabic names in Arabic. Types you create show the name you type.

Add or edit a type

  1. Click Add Type (top-right), or Edit on a card.

  2. Fill in Add Leave Type / Edit Leave Type:

    Field Required Notes
    Name Yes Shown everywhere the type is picked.
    Code Yes Unique, up to 50 characters, for example ANNUAL, SICK.
    Description No
    Default days Yes Whole number, 0 or more. Default 21. Used as the yearly entitlement until you set an accrual policy.
    Color No Colour dot in lists.
    Paid leave — Ticked by default. Paid types are checked against the balance.
    Requires approval — Ticked by default (see the note under Statuses).
    Requires attachments — Requests must include a file.
    Active — Only active types can be requested and appear on balances.
  3. Click Save. You see "Leave type added." or "Leave type updated."

Delete a type

Click Delete on the card and confirm "Delete leave type?" — "name — This action cannot be undone." A type that has any request linked to it cannot be deleted: "This leave type cannot be deleted because requests are linked to it." Untick Active instead.

Leave balances and accrual policies

Leave → Leave Balances — "View employee leave balances for year". A Year filter next to Search switches between years (the current year, next year and the five before). Adjust Balance applies to the year shown.

Accrual and Carryover Policies

Users with Leave → Manage see one row per active leave type:

Field Meaning
Frequency Annual: the full entitlement is granted when the year's balance is created. Monthly: the balance starts at 0, and one twelfth of the entitlement is added on the 1st of each month, up to the annual entitlement.
Annual entitlement Days per year (0–365, decimals allowed). Starts from the type's default days.
Accrual day Day of month (1–28) stored with a monthly policy. The monthly run happens on the 1st.
Carryover cap The most days that can carry into next year. Leave it blank for no cap.
Carryover When ticked, unused days roll into the new year on 1 January, up to the cap.
Count weekends / Count holidays Cleared by default (working-day leave). Tick to charge days off or public holidays. See How days are counted.
Active Turns the policy on or off.

Click Save Policy on the row. You see "Leave accrual policy updated." A changed entitlement applies to balances created from then on. A balance that already exists for this year keeps its entitled days, so use Adjust Balance to correct it.

Balance table

Search by name or employee number. Each row is an active employee, with "Left on date" or "Leaving on date" when a leaving date is recorded. Each column is an active leave type, showing remaining days (green when above zero, red at zero or below) and "of total entitled". When an employee has no balance row for the selected year, the cell says No balance yet with "default entitlement 21" in small print instead of showing the default as if it were their balance; click it to adjust and create the row. Total entitled = entitled days + carried over + adjustments. Remaining = total entitled − used.

Adjust a balance

  1. Click a balance cell (needs Leave → Manage). Adjust Balance — employee / type opens.
  2. Enter Adjustment (days) (required, steps of 0.5): "A positive value adds days, a negative value deducts."
  3. Optionally enter a Reason, then click Save. You see "Balance updated."

Adjustments add up. Entering 2 twice adds 4 days. Adjustments apply to the year selected in the Year filter. The Reason is not stored on the balance, so keep your own note (for example in the employee's documents) of why you adjusted.

The balance table lists all active employees to anyone with Leave → View, even users who only see their direct reports' requests. The policies card is shown only to Leave → Manage. Opening this page creates any missing current-year balances (annual policies start with the full entitlement, monthly ones at 0). 15 employees per page.

Scoped reviewers: HR operations page

HR Managers and Department Managers do not open Leave. SolaHR sends them to HR operations (/operations), which shows only their assigned employees. The Leave requests section lists the latest 50 requests for those employees, with Employee, Period, Status and Review.

For a pending request:

  1. In Review, choose Approve or Reject in the drop-down.
  2. For a rejection, type the Reason for rejection (required, up to 500 characters).
  3. Click Submit. You see "Leave reviewed." If the request cannot be reviewed (for example it is no longer pending, or the balance check fails) you see "Leave review refused."

Requests for employees outside the reviewer's assignment are not listed and cannot be reviewed. Assign departments and employees in Team access.

Confirmations and outcome notices

Approve, cancel and delete use the shared confirmation dialog. Nothing changes until you confirm. A green notice confirms the result. Validation problems appear in a red list at the top of the form, and the first field with a problem gets focus.

If the connection drops and SolaHR cannot tell whether the action went through, you see Status not confirmed — "We could not confirm whether the change completed. Check the current status before submitting again." Click Check current status and look at the request's status before you click again. A request cannot be approved twice, and a duplicate submit is ignored.

Worked example 1: request, approve, cancel

Al Noor Trading LLC uses the starter types. Annual Leave has a Monthly policy with an Annual entitlement of 30 days, Count weekends and Count holidays are cleared (the default), and the organization's weekend is Saturday and Sunday in Attendance Defaults.

  1. On 1 October, Omar Haddad has 22.5 days of Annual Leave accrued, of which 5 are used, so 17.5 remain.
  2. Omar opens My Portal → My Leave (or the portal's Leave tab), chooses Annual Leave, start date 12 October 2026 and end date 21 October 2026 (inclusive), notes "Family trip to Amman". The preview says "8 days will be deducted from your leave balance. Remaining after this request: 9.5." and "Not charged: 17 Oct 2026 (day off), 18 Oct 2026 (day off)". He submits.
  3. The range is 10 calendar days, 2 of them weekend days, so the request saves as 8 days and Pending. In HR's list the row reads "8 days — excluding 2 day(s) off".
  4. His manager, Sara Ahmed (Department Manager for Sales), opens HR operations. In Leave requests she picks Approve for Omar's row and clicks Submit.
  5. Omar's Annual Leave balance now shows Used 13 and Remaining 9.5.
  6. The trip is shortened. HR opens the request in Leave, clicks Cancel Request and confirms. The 8 days return to Omar's balance (Remaining 17.5). Omar submits a new request for 12–16 October (5 days).

Worked example 2: sick leave, a long holiday break and a balance top-up

  1. Sara Khan (Dubai Main warehouse) is ill on 3–4 November 2026 (Tuesday and Wednesday). On 5 November she opens the employee portal, unlocks Leave with her PIN, picks Sick Leave. Because Sick Leave Requires attachments, the box reads Attachment required for this leave type. She can't pick past dates in the portal, so she asks HR to file it.
  2. HR opens Leave → Request Leave: Employee Sara Khan, type card Sick Leave (15 days · Paid), First leave day 2026-11-03, Last leave day (inclusive) 2026-11-04, Reason / Notes "Fever – clinic visit", attaches sick-note.pdf (300 KB). The Leave Balance panel shows Entitled 15, Used 0, Remaining 15 and the day note says "2 day(s) will be deducted". Submit Request: "Leave request submitted." Status Pending.
  3. Her manager Omar Haddad opens the request, clicks View attachment (opens privately in a new tab), then Approve → Approve: "Request approved." Balance: Used 2, Remaining 13.
  4. Approving leave does not write attendance records, but the attendance roster now shows Sara as On leave on 3 and 4 November and the daily review skips those days, so no missing punch or deduction is raised.
  5. Later Sara asks for Annual Leave from Sunday 20 December 2026 to Sunday 3 January 2027. That is 15 calendar days. Five are Saturdays and Sundays and 1 January 2027 is the recurring New Year's Day holiday, so the request would deduct 9 days. Her Annual Leave has only 8 remaining: "Insufficient leave balance. Remaining days: 8." The balance used is the year the leave starts (2026).
  6. Management grants 3 extra days for the stock count. HR opens Leave Balances, clicks Sara's Annual Leave cell, enters Adjustment (days) 3, Save: "Balance updated." Remaining 11. Sara submits again; Omar approves. Remaining 2.
  7. A colleague's overlapping request for Omar to cover is rejected: Omar opens it, Reject, Rejection reason "Warehouse cover needed 20–31 Dec", Confirm Rejection: "Request rejected." No balance change.

How it connects

Area Connection
Attendance Approved leave shows as On leave on the roster and the daily review skips those days. It does not create attendance records. Part-day leave (one day of less than a full day) is labelled "part-day leave" on the roster; if the employee also punched, the punches decide the day's state.
Holidays Public holidays inside the dates are not deducted unless the type's Count holidays is ticked. Changing a holiday does not silently recount approved leave; the holiday change dialog reports "n approved leave request(s) cover these dates".
Work schedules An employee's own schedule decides which weekdays are days off for their leave.
Payroll Approved unpaid leave is deducted by payroll for the days that fall inside the run's period. Paid leave is not deducted.
Approvals Pending leave requests are one of the types in the Approvals inbox. The Leave menu item shows a pending counter.
Employees The employee's Manager decides who reviews; the employee's email links their login to My Leave.
Employee portal Employees request, preview and withdraw leave there and get a bell update when it is decided.
Team access Scoped reviewers review only assigned departments and employees, on HR operations.

Tips and common problems

Problem Cause Fix
Employee on approved leave appears as absent or missing. The leave was approved after the day was already flagged, or it is part-day leave. A full-day approved leave turns the open flag into On leave on the roster. For part-day leave the punches decide, so record them.
The request charged fewer days than the dates suggest. Days off and public holidays are not charged. Open the request: the day panel lists each excluded date and the reason.
The request charged more days than expected. The type's Count weekends or Count holidays is ticked, or the employee's schedule includes the weekend days. Check the policy on Leave Balances and the employee's schedule.
"The code has already been taken." when saving a type. Another leave type uses that code. Use a different code.
"This leave type cannot be deleted because requests are linked to it." The type has requests. Untick Active instead.
No Approve on a request I can see. You lack Leave → Manage, or it's your own request, or it's not pending. Check status and permissions.
A balance cell says No balance yet. No balance row exists for that employee, type and year. Click it and adjust, or open the page for the current year (missing current-year rows are created).
Adjustment reason missing later. The reason isn't stored. Record it elsewhere.

Other common situations:

  • The leave list is empty but requests exist. Without organization-wide oversight you only see your direct reports. Check that your employee record's email matches your sign-in email, and that the employees have you as their manager. Scoped roles use HR operations instead.
  • "Insufficient leave balance." The employee has fewer remaining days than the request would deduct, in the year the leave starts. Check Leave Balances, then use Adjust Balance or a different (for example unpaid) type.
  • "Employee already has a pending or approved leave request in this date range." Cancel or reject the earlier request first.
  • Employee-portal date rejected. Employees cannot request past dates from the portal. HR can file them from Request Leave.
  • The employee cannot withdraw an approved request. In the portal only pending requests can be withdrawn. Ask HR to click Cancel Request.

Related