Zeri HR Documentation

A complete A to Z guide for administrators, HR teams, department heads and employees using Zeri HR.

Product

Zeri HR

Application Type

HR, Payroll and Workforce Management System

Documentation Version

1.0

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.

Screenshot Placeholder: Application Dashboard Add screenshot later at Documentation/assets/screenshots/dashboard.png

System Requirements

RequirementRecommended
PHPPHP 8.2 or compatible with the installed Laravel version
DatabaseMySQL / MariaDB
Web ServerApache, Nginx or XAMPP local server
ComposerRequired for PHP dependencies
Node.js / npmRequired if frontend assets need rebuilding
BrowserLatest Chrome, Firefox, Safari or Edge

Installation

Local Setup

  1. Place the project folder inside the web root, for example htdocs/hr-payroll.
  2. Create a MySQL database.
  3. Copy .env.example to .env and configure database credentials.
  4. Install dependencies with Composer.
  5. Run migrations and the default admin seeder.
  6. 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
After changing Blade files or configuration, clear cache if the browser does not show the latest updates.

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

FieldDefault Value
Emailadmin@zerihr.local
Passwordpassword
RoleAdmin
Account Statusactive

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

RoleDefault Purpose
Super AdminHighest-level system owner with full access.
AdminFull system administration access. The default admin user receives this role.
HR AdminEmployee, attendance, leave, announcement, team, project and HR report operations.
HR ManagerHR oversight, employee lifecycle approvals, attendance and leave reports.
Payroll ManagerSalary, payroll runs, payslips, bonus, loan, deduction, provident fund and salary revision management.
Finance ManagerBilling, clients, estimates, invoices, expenses and finance reports.
Department HeadDepartment-level employee visibility, team approvals and department reports.
SupervisorDirect subordinate visibility, first-level approvals, tasks and team reports.
Project ManagerProject, team, task, file and client workflow access.
Team LeadAssigned team, project and task execution access.
AuditorRead-only review access for reports, audit and key module data.
EmployeeSelf-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

PermissionAccess ScopeUsage
loan.applyOwn / SelfEmployee loan application access.
loan.approve-supervisorDepartment / TeamSupervisor or department approval access.
loan.approve-finalAdmin / GlobalFinal loan approval access.
Change the default admin password after first login, or set a secure 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

  1. Change the default admin password from the dashboard password screen.
  2. Open Settings and update company profile, logo, favicon, contact information, timezone, currency and email settings.
  3. Create core organization records: departments, designations and reporting structure.
  4. Create salary grades with salary ranges and band names.
  5. 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.
  6. Create or approve user accounts only after the employee profile is created and linked to the user account.
  7. Create employee profiles with department, designation, manager/reporting line, salary grade, employment status and linked user account.
  8. Configure leave categories, leave policies, holidays and attendance rules before employees start applying for leave or clocking attendance.
  9. Create payroll setup records: salary templates, employee salary assignments, provident fund setup, recurring deductions and opening loan records if needed.
  10. 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

AreaAdmin ActionWhy It Matters
SettingsConfigure company name, branding, SMTP/email and basic app settings.Emails, documents and UI branding use these values.
DepartmentsAdd departments and assign department heads after employee profiles exist.Department scope controls reports, approvals and employee visibility.
DesignationsAdd job titles under the correct department where applicable.Employee records and reports use designation for staff classification.
Salary GradesCreate grade names, band names and min/max salary ranges.Employee salary assignment validates basic salary against the grade range.
RolesReview default role templates and remove permissions not needed by each role.Prevents HR, managers or employees from seeing modules outside their responsibility.
PermissionsCheck sensitive permissions such as payroll, payslip, loan, deduction, PF, reports and settings.Salary and finance data should only be visible to authorized roles.
UsersCreate or approve login accounts only after linking an employee profile.Login access must map to a staff identity for attendance, leave, approvals and payroll.
EmployeesCreate 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.
PayrollCreate 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.

Do not give a user broad permissions just to make login work. Complete employee setup first, then assign the right role.

Login and Access

Users access the system through the login page using their approved account email and password.

Login Flow

  1. Open the application URL.
  2. Enter email and password.
  3. 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
