☰ Chapter index
01 Before we start
The Human Resources module manages the employee lifecycle: opening their file and contract, then their leave and advances, all the way to the monthly payroll run that turns wages into accounting entries in the general ledger and distributes their cost across your projects.
/hr-hub, the "Human Resources" menu). The hub has multiple tabs, and Payroll, Leave and HR analytics appear for the owner and admin only; whereas the simplified directory is seen by everyone.02 Employees: two data models
Before any action, understand that "the employee" is stored in two different places for two different purposes — and this explains why the person you entered here does not appear there.
Simplified directory profiles
Built on platform accounts (organization members). Its fields: name · mobile · job title · photo · an "employee" flag. The salary structures and runs are built on it.
Access: the "Human Resources" menu ← the Employees tab.
Employee registry hr_employees
A full HR file (identity · contract · bank · insurance · department…). The leave, advances and attendance and cost distribution are built on it.
Access: the My profile page ← the Employees tab (for owner/admin).
03 Employee files and contracts
The Employee registry tab (the "My profile" page ← Employees) is the employee's full file, with sub-tabs: Profile · Employment · Distribution · Contracts · Documents · Evaluation.
- Employee registry
- The only mandatory field is the full name. It includes: employee number, national ID, nationality and its type (citizen/expatriate), date of birth and marital status, contact and emergency contact, hire date, department/job title/specialty/cost center/direct manager, employment type (full-time/part-time/temporary/contractor), contract type (permanent/fixed-term/seasonal), status (active / on leave / suspended / terminated), jurisdiction (Egypt/Saudi Arabia/UAE/Qatar/Oman), bank details (name/account/IBAN), and insurance. A "link member" button fills the fields from an existing platform account.
- Contracts
- Reference, type, start/end/probation period, basic salary, allowances and annual leave days, working hours, notice period, status, signing date, and a PDF file.
- Documents
- National ID/contract/certificate/work permit/medical/other, issue and expiry dates, and uploading a file or pasting a link. And the "Compliance and alerts" tab tracks documents nearing expiry.
- Departments
- A department tree (code/name/parent department/cost center) in the Departments tab — it organizes employees and links their cost to its centers.
04 Payroll: the structure and the runs
The Payroll tab (confidential — for owner/admin). Four sub-tabs: salary structure · monthly runs · advances and loans · settings.
- Salary structure
- For each member: a monthly basic salary + allowances + (optional) an insurance salary. It is built on the simplified directory (platform members).
- Monthly runs
- One run per month (YYYY-MM format, non-repeating). Its cycle: Preview ← Create draft ← Post to the general ledger (posted) ← Post net pay (paid). Only the draft can be deleted. The run lines are a snapshot at the time of creation — changing the structure afterward does not update an existing draft.
- The calculation engine
- Gross = basic + allowances. Egypt (default): social insurance (with a minimum/maximum) for the employee's and employer's shares, and a progressive income tax after the personal exemption. The Gulf: social insurance (GOSI) by nationality type and no income tax.
- Slips and settings
- A payroll PDF report for the whole run, and a PDF payslip for each employee. And the Settings tab determines the jurisdiction ("load a ready preset"), the insurance rates and their limits, the personal exemption, and the tax brackets.
05 Advances and loans
The Advances and loans tab: granting an advance to the employee and recovering it in automatic monthly instalments from the run — provided the link exists.
- Granting the advance
- The advance amount and the number of instalments. The entry: from employee advances a/c, to the bank a/c. Status: Outstanding / Settled / Cancelled.
- The monthly deduction
- The advance instalment is added automatically within "other deductions" in the employee's run, and upon posting a recovery entry is recorded: from other dues a/c, to employee advances a/c.
- The linking condition
- Automatic deduction works only if the employee record has a linked account. Otherwise the advance is recovered manually and the system alerts to this (Section 2).
06 Time and leave
The Time and leave tab (confidential — for owner/admin). Four tabs: leave requests · balances · leave types · leave provision.
- Leave types
- A code and name and an annual quota and paid/unpaid and "affects the provision" and a color. Ready-made: annual (21) · sick · casual (7) · unpaid · maternity.
- Requests
- The employee and the type and the duration and automatic day count (editable) and the reason and the status (pending / approved / rejected / cancelled), with an approval/rejection that records who approved and when.
- Balances
- The quota minus the approved days for each employee/type/year. And in the Gulf, annual leave increases with length of service.
- Leave provision
- It calculates the provision due for unused leave (IAS-19 style) at a daily wage (basic ÷ 30) and posts it to the ledger: from leave expense a/c, to leave provision a/c.
07 Attendance and labour cost distribution
Two things complete the picture: attendance — which sits outside the payroll module — and labour cost distribution across your projects.
- Attendance
- It sits under Site logistics (the link
/site-logistics← the attendance tab), not under payroll. A daily row for each employee (date · project · zone · in/out · status · hours · notes), with bulk generation for site employees. It has no financial impact and does not feed the run — an operational record only. - Labour cost distribution
- In the employee file, the Distribution tab: you set the distribution percentages of their salary across projects, so the payroll expense is split upon posting across cost centers and projects (and the remainder is a general overhead). This is what shows labour cost in the project reports (Ch.4).
08 Posting — and permissions — and the summary
How does the employee reach an accounting entry? Upon posting the run the accrual entry is created, and upon disbursing the payment the payment entry is created — both automatic and non-repeating.
| Action | Owner | Admin | Manager | Viewer |
|---|---|---|---|---|
| Simplified directory (employees) — view | ✔ | ✔ | ✔ | ✔ |
| Simplified directory — edit/remove | ✔ | ✔ | ✖ | ✖ |
| Employee registry · contracts · documents | ✔ | ✔ | ✖ | ✖ |
| Payroll (structure · runs · advances · settings) | ✔ | ✔ | ✖ | ✖ |
| Time and leave | ✔ | ✔ | ✖ | ✖ |
Payroll, the employee registry and leave are confidential — for the owner and admin only; the manager and viewer do not see them. The simplified directory is seen by everyone and edited by the owner/admin. And the whole module requires enabling the "Human Resources" add-on. There is no standalone role called "HR employee" — the permission is via the general owner/admin roles.