PHPackages                             jeffersongoncalves/laravel-erp-hr - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jeffersongoncalves/laravel-erp-hr

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jeffersongoncalves/laravel-erp-hr
=================================

ERP HR — employees, leave, attendance and payroll for the Laravel ERP ecosystem

101PHP

Since Jun 30Pushed todayCompare

[ Source](https://github.com/jeffersongoncalves/laravel-erp-hr)[ Packagist](https://packagist.org/packages/jeffersongoncalves/laravel-erp-hr)[ RSS](/packages/jeffersongoncalves-laravel-erp-hr/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (1)

[![Laravel ERP HR](https://raw.githubusercontent.com/jeffersongoncalves/laravel-erp-hr/main/art/jeffersongoncalves-laravel-erp-hr.png)](https://raw.githubusercontent.com/jeffersongoncalves/laravel-erp-hr/main/art/jeffersongoncalves-laravel-erp-hr.png)

Laravel ERP HR
==============

[](#laravel-erp-hr)

ERP HR &amp; payroll — employees, attendance, leave, salary structures and payroll for the Laravel ERP ecosystem.

This package is the HR / payroll module of the Laravel ERP ecosystem. It owns the employee master, attendance and leave, the salary-component/structure catalog and the payroll run that produces salary slips, posting each slip's earnings and deductions into the accounting module's general ledger. It depends on [`jeffersongoncalves/laravel-erp-core`](https://github.com/jeffersongoncalves/laravel-erp-core) and [`jeffersongoncalves/laravel-erp-accounting`](https://github.com/jeffersongoncalves/laravel-erp-accounting).

Features
--------

[](#features)

- **Employees** — A master holding company, department, designation, joining/leaving dates, gender, status (`Active`, `Inactive`, `Left`) and CTC.
- **Attendance** — A submittable per-employee daily record (`Present`, `Absent`, `Half Day`, `On Leave`).
- **Leave** — Leave types (paid, allowance, negative-balance policy) and a submittable leave application that guards the available balance on submit.
- **Salary catalog** — Salary components (earning/deduction, taxable, default account) and a submittable salary structure with component lines, plus dated structure assignments per employee.
- **Salary slips** — A submittable document built from an employee's active structure assignment; it computes gross pay, total deduction and net pay, and on submit posts a **balanced general-ledger entry** (earnings debit their accounts, deductions and net pay credit theirs) via the accounting `GeneralLedgerService`. Cancelling reverses the ledger.
- **Payroll entry** — A submittable run that generates one draft salary slip per active assigned employee for a period.
- **Customizable Models** — Override any model via config (ModelResolver pattern); `Employee` and `SalaryStructure` ship swappable contracts.
- **Translations** — English and Brazilian Portuguese.

Compatibility
-------------

[](#compatibility)

PackagePHPLaravel`^1.0``^8.2``^11.0 | ^12.0 | ^13.0`Installation
------------

[](#installation)

```
composer require jeffersongoncalves/laravel-erp-hr
```

Publish and run the migrations (the core and accounting package migrations must be published too):

```
php artisan vendor:publish --tag="erp-core-migrations"
php artisan vendor:publish --tag="erp-accounting-migrations"
php artisan vendor:publish --tag="erp-hr-migrations"
php artisan migrate
```

Publish the config (optional):

```
php artisan vendor:publish --tag="erp-hr-config"
```

Payroll
-------

[](#payroll)

`SalarySlipService`, `PayrollEntryService` and `LeaveService` are resolved from the container.

```
use JeffersonGoncalves\Erp\Hr\Services\PayrollEntryService;
use JeffersonGoncalves\Erp\Hr\Services\SalarySlipService;

// Generate draft salary slips for every active assigned employee in the period.
$slips = app(PayrollEntryService::class)->createSalarySlips($payrollEntry);

// A slip posts to the ledger on submit; the payable account is supplied by the
// caller because it is not stored on the slip.
$slip->payableAccountId = $payrollPayable->id;
$slip->submit(); // debits earning accounts, credits deduction + net-pay accounts
```

- **buildFromAssignment** pulls the employee's active salary-structure assignment, copies its component lines onto the slip and computes `gross_pay`, `total_deduction` and `net_pay`. Submitting posts the balanced general-ledger entry; cancelling reverses it. Submitting without a payable account throws.

Database Tables
---------------

[](#database-tables)

All tables use the configured prefix shared across the ERP ecosystem (default: `erp_`): `employees`, `leave_types`, `holiday_lists`, `holidays`, `salary_components`, `salary_structures`, `salary_structure_components`, `salary_structure_assignments`, `attendances`, `leave_applications`, `salary_slips`, `salary_slip_components`, `payroll_entries`.

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](.github/SECURITY.md) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Jefferson Simão Gonçalves](https://github.com/jeffersongoncalves)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance65

Regular maintenance activity

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/411493?v=4)[Jefferson Gonçalves](/maintainers/jeffersongoncalves)[@jeffersongoncalves](https://github.com/jeffersongoncalves)

---

Top Contributors

[![jeffersongoncalves](https://avatars.githubusercontent.com/u/411493?v=4)](https://github.com/jeffersongoncalves "jeffersongoncalves (1 commits)")

### Embed Badge

![Health badge](/badges/jeffersongoncalves-laravel-erp-hr/health.svg)

```
[![Health](https://phpackages.com/badges/jeffersongoncalves-laravel-erp-hr/health.svg)](https://phpackages.com/packages/jeffersongoncalves-laravel-erp-hr)
```

###  Alternatives

[pixelfear/composer-dist-plugin

Downloads distributable assets to be used in packages so you don't have to commit them.

304.1M92](/packages/pixelfear-composer-dist-plugin)[insolita/yii2-iconpicker

Widget for bootstrap-iconpicker plugin http://victor-valencia.github.io/bootstrap-iconpicker/

1110.6k1](/packages/insolita-yii2-iconpicker)[danielgsims/staticproxy

A thin proxy for static classes

118.2k](/packages/danielgsims-staticproxy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
