База данных сотрудников(Laravel php Filament)

PHP

Сегодня мы рассмотрим увлекательную задачу по разработке веб-приложения для управления персоналом и расчёта заработной платы.

Приложение создано в учебных целях и не предназначено для использования в реальных бизнес-процессах. Все данные, используемые в приложении, являются вымышленными и не имеют отношения к реальным компаниям или сотрудникам.

Цель проекта

Основная цель проекта — создать веб-приложение, которое позволит пользователям:

  1. Группировать данные по подразделениям, сотрудникам и месяцам.
  2. Осуществлять расчёт итоговых сумм заработной платы для каждого сотрудника и подразделения.

Данные о сотрудниках

Для начала работы необходимо определить структуру данных о сотрудниках. В нашем приложении будут следующие поля:

  • Подразделение: название подразделения, к которому относится сотрудник.
  • Фамилия, имя, отчество: полные данные о сотруднике.
  • Оклад (О): фиксированная сумма заработной платы сотрудника.
  • Начисления основной заработной платы: начисления за каждый месяц, включая количество рабочих дней в месяце (М) и количество рабочих дней сотрудника (Д).

Требования к функционалу

Приложение должно поддерживать следующие основные функции:

Расчёт итоговых сумм:
   — Автоматический расчёт начисленной заработной платы для каждого подразделения и сотрудника на основе оклада и количества рабочих дней.
   — Итоговая сумма заработной платы за каждый месяц для каждого подразделения и сотрудника.

Группировка данных:
   — Возможность группировки данных по подразделениям.
   — Возможность группировки данных по сотрудникам.
   — Возможность группировки данных по месяцам.

Решение задачи

  1. Настройка окружения:
       — Установите PHP и настройте локальное окружение для разработки.
       — Установите Laravel 11 и настройте проект.
  2. Создание моделей и миграций:
       — Создайте модели данных, которые будут использоваться в приложении.
       — Напишите миграции для создания таблиц в базе данных MySQL.
  3. Установка и настройка Filament3:
       — Установите Filament3 для работы с шаблонами.
       — Настройте шаблоны для отображения данных из базы данных.
  4. Создание виджетов
  5. Выгрузка отчетов

Настройка окружения

Установим Laravel и филамент

Создание моделей и миграций

База данных сотрудников(Laravel php Filament)

Для создания файлов с миграциями и моделями выполним в консоли следующие команды:

Послед создания файлов отредактируем их:

Настройка миграций

Миграция Departaments

Миграция Employees

Миграция Salaries

Настройка моделей

Модель Departament

Модель Employee

Модель Salary

Заполнение БД фейковыми данными

Для создания seed и factory для моделей DepartmentEmployee и Salary в Laravel, следуйте приведенным ниже шагам.

1. Создание Factory для департаментов

Создайте factory для модели Department, чтобы генерировать случайные названия департаментов.

2. Создание Factory для сотрудников

Теперь создадим factory для модели Employee.

3. Создание Factory для зарплат

Теперь создадим factory для модели Salary.

4. Создание Seed для департаментов, сотрудников и зарплат

Теперь создадим seed, который будет использовать эти factories для создания департаментов, сотрудников и их зарплат.

5. Регистрация Seeders

Не забудьте зарегистрировать ваш seeder в DatabaseSeeder.php, если вы еще этого не сделали:

php artisan migrate --seed

Создание ресурса

Устанавливаем конструктор панелей

Устанавливаем конструктор панелей Filament, выполнив следующие команды в каталоге вашего проекта Laravel:

Вы можете создать новую учетную запись пользователя с помощью следующей команды:

База данных сотрудников(Laravel php Filament)

Настройка ресурса сотрудников

EmployeeResource.php

Настройка менеджера связей с зарплатой

Использование страницы ManageRelatedRecords является альтернативой использованию менеджера связей, если вы хотите отделить функциональность управления отношениями от редактирования или просмотра записи о владельце.

Эта функция идеальна, если вы используете вспомогательную навигацию по ресурсам, так как вы можете легко переключаться между страницей просмотра или редактирования и страницей связей.

Чтобы создать страницу отношений, вам следует использовать команду make:filament-page:

relation-managers relation-pages

app\Filament\Resources\EmployeeResource\Pages\ManageEmployeeSalary.php
База данных сотрудников(Laravel php Filament)
База данных сотрудников(Laravel php Filament)

Создание сервиса подсчета рабочих дней

Создадим класс WorkingDayCounterService в папке app/Services.

Создание виджетов

Виджет зарплаты по месяцам
База данных сотрудников(Laravel php Filament)
EmployeeSalary.php

Виджет табличный с группировкой по отделам

База данных сотрудников(Laravel php Filament)
GroupDepartment.php

Выгрузка отчетов

Выгрузка в pdf

composer require torgodly/html2media

Html2Media — это мощный пакет Laravel Filament, который позволяет создавать PDF-файлы, просматривать документы и печатать содержимое непосредственно из вашего приложения. 🚀

База данных сотрудников(Laravel php Filament)

Установим пакет и добавим в ресурс кнопку print. Так же для отчета нужно будет создать blade шаблон и передать в него данные

База данных сотрудников(Laravel php Filament)

Заключение

В результате выполнения проекта было разработано веб-приложение, которое позволяет управлять персоналом и рассчитывать заработную плату. Приложение поддерживает группировку данных по подразделениям, сотрудникам и месяцам, а также автоматический расчёт начисленной заработной платы и итоговых сумм.

Хотя приложение создано в учебных целях и не предназначено для использования в реальных бизнес-процессах, оно может служить примером того, как можно реализовать функционал расчёта заработной платы в веб-приложении. В реальных проектах необходимо учитывать дополнительные требования и ограничения, связанные с законодательством, внутренними политиками компании и другими факторами.

Добавить комментарий