Zeri HR Documentation
A complete A to Z guide for administrators, HR teams, department heads and employees using Zeri HR.
Introduction
Zeri HR is a complete HR management system built for managing employee records, attendance, leave, payroll, notices, approvals, teams, projects and role-based access control.
The system is designed for companies that need a structured HR workflow with permission-based visibility. Each user sees only the modules and records allowed by their assigned role permissions.
System Requirements
| Requirement | Recommended |
|---|---|
| PHP | PHP 8.2 or compatible with the installed Laravel version |
| Database | MySQL / MariaDB |
| Web Server | Apache, Nginx or XAMPP local server |
| Composer | Required for PHP dependencies |
| Node.js / npm | Required if frontend assets need rebuilding |
| Browser | Latest Chrome, Firefox, Safari or Edge |
Installation
Local Setup
- Place the project folder inside the web root, for example
htdocs/hr-payroll. - Create a MySQL database.
- Copy
.env.exampleto.envand configure database credentials. - Install dependencies with Composer.
- Run migrations and the default admin seeder.
- Open the application in the browser.
composer install
php artisan key:generate
php artisan migrate
php artisan db:seed --class=AdminUserSeeder
Important Storage Commands
php artisan storage:link
php artisan optimize:clear
Default Seed Data
Zeri HR includes a single default admin seeder for fresh installations. It creates all permissions, default organization roles, role-permission assignments and one active admin user.
Seed Command
php artisan db:seed --class=AdminUserSeeder
Run this command after migrations. Admin or HR users can adjust the default roles and permissions later from the Roles screen based on company policy.
Default Admin Login
| Field | Default Value |
|---|---|
admin@zerihr.local | |
| Password | password |
| Role | Admin |
| Account Status | active |
Default Admin Environment Variables
The default admin user can be changed before seeding by editing the following values in .env:
DEFAULT_ADMIN_NAME="System Admin"
DEFAULT_ADMIN_EMAIL=admin@zerihr.local
DEFAULT_ADMIN_PASSWORD=password
Permissions Seed
The default admin seeder creates all system permissions, creates organization role templates, syncs each role with a practical permission set and creates the default admin user.
Single Default Seed Command
php artisan db:seed --class=AdminUserSeeder
Use this command when you need the default permissions, role templates, role-permission assignments and one admin user with full access.
Refresh Role Permissions Only
php artisan db:seed --class=RolePermissionSeeder
This command recreates missing permissions if needed, creates the same default role templates and syncs the default role-permission assignments without creating the default admin user.
Default Organization Roles
| Role | Default Purpose |
|---|---|
| Super Admin | Highest-level system owner with full access. |
| Admin | Full system administration access. The default admin user receives this role. |
| HR Admin | Employee, attendance, leave, announcement, team, project and HR report operations. |
| HR Manager | HR oversight, employee lifecycle approvals, attendance and leave reports. |
| Payroll Manager | Salary, payroll runs, payslips, bonus, loan, deduction, provident fund and salary revision management. |
| Finance Manager | Billing, clients, estimates, invoices, expenses and finance reports. |
| Department Head | Department-level employee visibility, team approvals and department reports. |
| Supervisor | Direct subordinate visibility, first-level approvals, tasks and team reports. |
| Project Manager | Project, team, task, file and client workflow access. |
| Team Lead | Assigned team, project and task execution access. |
| Auditor | Read-only review access for reports, audit and key module data. |
| Employee | Self-service access for own profile, attendance, leave, tasks, payslips, loans, deductions and provident fund records. |
Payroll Permission Update Commands
After adding or updating payroll, loan, bonus and permission-scope features, run these commands to update the database, refresh the default role mappings and clear cached files.
php artisan migrate
php artisan db:seed --class=AdminUserSeeder
php artisan view:cache
php artisan optimize:clear
- Dashboard permissions.
- Employee and profile update permissions.
- Attendance permissions.
- Leave permissions.
- Payroll, salary, loan, deduction, provident fund and payslip permissions.
- Announcement permissions.
- Team, project and task permissions.
- User, role and permission management permissions.
- Settings and report permissions.
Verified Permission Scope Examples
| Permission | Access Scope | Usage |
|---|---|---|
| loan.apply | Own / Self | Employee loan application access. |
| loan.approve-supervisor | Department / Team | Supervisor or department approval access. |
| loan.approve-final | Admin / Global | Final loan approval access. |
DEFAULT_ADMIN_PASSWORD before running the seed command.First Admin Setup After Login
After installation and AdminUserSeeder, login with the default admin account and complete the system setup before allowing employee or manager access.
Recommended Setup Order
- Change the default admin password from the dashboard password screen.
- Open Settings and update company profile, logo, favicon, contact information, timezone, currency and email settings.
- Create core organization records: departments, designations and reporting structure.
- Create salary grades with salary ranges and band names.
- Review default roles and permissions. Keep Admin/Super Admin full access, then adjust HR Admin, Department Head, Payroll Manager, Finance Manager and Employee roles based on company policy.
- Create or approve user accounts only after the employee profile is created and linked to the user account.
- Create employee profiles with department, designation, manager/reporting line, salary grade, employment status and linked user account.
- Configure leave categories, leave policies, holidays and attendance rules before employees start applying for leave or clocking attendance.
- Create payroll setup records: salary templates, employee salary assignments, provident fund setup, recurring deductions and opening loan records if needed.
- Run a small test payroll draft for one employee and review salary, deduction, loan, PF, tax and net payable before processing a full payroll run.
Setup Checklist
| Area | Admin Action | Why It Matters |
|---|---|---|
| Settings | Configure company name, branding, SMTP/email and basic app settings. | Emails, documents and UI branding use these values. |
| Departments | Add departments and assign department heads after employee profiles exist. | Department scope controls reports, approvals and employee visibility. |
| Designations | Add job titles under the correct department where applicable. | Employee records and reports use designation for staff classification. |
| Salary Grades | Create grade names, band names and min/max salary ranges. | Employee salary assignment validates basic salary against the grade range. |
| Roles | Review default role templates and remove permissions not needed by each role. | Prevents HR, managers or employees from seeing modules outside their responsibility. |
| Permissions | Check sensitive permissions such as payroll, payslip, loan, deduction, PF, reports and settings. | Salary and finance data should only be visible to authorized roles. |
| Users | Create or approve login accounts only after linking an employee profile. | Login access must map to a staff identity for attendance, leave, approvals and payroll. |
| Employees | Create employee profile, link user account, assign department, designation, manager and salary grade. | This is the source for workforce scope, reporting line and employee self-service. |
| Payroll | Create salary templates, assign employee salary snapshots, configure PF, loans and deductions. | Payroll generation depends on active employee salary assignments and payroll setup. |
User Approval Rule
Registered users stay in pending_approval. Admin must create or link the employee profile first, then approve the user and assign the correct role. Approval is blocked when the user has no linked employee profile.
Login and Access
Users access the system through the login page using their approved account email and password.
Login Flow
- Open the application URL.
- Enter email and password.
- After login, the system redirects the user to the dashboard.
Access Control
Access is controlled by role permissions. A user can only view modules and perform actions allowed by their assigned role.
Demo User Login
For demo environments, run the demo user seeder to create four ready-to-use accounts. The login page shows these demo users with copy buttons.
php artisan db:seed --class=DemoUserSeeder
| Role | Password | |
|---|---|---|
| Admin | demo.admin@zerihr.local | P@ssword |
| HR Admin | hr.admin@zerihr.local | P@ssword |
| Department Head | department.head@zerihr.local | P@ssword |
| Employee | employee@zerihr.local | P@ssword |
Employee Login Setup
Creating an employee profile does not automatically create login access. Login access comes from the user account, and the employee profile must be linked to that user account.
Required Workflow
- Go to User Management > Add User.
- Create a user with name, email, password and role.
- Use the Employee role for normal employee access, or assign another role based on your permission setup.
- Approve or activate the user account if approval is enabled.
- Go to Employees > Employee List.
- Edit the employee profile.
- In the User Account field, select the user account created earlier.
- Save the employee profile.
- The employee can now log in using the linked user email and password.
How It Works Internally
| Table / Field | Purpose |
|---|---|
| users | Stores login credentials, account status and role assignment. |
| employees | Stores HR profile and employment information. |
| employees.user_id | Links the employee profile to the login user account. |
Dashboard
The dashboard gives users a quick overview of HR activity based on their permissions.
Main Features
- Employee summary cards.
- Attendance summary: present, absent, late and leave.
- Pending leave request summary.
- Upcoming holidays and birthdays.
- Notice board.
- Private quick notes.
- Basic alerts.
Permission-Based Visibility
| User Type | Dashboard Scope |
|---|---|
| Admin / HR | Can view organization-level summary when permissions allow. |
| Department Head | Can view department/team related summary when permissions allow. |
| Employee | Can view own attendance, leave, notices and quick notes. |
Employees
The Employees module stores employee personal, official, contact and employment information.
Employee List
- Search employees by code, name, phone or email.
- Filter employees by department, designation, status and employment type.
- View employee profile details.
- Edit employee information when permission is granted.
Add / Edit Employee
- Upload employee profile picture.
- Assign user account.
- Set department, designation, salary grade and manager.
- Record joining date, employment type and employment status.
- Store addresses, bank accounts, emergency contacts and documents.
Employee Related Tables
| Table | Purpose |
|---|---|
| employees | Main employee profile and employment record. |
| employee_addresses | Employee present/permanent address records. |
| employee_bank_accounts | Employee bank account details. |
| employee_emergency_contacts | Emergency contact information. |
| employee_documents | Employee documents and verification status. |
Profile Update Requests
Employees can submit profile update requests instead of directly changing official records. HR reviews the request and approves or rejects it.
Employee Workflow
- Employee opens the profile update page.
- Employee changes personal information, contact details or profile image.
- Employee submits the request for HR approval.
HR Workflow
- HR opens the update approval queue.
- HR compares current and requested information.
- HR approves or rejects the request.
- On approval, employee data is updated.
Organization Structure
The organization structure page displays reporting relationships and hierarchy.
Departments
- Create departments with department code and description.
- Assign department head.
- Activate or deactivate departments.
Designations
- Create job titles/designations.
- Assign designations to employees.
- Use designations for employee filtering and reports.
Attendance
The Attendance module tracks employee check-in, checkout, attendance status and attendance reports.
Features
- View attendance logs.
- Clock attendance when permitted.
- Manage attendance records.
- Import attendance data.
- Export attendance report.
- API integration support for attendance devices or external systems.
Attendance Status
| Status | Description |
|---|---|
| Present | Employee attended within expected time. |
| Late | Employee checked in after allowed time. |
| Absent | No attendance found for the employee. |
| Leave | Employee is on approved leave. |
Leave Management
The Leave Management module handles leave categories, leave policies, leave balances, employee applications, approvals and reports.
Leave Categories
Create categories such as Casual Leave, Sick Leave, Annual Leave or Earned Leave.
Leave Policies
- Assign leave rules by salary grade.
- Set yearly allocation.
- Configure carry forward and earned leave rules.
- Activate/deactivate policies.
Recommended Sick, Casual and Annual Leave Setup
| Leave Type | Carry Forward | Earned Leave | Year-End Behavior |
|---|---|---|---|
| Sick Leave | None | No | Unused sick leave expires. New year starts with only the new yearly sick leave allocation. |
| Casual Leave | None | No | Unused casual leave expires. New year starts with only the new yearly casual leave allocation. |
| Annual Leave | Full or Limited | Yes | Unused earned annual leave carries into the next year and is added to the new annual leave allocation. |
Earned and Carry Forward Rules
- Sick Leave: use yearly allocation, Carry Forward Mode = None, Earned Leave = No, Earned Credit Days = 0.
- Casual Leave: use yearly allocation, Carry Forward Mode = None, Earned Leave = No, Earned Credit Days = 0.
- Annual Leave: use yearly allocation, Carry Forward Mode = Full or Limited, Earned Leave = Yes, Earned Credit Frequency = Monthly.
- For monthly earned annual leave, set Earned Credit Days to yearly annual leave allocation divided by 12. Example: 14 annual days / 12 = 1.17 days per month.
- At year start, sick and casual leave balances reset to the new year allocation. Only annual leave receives carry-forward balance.
Year-End Example
| Leave Type | Yearly Allocation | Used | Unused | Next Year Opening |
|---|---|---|---|---|
| Sick Leave | 10 | 4 | 6 | 10. Unused 6 expires. |
| Casual Leave | 10 | 7 | 3 | 10. Unused 3 expires. |
| Annual Leave | 14 | 8 | 6 | 20 if carry forward is full: 14 new + 6 carried. |
Leave Balances
- Sync leave balances by year.
- Filter balances by employee, grade or leave category.
- Adjust leave balances where permitted.
Automatic Monthly Leave Balance Sync
The system includes a scheduled leave balance sync command. It recalculates the current year leave balance for active employees, including monthly earned leave credits, so HR does not need to press the Sync button every month.
- Scheduled command:
php artisan leave:sync-balances. - Default schedule: last day of every month at 23:50 server time.
- The sync is safe to rerun because balances are recalculated and updated for the year; it does not blindly add the same monthly earned leave again.
- Manual full-year sync:
php artisan leave:sync-balances 2026. - Manual sync for one salary grade:
php artisan leave:sync-balances 2026 --salary_grade_id=3. - Manual sync for one employee:
php artisan leave:sync-balances 2026 --employee_id=25.
Add this cron entry on the server so Laravel can run scheduled jobs:
* * * * * cd /Applications/XAMPP/xamppfiles/htdocs/hr-payroll && php artisan schedule:run >> /dev/null 2>&1
If the project path is different on production, replace the path with the production project directory.
Leave Applications and Approvals
- Employee submits leave application.
- Approver reviews pending leave.
- Approver approves or rejects the application.
- Reports can be exported for HR review.
Notices and Announcements
Announcements let HR or Admin publish company notices to selected audiences.
Features
- Create notices with title and body.
- Set announcement type and priority.
- Select audience: all users, departments or selected employees.
- Publish or approve announcements based on permissions.
- Show notices on dashboard and topbar notifications.
Teams, Projects and Tasks
Work management modules help organize teams, projects and task assignments.
Teams
- Create team records.
- Assign team members.
- Manage team visibility by permissions.
Projects
- Create projects with project code and details.
- Assign members to projects.
- View project details and related tasks.
Tasks
- Create task with title, priority and status.
- Assign task to employee.
- Track start date, due date, progress and hours.
- Add task comments when permitted.
Payroll Overview
The Payroll module manages salary structure, employee-specific salary assignment, bonuses, loans, deductions, provident fund and payslip generation.
Payroll Flow
- Create Salary Grades.
- Create reusable Salary Templates.
- Assign Employee Salary from a salary template and customize the actual employee salary values.
- Add bonuses, loans, deductions and provident fund settings.
- Generate Payroll Draft for selected period. Draft shows expected salary, bonus, loan installment deduction, other deductions, PF, tax and net payable.
- Review all payroll items and payslips before final submission.
- Final Submit payroll run. This is the posting step for salary-linked records such as loan installment payment and PF contribution.
- Mark individual payslips as paid after payment processing.
Payroll Run Generation Logic
| Step | System Logic |
|---|---|
| Period check | The system checks pay frequency, period start and period end. If a draft run exists for the same period, it is regenerated. If a processed run exists, only a missing selected employee can be added. Approved or paid runs cannot be regenerated. |
| Employee selection | If no employee is selected, payroll is generated for all active employees. If an employee is selected, payroll is generated only for that active employee. |
| Salary source | Payroll uses the employee-specific salary assignment active at the payroll period end date. If no active salary assignment exists, payroll generation stops with an error so the employee is not paid with an incorrect fallback amount. |
| Allowances | House rent, medical allowance, conveyance allowance and other allowance are taken from the employee salary assignment. |
| Bonus | Bonus amount is included when the bonus date falls inside the payroll period. |
| Loan deduction | Only active loans are considered. Pending installments with due dates inside the payroll period are summed into the draft payslip. |
| Other deductions | Active employee deduction records are attached to the payslip when their effective date range is valid and their frequency matches the payroll run. One-time deductions are included only when their start date is inside the payroll period. |
| PF and tax | Employee PF deduction and employer PF contribution are calculated from configured percentages and the active employee basic salary. Tax is calculated from the configured tax percentage. |
| Draft totals | Gross, deduction total and net payable are calculated for each payslip and summarized in the payroll run. |
Salary Grades
Salary Grade represents employee level and salary range. It is not the final salary amount for every employee.
Example
| Grade | Minimum Salary | Maximum Salary |
|---|---|---|
| Executive | 35,000 | 80,000 |
| Manager | 80,000 | 150,000 |
Usage
- Classifies employees by level.
- Provides allowed salary range.
- Used by leave policies and HR reports.
- Used to validate employee salary assignment amounts.
Salary Templates
Salary Template is a reusable default salary structure. It helps HR quickly assign salary structure, but final employee salary is stored separately as an employee-specific snapshot.
Template Fields
- Basic salary.
- House rent.
- Medical allowance.
- Conveyance allowance.
- Other allowance.
- Provident fund percentage.
- Tax percentage.
Employee Salary Assignment
This is the final salary setup used during payroll calculation. Employees in the same salary grade can have different salary amounts.
/payroll/salary-template-assignments to review all salary assignments. The detail page shows employee, grade, salary structure, actual salary breakdown, CTC, effective dates and notes.How It Works
- Select employee.
- Select salary structure/template.
- The system fills default template values.
- HR customizes the salary values for that employee.
- Save assignment with effective dates.
Assignment Rules
- Basic salary must be within the employee salary grade min/max range when configured.
- Overlapping salary assignment date ranges are blocked.
- Assigning a new active salary closes the previous active assignment automatically.
- Payroll requires an active salary assignment for the payroll period.
Stored Snapshot Values
| Field | Purpose |
|---|---|
basic_salary | Employee-specific basic salary. |
house_rent | Employee-specific house rent allowance. |
medical_allowance | Employee-specific medical allowance. |
conveyance_allowance | Employee-specific conveyance allowance. |
other_allowance | Other employee-specific allowance. |
gross_salary | Total salary before deductions and bonus. |
provident_fund_percent | Employee-specific PF rate. |
tax_percent | Employee-specific tax rate. |
ctc_amount | Optional cost-to-company amount. |
ctc_amount means Cost to Company. It is optional and can include gross salary plus employer-paid benefits such as employer PF or insurance. If employer-side benefits are not tracked, leave it empty or set it equal to gross salary.Bonuses
Bonus records are added for employees and included in payroll when the bonus date falls within the payroll period.
Fields
- Employee.
- Title.
- Amount.
- Bonus date.
- Bonus type.
- Remarks.
Employee Loans
The Loan module tracks employee loan requests, approval status, installment schedules and salary-based repayment.
Loan Master
- Employee.
- Loan reference.
- Principal Amount.
- Interest percentage.
- Installment count.
- Installment Amount, calculated from Principal Amount, Interest % and Installment Count.
- Issued date and first installment date.
- Status: pending supervisor, pending final, active, paused, closed or rejected.
Installment Amount Formula
The user enters Principal Amount, optional Interest % and Installment Count. The application calculates Installment Amount automatically in the form and recalculates it again on the backend when saving or rescheduling.
total_payable = principal_amount + (principal_amount * interest_percent / 100)
installment_amount = total_payable / installment_count
| Principal Amount | Interest | Installment Count | Total Payable | Installment Amount |
|---|---|---|---|---|
| 60,000 | 0% | 6 | 60,000 | 10,000 |
| 60,000 | 10% | 6 | 66,000 | 11,000 |
Loan Approval Flow
- Employee submits a loan request with
loan.applyoremployee_loan.apply. - Supervisor or department approver reviews team requests with
loan.approve-supervisororemployee_loan.approve-supervisor. - Final approver completes approval with
loan.approve-finaloremployee_loan.approve-final. - After final approval, the loan becomes active and installment schedules are generated.
- Rejected loans are stored with rejection information and are not deducted from payroll.
Loan Installments
Installments are created from the approved loan schedule. Payroll picks pending installments when their due date falls inside the payroll period.
Installment due dates are generated monthly from the first installment date. If first installment date is empty, the issued date is used as the first due date.
Salary Deduction Workflow
- Loan must be active before it can be deducted from payroll.
- Payroll draft calculates
loan_deductionfrom pending installments due inside the payroll period. - HR reviews the draft payslip and confirms that the loan deduction is correct.
- When HR final submits the payroll run, those due installments are marked as paid.
- The paid installment stores the payroll item reference so HR can see which salary/payslip paid it.
- When all installments are paid, the loan status becomes closed automatically.
Reschedule Rules
- Reschedule is allowed only when no installment has been paid.
- Reschedule recalculates Installment Amount from Principal Amount, Interest % and Installment Count.
- The old pending schedule is deleted and a new schedule is created.
- Reschedule is blocked after any installment is paid to protect payroll history.
Manual Installment Payment
Manual installment payment should be used only for payments collected outside salary, such as cash, bank deposit or adjustment. Salary-related repayment should normally happen through payroll finalization.
Deductions
Deductions are employee-specific amounts deducted during payroll calculation. General deductions and loan deductions are handled separately so loan balances remain accurate.
Supported Deduction Setup
- Deduction name, such as welfare fund, penalty or advance adjustment.
- Calculation method: Fixed Amount or Percent of Basic Salary.
- Amount / Percent value.
- Effective from and effective to.
- Deduction frequency: Every Monthly Payroll, Every Weekly Payroll or One Payroll Only.
- Reason / policy and internal notes.
- Active/inactive status.
How Deduction Calculation Works
| Setup | Payroll Behavior |
|---|---|
| Fixed Amount | Deducts the exact amount entered. Example: 500 deducts 500 from the payslip. |
| Percent of Basic Salary | Deducts the entered percent from basic salary. Example: 5 means 5% of basic salary. |
| Every Monthly Payroll | Included only in monthly payroll runs while the deduction is active and inside the effective date range. |
| Every Weekly Payroll | Included only in weekly payroll runs while the deduction is active and inside the effective date range. |
| One Payroll Only | Included only when the deduction start date falls inside the payroll run period. |
During payroll draft generation, matched deductions are copied into the payslip deduction breakdown and summed into other_deduction. The amount then becomes part of total_deduction and reduces net payable.
Provident Fund
Provident Fund setup defines employee contribution percentage, employer contribution percentage, opening balance and effective date.
How PF Works
- Employee PF % is deducted from employee basic salary and reduces net payable.
- Employer PF % is company contribution and does not reduce employee net payable.
- Both contributions are calculated from the active basic salary for the payroll period.
- If salary increases through a new employee salary assignment, future payroll runs automatically calculate higher PF amounts.
- PF setup is used when its effective date is empty or before the payroll period end date. If no PF setup is active, payroll falls back to the employee salary assignment PF percentage.
- During final payroll submission, PF contribution transactions are posted with employee contribution, employer contribution and balance after.
- PF transactions can be used for yearly self-service and HR reports.
Example
| Basic Salary | Employee PF % | Employee Salary Deduction | Employer PF % | Company Contribution |
|---|---|---|---|---|
| 50,000 | 8% | 4,000 | 8% | 4,000 |
| 60,000 | 8% | 4,800 | 8% | 4,800 |
PF Report
- Report route:
/reports/provident-fund. - Export route:
/reports/provident-fund/export. - Employees can view their own yearly PF report when
provident_fund.viewis assigned. - HR, Admin, Payroll or Finance users with
provident_fund.reportorpayroll.manage-pfcan filter by year, department and employee. - CSV export is available to users with
report.export,provident_fund.reportorpayroll.manage-pf. - The report shows employee contribution, employer contribution, withdrawals, adjustments and balance after each transaction.
Payroll Runs
Payroll run is the monthly or weekly payroll batch for one period.
Draft and Final Submission Flow
- HR generates payroll draft for a period.
- The system creates payroll items for employees.
- HR reviews every payroll item and payslip.
- If needed, HR adjusts employee salary assignment, bonus, loan, deduction or PF setup.
- HR regenerates draft for the same period.
- When everything is correct, HR clicks Final Submit.
- The run becomes processed, PF transactions are posted and due loan installments are marked paid against their payslips.
Payroll Calculation
Gross = basic_salary + allowance_total + bonus_total
Total Deduction = loan_deduction + other_deduction + provident_fund_deduction + tax_deduction
Net Payable = Gross - Total Deduction
Final Submit Posting Rules
- Payroll draft can be regenerated before final submission.
- Final submission locks the payroll run as processed.
- Due pending loan installments in the payroll period are marked paid and linked to the employee payslip.
- If due loan installment amounts changed after draft generation, the system blocks final submission and asks HR to regenerate the draft.
- Provident fund contribution transactions are posted for the run.
- After final submission, payslips can be marked as paid when salary payment is completed.
Important Status Meaning
| Status | Meaning | Can Regenerate? |
|---|---|---|
| Draft | Payroll is calculated for HR review. Salary-linked postings are not final yet. | Yes |
| Processed | Payroll has been final submitted. Loan installments and PF transactions are posted. | No |
| Approved / Paid | Payroll has moved beyond processing/payment workflow. | No |
Payslips
Each payroll item works as an employee payslip inside the payroll run.
Payslip Contains
- Employee information.
- Payroll period.
- Basic salary.
- Allowance total.
- Bonus total.
- Loan deduction.
- Other deductions.
- Provident fund deduction.
- Tax deduction.
- Net payable.
Payment Status
Payment can be marked as paid only after the payroll run is finalized. Loan deduction on the payslip is already posted to loan installments at payroll final submission; marking payslip payment as paid records the salary payment status.
Loan Deduction Trace
When a payslip deducts loan installment amount, the loan installment stores the payroll item reference. The loan installment list shows whether the installment was paid by payroll or manually.
Salary Revisions
Salary revision history records salary changes, effective dates and approval information.
Usage
- Track promotion-related salary changes.
- Record previous and revised salary.
- Store approval information.
- Maintain history for HR audit.
Holidays
The Holidays module stores official holidays and helps dashboard/event widgets show upcoming holidays.
Features
- Create holidays with name and date.
- Edit holiday information.
- Delete holiday records.
- Export current-year holiday list.
Users, Roles and Permissions
User Management controls who can access the system and what each user can do.
Users
- Create user accounts.
- Approve or reject user access.
- Assign users to roles.
- Link users with employee records.
Roles
- The default seed creates common organization roles with practical permission assignments.
- Super Admin and Admin receive all permissions by default.
- HR Admin, HR Manager, Payroll Manager, Finance Manager, Department Head, Supervisor, Project Manager, Team Lead, Auditor and Employee receive scoped default permissions.
- Admin or HR users can change the assigned permissions later from the Roles screen.
- Users inherit access from assigned roles.
Permissions
Permissions are grouped by module, for example employee.view, payroll_run.generate, payslip.view and settings.update.
Permission access labels are database driven. Each permission stores an access scope key, label, badge class and description, so the role permission screen can show whether a permission is for own access, department/team access, admin/global access or general access.
Data Access Rules
- Employee self-service: Employees can view their own attendance, leave applications, leave balances, assigned teams, assigned projects, assigned tasks, payslips, loans, deductions and provident fund records when the related view permission is assigned.
- Supervisor access: Supervisors can view their own records and direct subordinate records for attendance, leave approval/reporting and task work scope. Supervisor access does not automatically expose payroll finance records.
- Payroll privacy: Salary, payslip, loan, deduction and provident fund records are self-only unless payroll management or payroll report permissions are assigned.
- Work module access: Team, project and task lists are scoped to records where the user is a lead, manager, member, assignee, creator or direct supervisor of an assignee. Management permissions allow wider setup access.
- Holiday access: Users with holiday view permission can see the holiday list/calendar. Create, update and delete actions require separate holiday permissions.
| Scope | Meaning |
|---|---|
| Own / Self | User can access their own records or personal actions. |
| Department / Team | User can access assigned team, department or approval-scope records. |
| Admin / Global | User can access company-wide records, setup, approval, payroll or reports. |
| General | Basic module visibility or shared access. |
Payroll Permission Meaning
Payroll, loan, deduction and payslip data are confidential. Department Head, Supervisor, Project Manager and Team Lead roles should not receive global payroll permissions unless the company intentionally allows them to see salary records.
| Permission | Apply When | Data Access Meaning |
|---|---|---|
payslip.view | Employee should view own payslip details. | Own payslips only unless the user also has payroll global permissions. |
report.payroll / payroll.report | HR, Payroll Manager, Finance Manager or Admin should see payroll reports. | Company-wide payroll report access. |
payroll.view | Payroll staff should view payroll runs and payroll data. | Company-wide payroll access. |
payroll.generate / payroll_run.generate | Payroll staff should generate payroll drafts. | Can create or regenerate draft payroll runs. |
payroll_run.approve | Authorized payroll approver should final submit payroll. | Can process draft payroll and post salary-linked loan/PF effects. |
payroll_run.mark-paid | Finance/payroll staff should mark salary payment status. | Can mark payslips as paid after payroll is processed. |
employee_salary.view | User should access employee salary module screens. | Employee salary module visibility. |
employee_salary.list | User should view the Employee Salaries assignment table. | Can list employee salary assignments. |
employee_salary.detail | User should view one employee salary assignment detail page. | Can inspect salary assignment breakdown and effective dates. |
employee_salary.assign | Payroll staff should assign actual salary to employees. | Can create employee salary assignment snapshots. |
loan.apply / employee_loan.apply | Employee should request a loan. | Own loan application only. |
loan.view / employee_loan.view | User should see loan information. | Own loan data only unless management permissions are assigned. |
loan.approve-supervisor / employee_loan.approve-supervisor | Supervisor or Department Head should review first-stage loan requests. | Pending team approval loans only. |
loan.approve-final / employee_loan.approve-final | Final loan approver should complete loan approval. | Final approval workflow access. |
payroll.manage-loan | Payroll or HR finance staff should manage company loan records. | Company-wide loan management access. |
employee_deduction.view | Employee should view own deductions. | Own deduction data only unless management permissions are assigned. |
payroll.manage-deduction | Payroll staff should create, update or remove employee deductions. | Company-wide deduction management access. |
provident_fund.view | User should see PF details. | Self or scoped access depending on assigned management permissions. |
provident_fund.report | HR, Payroll, Finance or Admin should see company PF reports. | Company-wide PF report access with department and employee filters. |
payroll.manage-pf | Payroll staff should manage PF setup and transactions. | Company-wide provident fund management access. |
Recommended Role Assignment
| Role | Recommended Payroll Access | Do Not Assign By Default |
|---|---|---|
| Admin / Super Admin | All permissions. | - |
| HR Admin / HR Manager | Employee, attendance, leave and HR reports. Add payroll permissions only if HR handles salary processing. | Global payroll permissions if HR should not see salary. |
| Payroll Manager | payroll.view, payroll.generate, payroll_run.*, payroll.report, salary, bonus, loan, deduction, PF and payslip permissions. | - |
| Finance Manager | Payroll report, payslip export/print, loan, deduction, PF report and payment status permissions if finance processes salary payment. | Employee HR administration permissions unless required. |
| Department Head / Supervisor | Own payslip, own loan, own deductions, team attendance/leave approval, team work scope. Loan supervisor approval only if part of loan workflow. | payroll.view, payroll.report, report.payroll, payroll.manage-deduction, payroll.manage-loan. |
| Employee | Own profile, own attendance, own leave, own tasks/projects, own payslips, own loans, own deductions and own PF. | Any global payroll, loan, deduction or report permission. |
| Auditor | Read-only report permissions only when company policy allows salary auditing. | Create, update, delete, generate or final approval permissions. |
Role-Based Permission Matrix
Use this matrix as a practical starting point when creating or reviewing roles. The default seed already assigns similar permissions, but every company should adjust sensitive payroll, finance and settings access based on internal policy.
| Role | Should Receive | Should Avoid |
|---|---|---|
| Super Admin | All permissions. Reserved for system owner or technical administrator. | Do not assign to normal HR, finance or department users. |
| Admin | settings.*, role.*, employee.*, department.*, designation.*, dashboard.*, report.*, all setup permissions and full user approval access. |
Avoid for daily employees. Admin is full system access. |
| HR Admin / HR Manager | employee.view, employee.create, employee.update, employee.status-view, employee.status-update, profile update review/approval permissions, attendance.view, attendance.manage, leave.*, holiday.*, announcement.*, department.view, designation.view, report.employee, report.attendance, report.leave. |
payroll.generate, payroll_run.approve, payroll.report, payslip.export, loan/deduction/PF management unless HR is responsible for payroll finance. |
| Payroll Manager | payroll.view, payroll.generate, payroll.report, payroll_run.view, payroll_run.generate, payroll_run.approve, payroll_run.mark-paid, salary grade/template/employee salary permissions, bonus.*, payroll.manage-loan, payroll.manage-deduction, payroll.manage-pf, payslip.view, payslip.print, payslip.export. |
role.assign, settings.update, broad HR employee delete permissions unless payroll user is also admin. |
| Finance Manager | payroll.report, report.payroll, payslip.view, payslip.print, payslip.export, payroll_run.mark-paid, loan.view, employee_loan.view, deduction.view, employee_deduction.view, provident_fund.view, provident_fund.report, report.export, finance/billing/expense permissions when enabled. |
employee.create, employee.update, role.assign, settings.update, payroll.generate and payroll_run.approve unless finance processes payroll. |
| Department Head | Employee self-service permissions, dashboard.view-department, dashboard.employee-summary, employee.view, employee.view-profile, employee.view-hierarchy, attendance.view, attendance.report, leave.approve, leave.report, report.attendance, report.leave, loan.approve-supervisor if loan workflow requires manager approval. |
Global payroll, salary assignment, payslip export, loan final approval, PF management, role/settings permissions. |
| Supervisor | Employee self-service permissions, direct subordinate visibility, employee.view-profile, attendance.approve-time-change, leave.approve, task.view, task.assign, task.comment, loan.approve-supervisor when enabled. |
Department-wide HR administration, payroll reports, salary setup, user/role/settings access. |
| Project Manager / Team Lead | project.view, project.create, project.update, project.manage-members, team.view, team.update, team.manage-members, task.view, task.create, task.update, task.assign, task.comment, file view/upload/preview/comment permissions. |
HR employee administration, payroll, salary, loan/deduction/PF finance permissions. |
| Executive / Managing Director | Usually a custom read/report role: dashboard.view, dashboard.view-all, employee.view, department.view, designation.view, attendance.report, leave.report, payroll.report, report.payroll, provident_fund.report, report.view, report.export, audit.view. |
Operational permissions like employee.delete, role.assign, settings.update, payroll.generate, payroll_run.approve unless the executive actively operates the system. |
| Auditor | Read-only access: report.view, report.employee, report.attendance, report.leave, report.payroll, report.export, audit.view, plus view-only module permissions allowed by company policy. |
Create, update, delete, approve, generate, final submit, mark-paid and settings permissions. |
| Employee | dashboard.view, dashboard.view-self, own profile/profile update permissions, attendance.clock, attendance.view, leave.apply, leave.view, payslip.view, loan.apply, employee_loan.view-own, employee_loan.apply, employee_deduction.view, provident_fund.view, own task/project/team visibility. |
Any global payroll, HR admin, role, settings, report export, salary setup, loan final approval, deduction management or PF management permissions. |
Permission Assignment Rules
- Assign one primary job role per user where possible. Do not add Employee role to HR Admin, Payroll Manager or Department Head if their role already includes self-service permissions.
- Every staff login should be linked to an employee profile before approval, including HR Admin, Department Head, CEO/Managing Director and Payroll users.
- Give payroll and payslip report permissions deliberately. Generic report access should not automatically mean salary access.
- Use
role.assignonly for trusted administrators who can change user access. - Use
settings.updateonly for users allowed to change company-wide configuration. - Use
payroll_run.approveonly for the person authorized to final submit payroll.
User Approval and Employee Setup
- New registered users remain in
pending_approval. - Admin must create or link the employee profile before approval.
- The employee profile stores staff identity, department, designation, reporting line, attendance scope, leave scope and payroll identity.
- After employee setup is complete, admin can approve the user and assign the correct role such as Employee, HR Admin, Department Head or Payroll Manager.
- Approval is blocked when no employee profile is linked to the user.
Role-Based Operation Guide
This guide explains what each common role should normally do in the system. The final behavior still depends on the permissions assigned to the role from the database.
| Role | Normal Responsibility | Typical Modules | Data Scope |
|---|---|---|---|
| Employee | Self-service user. Updates personal information, clocks attendance, applies for leave or resignation, views own work and views own finance records. | Dashboard, Profile, Attendance, Leave, Holidays, Announcements, Teams/Projects/Tasks, Payslips, Loans, Deductions, Provident Fund, Resignation. | Own records only. |
| Supervisor | First-line approver for direct reports. Reviews team attendance issues, leave requests, task progress and assigned workflow approvals. | Dashboard, Employee summary for subordinates, Attendance, Leave approvals, Teams/Projects/Tasks, Loan supervisor approval if enabled. | Own records plus direct subordinate/team workflow records. No salary/payroll visibility by default. |
| Department Head | Department-level manager. Monitors department employees, attendance, leave, resignations and department work. Can approve department workflow items when permission is assigned. | Dashboard, Employees, Attendance reports, Leave approvals/reports, Resignation supervisor approval, Teams/Projects/Tasks, Announcements. | Own records plus department records. Payroll, payslip, deduction and loan finance data remain self-only unless explicit finance permissions are assigned. |
| Project Manager / Team Lead | Manages work delivery. Creates or updates teams/projects/tasks and tracks assigned members. | Teams, Projects, Tasks, Files, Comments, Work reports. | Assigned teams/projects/tasks and members. No HR payroll access by default. |
| HR Admin / HR Manager | Maintains employee records and HR policies. Handles employee lifecycle from onboarding to resignation and HR reporting. | Employees, Departments, Designations, Attendance administration, Leave setup, Profile update approvals, Resignation approvals, Announcements, Holidays, HR reports. | Company-wide HR records. Payroll access only if salary processing responsibility is assigned. |
| Payroll Manager | Maintains salary setup and processes payroll. Reviews draft payroll, final submits payroll and manages salary-linked deductions. | Salary Grades, Salary Templates, Employee Salary Assignments, Bonuses, Loans, Deductions, Provident Fund, Payroll Runs, Payslips, Payroll Reports. | Company-wide payroll and finance records. |
| Finance Manager | Reviews salary payable, loan recovery, employer PF contribution and payment status. Can export reports and mark payment status when assigned. | Payroll Reports, Payslips, Loans, Deductions, Provident Fund Report, Billing/Expenses if enabled. | Company-wide finance records only when granted by permission. |
| Admin / Super Admin | System owner. Configures roles, permissions, users, settings, seed data and global module access. | All modules, User Management, Roles, Permissions, Settings, Audit, Reports. | Company-wide system access. |
Employee Lifecycle by Role
| Workflow | Employee | Supervisor / Department Head | HR / Admin | Payroll / Finance |
|---|---|---|---|---|
| Sign up / account request | Registers account when public registration is enabled, or waits for HR/Admin-created login. | No action unless company policy requires manager verification. | Approves or rejects account, links user to employee profile and assigns role. | No action. |
| Employee onboarding | Completes personal profile and uploads required documents when allowed. | Can review team assignment or reporting line if assigned. | Creates employee record, department, designation, salary grade, manager, user login and employment status. | Assigns salary template, salary snapshot, PF setup, loan/deduction opening records if needed. |
| Profile update | Submits profile change request for editable personal data. | Can review if profile approval workflow is assigned to department level. | Reviews, approves or rejects profile update requests. | No action. |
| Attendance | Clocks in/out and views own attendance history. | Views subordinate or department attendance and approves time corrections when assigned. | Manages attendance records, imports device data and runs attendance reports. | Uses finalized attendance summary only if company policy affects payroll. |
| Leave | Applies for leave and views own leave balance/status. | Approves or rejects team leave requests when assigned. | Configures leave categories, quotas, balances and final approvals if required. | No action unless unpaid leave affects payroll calculation by policy. |
| Teams, projects and tasks | Views assigned teams/projects/tasks and updates own task progress when allowed. | Creates or manages team/project work when assigned. | Can monitor organization-level work records if permission is assigned. | No action. |
| Loan request | Applies for own loan and views own loan/installment status. | Approves first-stage team loan requests when loan supervisor permission is assigned. | Can review policy compliance if assigned. | Final approves, activates loan, manages installment schedule and payroll deduction. |
| Deductions and PF | Views own deduction and provident fund records. | No access by default. | No access unless HR handles salary policy. | Creates and manages employee deductions and PF transactions. |
| Payroll and payslip | Views own payslips only. | Views own payslips only. Does not see subordinate salary by default. | Can view payroll only when payroll permissions are assigned. | Generates draft payroll, reviews payslips, final submits payroll, posts loan/PF effects and marks payment status. |
| Resignation | Applies for resignation and tracks own application. | Reviews own department or subordinate resignation applications when supervisor approval permission is assigned. | Performs final approval/rejection, updates employee status and offboarding records. | Processes final settlement items when payroll/finance permissions are assigned. |
Module-Wise Permission Meaning
| Module | Self / Employee | Department / Team | Admin / Global |
|---|---|---|---|
| Dashboard | dashboard.view_self shows own attendance, leave, notices and quick notes. | dashboard.view_department shows department/team summary widgets. | dashboard.view_all shows company-wide dashboard data. |
| Employees | employee.view-profile and profile update request permissions allow own profile actions. | Department heads can see department employees when scoped by controller rules and assigned permissions. | employee.view, employee.create, employee.update, employee.delete manage employee records. |
| Attendance | attendance.clock and basic attendance view allow own attendance actions. | attendance.report or approval permissions can show subordinate/team attendance based on scope. | attendance.manage, import/export and report permissions manage all attendance records. |
| Leave | leave.apply allows own leave application and own leave status. | leave.approve allows assigned approval-scope leave processing. | Leave category, quota, balance and report permissions manage all leave setup and records. |
| Work | Project/team/task view permissions show assigned work only. | Project Manager, Team Lead or Supervisor permissions allow assigned team/project/task management. | Create, update, delete and manage-member permissions can manage wider work records. |
| Payroll | payslip.view shows own payslips only. | Department/team roles should not receive salary visibility by default. | payroll.view, payroll.generate, payroll.report and payroll_run.* manage payroll. |
| Loans | loan.apply, employee_loan.apply and own view permissions handle own loans. | Supervisor approval permissions show pending team loan approvals only. | payroll.manage-loan and loan management permissions manage all loans. |
| Deductions | employee_deduction.view shows own deductions. | No department/team deduction access by default. | payroll.manage-deduction and deduction create/update/delete permissions manage all deductions. |
| Resignation | employee.resignation-apply allows own resignation request. | employee.resignation-supervisor-approve handles department/subordinate applications. | employee.resignation-final-approve handles final HR/Admin approval and employee status update. |
| Reports | Self-service reports show own data when implemented for that module. | Department reports show only department/team data where scoped. | Global report permissions show company-wide report data. Payroll report requires payroll-specific permissions. |
Settings
The Settings module manages company profile, branding and application configuration.
Typical Settings
- Company name.
- Logo and branding images.
- Contact information.
- System preferences.
Localization
Zeri HR supports multilingual UI labels for dashboard, employees, departments, designations, attendance, leave, payroll, users, roles, permissions, holidays, notices, teams, projects, settings and reports.
Supported Languages
| Language | Code | Coverage |
|---|---|---|
| 🇺🇸 English | en | Default system language. |
| 🇩🇪 German | de | Core HR, payroll and admin UI labels. |
| 🇫🇷 French | fr | Core HR, payroll and admin UI labels. |
| 🇮🇳 Hindi | hi | Core HR, payroll and admin UI labels. |
How Language Selection Works
- Users can change the interface language from the topbar language selector.
- The selected language is stored in the session and applied through the locale middleware.
- Translation files are stored in
lang/en.json,lang/de.json,lang/fr.jsonandlang/hi.json. - Database content such as employee names, department names, project names and notice titles remains user-entered content and is not automatically translated.
Reports
Reports help HR and management export or review operational records.
Available Report Areas
- Attendance reports.
- Leave reports.
- Payroll reports.
- Employee reports.
- Provident fund reports.
Notifications
Topbar notifications show relevant alerts to the logged-in user.
Examples
- Announcements and notices.
- Pending leave requests.
- Attendance alerts.
- Upcoming holidays.
- Task-related notifications.
Notification visibility is permission and scope based. Admin-level users can see wider alerts; employees see their own relevant alerts.
FAQ
Can employees in the same salary grade have different salaries?
Yes. Salary Grade defines the allowed range. Employee Salary Assignment stores the actual employee-specific salary snapshot.
Does payroll use the shared salary template directly?
No. Payroll uses the employee-specific salary snapshot stored in employee_salary_templates.
Can HR review payroll before final submission?
Yes. Payroll generation creates a draft run. HR reviews the run and final submits only after checking.
Can payment be marked before payroll final submission?
No. Payslip payment can be marked only after the payroll run is finalized.
How is loan installment amount calculated?
The system calculates it from Principal Amount, Interest % and Installment Count: (principal + interest amount) / installment count. The backend recalculates it during save and reschedule.
Can a loan be rescheduled after payroll paid an installment?
No. Rescheduling is blocked after any installment is paid so payroll and loan history remain consistent.
Why can some users not see a module?
The user role may not have the required permission. Assign the needed permission from Role Permissions.
Screenshot Guide
All screenshot placeholders in this document point to the following folder:
Documentation/assets/screenshots/
Recommended image naming:
dashboard.pngemployees-list.pngattendance-list.pngleave-management.pngsalary-templates.pngemployee-salary-assignment.pngpayroll-runs.pngpayroll-run-detail.pngpayslip-detail.png