RoleEmailPassword
Admindemo.admin@zerihr.localP@ssword
HR Adminhr.admin@zerihr.localP@ssword
Department Headdepartment.head@zerihr.localP@ssword
Employeeemployee@zerihr.localP@ssword
Screenshot Placeholder: Login Page Add screenshot later at Documentation/assets/screenshots/login.png

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

  1. Go to User Management > Add User.
  2. Create a user with name, email, password and role.
  3. Use the Employee role for normal employee access, or assign another role based on your permission setup.
  4. Approve or activate the user account if approval is enabled.
  5. Go to Employees > Employee List.
  6. Edit the employee profile.
  7. In the User Account field, select the user account created earlier.
  8. Save the employee profile.
  9. The employee can now log in using the linked user email and password.

How It Works Internally

Table / FieldPurpose
usersStores login credentials, account status and role assignment.
employeesStores HR profile and employment information.
employees.user_idLinks the employee profile to the login user account.
If an employee has no linked user account, the employee cannot log in even if the employee profile exists.
Screenshot Placeholder: Add User for Employee Login Add screenshot later at Documentation/assets/screenshots/employee-login-user.png
Screenshot Placeholder: Link User Account in Employee Form Add screenshot later at Documentation/assets/screenshots/employee-link-user-account.png

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 TypeDashboard Scope
Admin / HRCan view organization-level summary when permissions allow.
Department HeadCan view department/team related summary when permissions allow.
EmployeeCan view own attendance, leave, notices and quick notes.
Screenshot Placeholder: Dashboard Cards and Widgets Add screenshot later at Documentation/assets/screenshots/dashboard-widgets.png

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

TablePurpose
employeesMain employee profile and employment record.
employee_addressesEmployee present/permanent address records.
employee_bank_accountsEmployee bank account details.
employee_emergency_contactsEmergency contact information.
employee_documentsEmployee documents and verification status.
Screenshot Placeholder: Employee List Add screenshot later at Documentation/assets/screenshots/employees-list.png

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

  1. Employee opens the profile update page.
  2. Employee changes personal information, contact details or profile image.
  3. Employee submits the request for HR approval.

HR Workflow

  1. HR opens the update approval queue.
  2. HR compares current and requested information.
  3. HR approves or rejects the request.
  4. On approval, employee data is updated.
Screenshot Placeholder: Profile Update Request Add screenshot later at Documentation/assets/screenshots/profile-update-request.png

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.
Screenshot Placeholder: Organization Structure Add screenshot later at Documentation/assets/screenshots/organization-structure.png

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

StatusDescription
PresentEmployee attended within expected time.
LateEmployee checked in after allowed time.
AbsentNo attendance found for the employee.
LeaveEmployee is on approved leave.
Screenshot Placeholder: Attendance List Add screenshot later at Documentation/assets/screenshots/attendance-list.png

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 TypeCarry ForwardEarned LeaveYear-End Behavior
Sick LeaveNoneNoUnused sick leave expires. New year starts with only the new yearly sick leave allocation.
Casual LeaveNoneNoUnused casual leave expires. New year starts with only the new yearly casual leave allocation.
Annual LeaveFull or LimitedYesUnused 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 TypeYearly AllocationUsedUnusedNext Year Opening
Sick Leave104610. Unused 6 expires.
Casual Leave107310. Unused 3 expires.
Annual Leave148620 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

  1. Employee submits leave application.
  2. Approver reviews pending leave.
  3. Approver approves or rejects the application.
  4. Reports can be exported for HR review.
Screenshot Placeholder: Leave Management Add screenshot later at Documentation/assets/screenshots/leave-management.png

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.
Screenshot Placeholder: Announcement List Add screenshot later at Documentation/assets/screenshots/announcements.png

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.
Screenshot Placeholder: Tasks Add screenshot later at Documentation/assets/screenshots/tasks.png

Payroll Overview

The Payroll module manages salary structure, employee-specific salary assignment, bonuses, loans, deductions, provident fund and payslip generation.

Professional payroll flow: create salary grade, create reusable salary template, assign employee-specific salary snapshot, generate payroll draft, HR reviews, final submit, then mark payments as paid.

Payroll Flow

  1. Create Salary Grades.
  2. Create reusable Salary Templates.
  3. Assign Employee Salary from a salary template and customize the actual employee salary values.
  4. Add bonuses, loans, deductions and provident fund settings.
  5. Generate Payroll Draft for selected period. Draft shows expected salary, bonus, loan installment deduction, other deductions, PF, tax and net payable.
  6. Review all payroll items and payslips before final submission.
  7. Final Submit payroll run. This is the posting step for salary-linked records such as loan installment payment and PF contribution.
  8. Mark individual payslips as paid after payment processing.

