Un buen negocio o empresa con un numero de empleados considerable siempre va a necesitar un buen sistema de nomina sobre todo para sacar reportes, generar archivos de dispersión de nomina para pagarle a través del banco y sobre todo para generar el timbrado.
Durante las siguientes publicaciones mostraremos como desarrollar un sistema de nomina completo en CodeIgniter 4.x
Primero crearemos la base del proyecto
Creamos el proyecto via composer con el siguiente codigo
composer create-project codeigniter4/appstarter Nomina2023
Creamos la tabla nomina2023 en mariaDB/MySQL o en el motor de su preferencia
en app/config/database.php cambiamos la configuración de la base de datos default lo dejamos de la siguiente forma, igual si ustedes le quieren poner alguna contraseña por seguridad pueden ponersela
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'nomina2023',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
en app/config/app.php modificamos las siguientes variables
public $indexPage = '';
public $defaultLocale = 'es';
public $supportedLocales = ['es'];
Para debugear ponemos este codigo al final del archivo app/config/constants.php
define("ENVIRONMENT","development");
Ahora procedemos a instalar boilerplate el cual nos servirá para instalar la plantilla adminLTE3 con un administrador de usuario/roles/permisos/login
Primero instalamos via composer con el siguiente comando
composer require agungsugiarto/boilerplate
Instalamos Auth que es lo que permitirá logearnos administrar usuarios, permisos y roles
php spark auth:publish
Publish Migration? [y, n]: y
created: Database/Migrations/2017-11-20-223112_create_auth_tables.php
Remember to run `spark migrate -all` to migrate the database.
Publish Models? [y, n]: n
Publish Entities? [y, n]: n
Publish Controller? [y, n]: n
Publish Views? [y, n]: n
Publish Filters? [y, n]: n
Publish Config file? [y, n]: y
created: Config/Auth.php
Publish Language file? [y, n]: n
en app/config/auth.php remplazamos el siguiente codigo
public $views = [
'login' => 'agungsugiarto\boilerplate\Views\Authentication\login',
'register' => 'agungsugiarto\boilerplate\Views\Authentication\register',
'forgot' => 'agungsugiarto\boilerplate\Views\Authentication\forgot',
'reset' => 'agungsugiarto\boilerplate\Views\Authentication\reset',
'emailForgot' => 'agungsugiarto\boilerplate\Views\Authentication\emails\forgot',
'emailActivation' => 'agungsugiarto\boilerplate\Views\Authentication\emails\activation',
];
en app/config/filters.php agregamos los siguientes alias
public $aliases = [
'login' => \Myth\Auth\Filters\LoginFilter::class,
'role' => \agungsugiarto\boilerplate\Filters\RoleFilter::class,
'permission' => \agungsugiarto\boilerplate\Filters\PermissionFilter::class,
]
Instalamos, migramos y sembramos boilerplate con el siguiente comando
php spark boilerplate:install
En controller/home.php lo dejamos de la siguiente manera para que siempre nos retorne al admin
<?php
namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
return redirect()->to('/admin');
}
}
En app/config/Boilerplate.php modificamos public $i18n = ‘Indonesian’; a public $i18n = ‘Spanish’; para cambiar el idioma del datable, para el nombre del programa cambiamos public $appName = ‘Boilerplate’; por public $appName = ‘Nomina 2023’;
Tambien modificamos el brand a nuestro antojo yo lo modifique de esta manera
//--------------------------------------------------------------------------
// Theme boilerplate
//
// BG: blue, indigo, purple, pink, red, orange, yellow, green, teal, cyan,
// gray, gray-dark, black
// Type: dark, light
// Shadow: 0-4
//
//--------------------------------------------------------------------------
public $theme = [
'body-sm' => false,
'navbar' => [
'bg' => 'white',
'type' => 'light',
'border' => true,
'user' => [
'visible' => true,
'shadow' => 0,
],
],
'sidebar' => [
'type' => 'dark',
'shadow' => 4,
'border' => false,
'compact' => true,
'links' => [
'bg' => 'blue',
'shadow' => 1,
],
'brand' => [
'bg' => 'gray-dark',
'logo' => [
'icon' => 'favicon.ico', // path to image | this example icon on public root folder.
'text' => '<strong>Nomina</strong>2023',
'shadow' => 2,
],
],
'user' => [
'visible' => true,
'shadow' => 2,
],
],
'footer' => [
'fixed' => false,
'vendorname' => 'CesarSytems',
'vendorlink' => 'https://cesarsystems.com.mx/',
],
];
iniciamos el programa con el siguiente comando
php spark serve
Los usuarios y contraseña por default son los siguientes
+----+--------+-------------+
| No | User | Password |
+----+--------+-------------+
| 1 | admin | super-admin |
| 2 | user | super-user |
+----+--------+-------------+
