PZone ERP v1.0 · Manual

Chapter Eight — HR & Payroll: from Employee to Payslip to Journal Entry

The Human Resources module manages the full employee lifecycle: from opening their file and contract, through their leave and advances, all the way to the monthly payroll run that posts automatically to the general ledger and distributes labour cost across your projects — with the same logic you saw in Finance (Ch.5) and cost tracking (Ch.4).

Chapter 8 — Human Resources & Payroll: from employee to payslip to journal

👥 Two models of employee data 💵 Payroll runs 🏦 Automatic posting to the general ledger 🌴 Leave and advances
☰ 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.

i
An add-on enabled by the platform administrator (the link /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.
Simplified directoryplatform accounts · profiles Employee registryfull file · hr_employees The linked accountuser_id joins the two models Salary structure and runsread from the simplified directory Cost distribution · advance recoverywork only when linked Leave · advances · attendanceread from the employee registry
Figure 1 — The two employee data models: the simplified directory (feeds payroll) and the employee registry (feeds leave, advances and attendance), and they meet only through "the linked account"
!
The most important thing to know from the start: "the employee" in PZone ERP is stored in two separate places (Section 2). Adding a person in one of them does not automatically include them in the other.

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).

!
The critical bridge: the two models meet only when you set, in the employee registry, the "linked account" (user_id) field. Only then does it work: distributing their salary cost across projects, and automatically deducting their advance from the run. Without linking: the advance is recovered manually, and their salary cost goes to a general overhead.

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.
!
The contract salary is separate from the salary-structure salary. The leave provision is calculated from the contract salary, whereas the run is calculated from the salary structure (Section 4). There is no consistency check between them — so make sure the two figures agree.

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.

Run previewcalculation without saving Draftcan be deleted Postedaccrual in the ledger Paidnet from the bank The calculation engine per employee Gross = basic + allowances − deductions: social insurance + income tax + advance instalment = net due Egyptsocial insurance + progressive tax Gulf (GOSI)by nationality · no income tax
Figure 2 — The run cycle: preview ← draft ← posted (accrual in the ledger) ← paid; and the per-employee calculation engine, differing between Egypt and the Gulf
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.
!
The run does not calculate attendance: it is a fixed monthly salary engine — no hourly/daily wage, no overtime, no bonuses or penalties, and no manual adjustment of the lines. The only variable deduction is the advance instalment.
!
The default statutory rates are provisional — review them in "Settings" before the first run. And after posting, the run cannot be reversed from the screen (only the draft can be deleted); any later correction is done from the finance module.

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 advancefrom Employee advances a/c · to Bank a/c Does the employee have a linked account?user_id in the employee registry Yes — automatic monthly deduction within the runrecovery entry: from other dues · to employee advances No — no automatic deductionthe advance must be recovered manually (alert)
Figure 3 — The advance cycle: the grant is entered from "employee advances" to "the bank", then recovery is automatic monthly when a linked account exists — otherwise manually
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.
i
The request is entered by the admin on behalf — and the default status is "approved"; there is no self-service submission path from the employee. And the day count includes holidays and weekends (approximate).

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).
!
Cost distribution (and recovery) requires the employee to have a linked account; otherwise their salary goes to a general overhead without distribution across projects.
i
Site logistics also posts housing rent and transport/mobilization (distributed across cost centers) — but attendance is never posted.

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.

The accrual entry (upon posting) Payroll expense (gross + employer insurance)debit Insurance payablecredit Payroll tax payablecredit Salaries payable (net)credit Other dues (advance instalment)credit Payroll expense distributed across cost centers and projects The payment entry (upon disbursement) Salaries payabledebit The bank (net)credit One entry per run · non-reversible from the screen Correction from the finance module when needed
Figure 4 — The two automatic payroll entries: the accrual (distributed across the centers and projects) upon posting, and the payment from the bank upon disbursing the net
ActionOwnerAdminManagerViewer
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.

✓
Chapter Eight summary: Human Resources runs from the employee (two models joined by "the linked account") to the contract, then leave and advances, all the way to the payroll run that posts automatically to the general ledger distributed across your projects. Remember the limits: the run is a fixed monthly one that does not read attendance, the rates are provisional and reviewed, and the posting is not reversed from the screen. The two support modules (rentals, and governance) remain for later chapters.