Payroll Run Generation Logic

StepSystem Logic
Period checkThe 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 selectionIf 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 sourcePayroll 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.
AllowancesHouse rent, medical allowance, conveyance allowance and other allowance are taken from the employee salary assignment.
BonusBonus amount is included when the bonus date falls inside the payroll period.
Loan deductionOnly active loans are considered. Pending installments with due dates inside the payroll period are summed into the draft payslip.
Other deductionsActive 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 taxEmployee 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 totalsGross, deduction total and net payable are calculated for each payslip and summarized in the payroll run.
Loan balances are not reduced during draft generation. Loan installments are marked paid only when the payroll run is finalized, because the deduction becomes real only when salary is processed.
Screenshot Placeholder: Payroll Dashboard / Runs Add screenshot later at Documentation/assets/screenshots/payroll-runs.png

Salary Grades

Salary Grade represents employee level and salary range. It is not the final salary amount for every employee.

Example

GradeMinimum SalaryMaximum Salary
Executive35,00080,000
Manager80,000150,000

Usage

  • Classifies employees by level.
  • Provides allowed salary range.
  • Used by leave policies and HR reports.
  • Used to validate employee salary assignment amounts.
Screenshot Placeholder: Salary Grades Add screenshot later at Documentation/assets/screenshots/salary-grades.png

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.
Changing a salary template should not automatically change already assigned employee salary snapshots.
Screenshot Placeholder: Salary Templates Add screenshot later at Documentation/assets/screenshots/salary-templates.png

Employee Salary Assignment

This is the final salary setup used during payroll calculation. Employees in the same salary grade can have different salary amounts.

Use the Employee Salaries table at /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

  1. Select employee.
  2. Select salary structure/template.
  3. The system fills default template values.
  4. HR customizes the salary values for that employee.
  5. 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

FieldPurpose
basic_salaryEmployee-specific basic salary.
house_rentEmployee-specific house rent allowance.
medical_allowanceEmployee-specific medical allowance.
conveyance_allowanceEmployee-specific conveyance allowance.
other_allowanceOther employee-specific allowance.
gross_salaryTotal salary before deductions and bonus.
provident_fund_percentEmployee-specific PF rate.
tax_percentEmployee-specific tax rate.
ctc_amountOptional 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.
The assigned basic salary must be within the employee salary grade range when min/max values are configured.
Screenshot Placeholder: Employee Salary Assignment Add screenshot later at Documentation/assets/screenshots/employee-salary-assignment.png

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.
Screenshot Placeholder: Bonuses Add screenshot later at Documentation/assets/screenshots/bonuses.png

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 AmountInterestInstallment CountTotal PayableInstallment Amount
60,0000%660,00010,000
60,00010%666,00011,000

Loan Approval Flow

  1. Employee submits a loan request with loan.apply or employee_loan.apply.
  2. Supervisor or department approver reviews team requests with loan.approve-supervisor or employee_loan.approve-supervisor.
  3. Final approver completes approval with loan.approve-final or employee_loan.approve-final.
  4. After final approval, the loan becomes active and installment schedules are generated.
  5. 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

  1. Loan must be active before it can be deducted from payroll.
  2. Payroll draft calculates loan_deduction from pending installments due inside the payroll period.
  3. HR reviews the draft payslip and confirms that the loan deduction is correct.
  4. When HR final submits the payroll run, those due installments are marked as paid.
  5. The paid installment stores the payroll item reference so HR can see which salary/payslip paid it.
  6. When all installments are paid, the loan status becomes closed automatically.
Recommended workflow: employee applies for loan, supervisor approves, final approver activates it, payroll deducts due installments from salary, and final payroll updates loan balances.
If loan installments are manually paid, rescheduled or changed after payroll draft generation, regenerate the payroll draft before final submission so payslip deduction and loan balance remain the same.

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.

Screenshot Placeholder: Employee Loans Add screenshot later at Documentation/assets/screenshots/employee-loans.png

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

SetupPayroll Behavior
Fixed AmountDeducts the exact amount entered. Example: 500 deducts 500 from the payslip.
Percent of Basic SalaryDeducts the entered percent from basic salary. Example: 5 means 5% of basic salary.
Every Monthly PayrollIncluded only in monthly payroll runs while the deduction is active and inside the effective date range.
Every Weekly PayrollIncluded only in weekly payroll runs while the deduction is active and inside the effective date range.
One Payroll OnlyIncluded 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.

Use Employee Deductions for regular non-loan deductions such as welfare fund, penalties, advances or adjustments. Use the Loan module for installment-based employee loans because payroll will update loan installment balances after final submission.
Screenshot Placeholder: Deductions Add screenshot later at Documentation/assets/screenshots/deductions.png

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 SalaryEmployee PF %Employee Salary DeductionEmployer PF %Company Contribution
50,0008%4,0008%4,000
60,0008%4,8008%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.view is assigned.
  • HR, Admin, Payroll or Finance users with provident_fund.report or payroll.manage-pf can filter by year, department and employee.
  • CSV export is available to users with report.export, provident_fund.report or payroll.manage-pf.
  • The report shows employee contribution, employer contribution, withdrawals, adjustments and balance after each transaction.
Screenshot Placeholder: Provident Fund Add screenshot later at Documentation/assets/screenshots/provident-fund.png

Payroll Runs

Payroll run is the monthly or weekly payroll batch for one period.

Draft and Final Submission Flow

  1. HR generates payroll draft for a period.
  2. The system creates payroll items for employees.
  3. HR reviews every payroll item and payslip.
  4. If needed, HR adjusts employee salary assignment, bonus, loan, deduction or PF setup.
  5. HR regenerates draft for the same period.
  6. When everything is correct, HR clicks Final Submit.
  7. 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.
Finalized payroll runs cannot be regenerated for the same period. Create a new period or review the finalized run.

Important Status Meaning

StatusMeaningCan Regenerate?
DraftPayroll is calculated for HR review. Salary-linked postings are not final yet.Yes
ProcessedPayroll has been final submitted. Loan installments and PF transactions are posted.No
Approved / PaidPayroll has moved beyond processing/payment workflow.No
Screenshot Placeholder: Payroll Run Detail Add screenshot later at Documentation/assets/screenshots/payroll-run-detail.png

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.

Screenshot Placeholder: Payslip Detail Add screenshot later at Documentation/assets/screenshots/payslip-detail.png

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.
Screenshot Placeholder: Salary Revision Add screenshot later at Documentation/assets/screenshots/salary-revisions.png

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.
Screenshot Placeholder: Holidays Add screenshot later at Documentation/assets/screenshots/holidays.png

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.
ScopeMeaning
Own / SelfUser can access their own records or personal actions.
Department / TeamUser can access assigned team, department or approval-scope records.
Admin / GlobalUser can access company-wide records, setup, approval, payroll or reports.
GeneralBasic 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.

PermissionApply WhenData Access Meaning
payslip.viewEmployee should view own payslip details.Own payslips only unless the user also has payroll global permissions.
report.payroll / payroll.reportHR, Payroll Manager, Finance Manager or Admin should see payroll reports.Company-wide payroll report access.
payroll.viewPayroll staff should view payroll runs and payroll data.Company-wide payroll access.
payroll.generate / payroll_run.generatePayroll staff should generate payroll drafts.Can create or regenerate draft payroll runs.
payroll_run.approveAuthorized payroll approver should final submit payroll.Can process draft payroll and post salary-linked loan/PF effects.
payroll_run.mark-paidFinance/payroll staff should mark salary payment status.Can mark payslips as paid after payroll is processed.
employee_salary.viewUser should access employee salary module screens.Employee salary module visibility.
employee_salary.listUser should view the Employee Salaries assignment table.Can list employee salary assignments.
employee_salary.detailUser should view one employee salary assignment detail page.Can inspect salary assignment breakdown and effective dates.
employee_salary.assignPayroll staff should assign actual salary to employees.Can create employee salary assignment snapshots.
loan.apply / employee_loan.applyEmployee should request a loan.Own loan application only.
loan.view / employee_loan.viewUser should see loan information.Own loan data only unless management permissions are assigned.
loan.approve-supervisor / employee_loan.approve-supervisorSupervisor or Department Head should review first-stage loan requests.Pending team approval loans only.
loan.approve-final / employee_loan.approve-finalFinal loan approver should complete loan approval.Final approval workflow access.
payroll.manage-loanPayroll or HR finance staff should manage company loan records.Company-wide loan management access.
employee_deduction.viewEmployee should view own deductions.Own deduction data only unless management permissions are assigned.
payroll.manage-deductionPayroll staff should create, update or remove employee deductions.Company-wide deduction management access.
provident_fund.viewUser should see PF details.Self or scoped access depending on assigned management permissions.
provident_fund.reportHR, Payroll, Finance or Admin should see company PF reports.Company-wide PF report access with department and employee filters.
payroll.manage-pfPayroll staff should manage PF setup and transactions.Company-wide provident fund management access.

Recommended Role Assignment

RoleRecommended Payroll AccessDo Not Assign By Default
Admin / Super AdminAll permissions.-
HR Admin / HR ManagerEmployee, attendance, leave and HR reports. Add payroll permissions only if HR handles salary processing.Global payroll permissions if HR should not see salary.
Payroll Managerpayroll.view, payroll.generate, payroll_run.*, payroll.report, salary, bonus, loan, deduction, PF and payslip permissions.-
Finance ManagerPayroll 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 / SupervisorOwn 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.
EmployeeOwn 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.
AuditorRead-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.

RoleShould ReceiveShould 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.assign only for trusted administrators who can change user access.
  • Use settings.update only for users allowed to change company-wide configuration.
  • Use payroll_run.approve only for the person authorized to final submit payroll.

User Approval and Employee Setup

  1. New registered users remain in pending_approval.
  2. Admin must create or link the employee profile before approval.
  3. The employee profile stores staff identity, department, designation, reporting line, attendance scope, leave scope and payroll identity.
  4. 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.
  5. Approval is blocked when no employee profile is linked to the user.
Do not approve a normal staff user only by assigning permissions. User account, employee profile and role assignment must all be complete before login access is activated.

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.

RoleNormal ResponsibilityTypical ModulesData Scope
EmployeeSelf-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.
SupervisorFirst-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 HeadDepartment-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 LeadManages 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 ManagerMaintains 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 ManagerMaintains 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 ManagerReviews 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 AdminSystem 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

WorkflowEmployeeSupervisor / Department HeadHR / AdminPayroll / Finance
Sign up / account requestRegisters 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 onboardingCompletes 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 updateSubmits 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.
AttendanceClocks 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.
LeaveApplies 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 tasksViews 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 requestApplies 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 PFViews 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 payslipViews 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.
ResignationApplies 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

ModuleSelf / EmployeeDepartment / TeamAdmin / Global
Dashboarddashboard.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.
Employeesemployee.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.
Attendanceattendance.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.
Leaveleave.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.
WorkProject/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.
Payrollpayslip.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.
Loansloan.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.
Deductionsemployee_deduction.view shows own deductions.No department/team deduction access by default.payroll.manage-deduction and deduction create/update/delete permissions manage all deductions.
Resignationemployee.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.
ReportsSelf-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.
Do not use generic report or module visibility permissions as salary access. Salary, payslip, payroll report, loan, deduction and PF access should be assigned deliberately to HR, Payroll, Finance or Admin roles only.
Screenshot Placeholder: Role Permissions Add screenshot later at Documentation/assets/screenshots/role-permissions.png

Settings

The Settings module manages company profile, branding and application configuration.

Typical Settings

  • Company name.
  • Logo and branding images.
  • Contact information.
  • System preferences.
Screenshot Placeholder: Settings Add screenshot later at Documentation/assets/screenshots/settings.png

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

LanguageCodeCoverage
🇺🇸 EnglishenDefault system language.
🇩🇪 GermandeCore HR, payroll and admin UI labels.
🇫🇷 FrenchfrCore HR, payroll and admin UI labels.
🇮🇳 HindihiCore 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.json and lang/hi.json.
  • Database content such as employee names, department names, project names and notice titles remains user-entered content and is not automatically translated.
When adding new screens, wrap visible static labels with Laravel translation helpers and add the keys to all supported language JSON files.

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.
Report access should be controlled by report-related permissions and module-specific permissions.

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.

Screenshot Placeholder: Topbar Notifications Add screenshot later at Documentation/assets/screenshots/topbar-notifications.png

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.png
  • employees-list.png
  • attendance-list.png
  • leave-management.png
  • salary-templates.png
  • employee-salary-assignment.png
  • payroll-runs.png
  • payroll-run-detail.png
  • payslip-detail.png