Completed

Migración/Completación de sistema de asistencia de personal desde Codeigniter a Laravel

Published on the November 12, 2018 in IT & Programming

About this project

Open

Migración/Completación de sistema de asistencia de personal desde CodeIgniter a Laravel

En el siguiente enlace está el archivo con todo el detalle de lo que se requiere: http://bit.ly/2J94OiH

Debe ser demostrable (en proyectos realizados) la experiencia que tenga en desarrollo con Laravel y que también tenga trabajos realizados por medio de esta plataforma Workana.

lo que tiene el sistema actualmente:

sistema que está desarrollado (en más o menos un 65%) en codeigniter para registro de asistencias de empleados se necesita migrarlo/completarlo a laravel:

    • registro de departamentos y subdepartamentos.
    • Registro de grupos de empleados: descripción (por ejemplo: grupo1, grupo2, grupo3), días de vacación, días de incremento, años laborables, máximo días acumulables, máximo días mes, meses período (por lo general 12 meses).
    • Registro de empleados: ID, nombres, grupo de empleado, jefe, horas laborables, departamento, fecha entrada laboral, fecha salida laboral.
    • Registro de estado de horarios: descripción (por ejemplo: libre, permiso, vacaciones, feriado).
    • Registro de horarios: descripción, hora entrada, hora salida almuerzo, hora entrada almuerzo, hora salida, minutos de alimentación (para la hora de almuerzo), estado de horario.
    • Registro de planificación de horarios: empleado (por empleado, departamento, o grupo de empleados), horario (de los creados en Registro de horarios), fecha inicio, fecha fin, estado de horario.
    • Registro de permisos: descripción (por ejemplo: institucional, enfermedad, calamidad doméstica, maternidad, con cargo a a vacaciones por atrasos), máximo días, máximo horas, número días justificación, si se descuenta o no de las vacaciones.
    • Solicitudes de permisos: empleado, período vacación, tipo de permiso (registro de permisos indicado en el punto anterior), fecha y hora (salida), fecha y hora (regreso). También los siguientes campos que se calculan automáticamente con los campos fecha y hora de salida y regreso:  máximo días, máximo horas, días de justificación, días y horas. También se indica el campo el jefe que autoriza la solicitud del permiso.

    • Registro de solicitud de vacación: empleado, período vacación, máximo días vacación, máximo acumulable vacación, fecha inicio, fecha fin, días solicitados (basado en fecha inicio y fin), jefe que autoriza. También tiene la sección con los campos que se calculan automáticamente: días, horas y minutos.
    • Reporte de permisos: por empleado, por fecha (inicio y fin) y por todos.


tecnologías utilizadas en el sistema:

el sistema está desarrollado utilizando las siguientes tecnologías y librerías:
    • framework codeigniter
    • framework materializecss (similar a bootstrap)
    • jquery
    • json
    • dompdf

lo que se requiere

    • implementar módulo de login propio de laravel que se crea con el comando "artisan make:auth"
    • implementar módulo de permisos y roles de usuarios mediante el componente para
    • laravel "spatie". En este enlace está un tutorial de cómo realizarlo: http://bit.ly/2CWZcI7
    • Implementar módulo de auditoría de sistema utilizando el componente “Laravel Auditing” http://bit.ly/2yUzWxK http://bit.ly/2R9fqB3. Desde backend se tiene que tener poder ver y consultar todos lo referente a registros de auditoría del sistema con todos los cambios realizados por el usuario y por el sistema en sí.

    • Poder conectarse a todas las unidades de relojes biométricos vía IP y leer su estado (conectado o fuera de línea). El código para esta parte está realizado en el sistema en CodeIgniter y hay que realizarlo para Laravel tomando en cuenta la utilización de otra librería open source que es similar a la que se utiliza actualmente.
    • Push/Pull datos a/desde una única unidad de reloj o múltiples unidades a la vez. La referencia se la puede tomar del código del sistema actual.
    • La extracción de los datos se tiene que realizar automáticamente mediante tarea programada utilizando el componente propio de Laravel "Task Scheduling": http://bit.ly/2EBkc92. La hora y frecuencia de la ejecución de la tarea programada el usuario lo debe realizar por medio del backend del sistema.
    • Push/Pull configuraciones a/desde múltiples unidades de relojes a la vez. La referencia se la puede tomar del código del sistema actual.
    • Módulo de relojes par poder agregar o eliminar relojes en sistema. Los datos serían la IP y puerto, ubicación del reloj y algún otro dato más que se necesite.
    • Módulo de usuarios. Ya lo da por defecto Laravel con lo que hay que agregarle el resto de campos adicionales.
    • Módulo de provincias.
    • Módulo de ciudades.
    • Módulo de departamento y subdepartamento para luego poder indicar en cual de ellos labora el empleado.
    • Módulo de empleados. Tomando como referencia el del sistema actual.
    • Módulo de horarios laborales para asignar a empleados y grupos de empleados.
    • Módulo de permisos. La referencia se la puede tomar del código del sistema actual. En esta parte se debe considerar que el propio usuario o la secretaria del departamento donde pertenece, le puede realizar la solicitud del permiso.

    • Módulo de vacaciones. En esta parte se debe considerar que el propio usuario o la secretaria del departamento donde pertenece, le puede realizar la solicitud de las vacaciones.
    • Desarrollo de TestUnits con Laravel para tener control y comprobar de que no vaya a fallar todo el desarrollo y creación de nuevas funcionalidades y módulos.
    • Para el desarrollo del sistema, se tiene que considerar en todos los módulos lo que son las migraciones, seeders y factories de Laravel. Con los seeders se tendrá los datos de configuración inicial y obligatoria del sistema como por ejemplo: superusuario y clave, roles, permisos, etc.
    • Reporte de marcaciones (timbres) de los empleados.
    • Reporte de atrasos: por empleado y por grupo de empleados.
    • Reporte de faltas (inasistencias): por empleado y por grupo de empleados.
    • Salidas anticipadas (antes de hora de jornada laboral): por empleado y por grupo de empleados.
    • Reporte de entradas/salidas
    • Reporte de vacaciones. En este se tiene que considerar reporte tipo kardex, es decir en el que conste cuántos días de vacaciones le corresponden al empleado (por ejemplo 15, 20, 30 días), cuántos ha tomado por motivo de atrasos o solicitud de permisos y cuántos días y horas le quedan de sus vacaciones. Para esto puedo indicar cómo se requiere mediante unos gráficos.

    • Exportar reportes en Excel y PDF utilizando el componente para Laravel llamado "Laravel-Excel" y "Laravel-PDF" respectivamente.
    • Desarrollo de envío de notificaciones al email utilizando el propio componente de Laravel: http://bit.ly/2EMI2Pp

Si quien tome el proyecto ve que falta algún otro reporte y/o funcionalidad imprensindible para el sistema, también hay que realizarlo.


NOTAS

    • Quien tome el proyecto, debe comunicarse seguido indicando el progreso del trabajo. La comunicación tiene que ser máxima de 1 día de frecuencia, es decir, que no se aceptan no menos de 1 comunicación por día.
    • Para el desarrollo, quien tome el trabajo debe utilizar herramientas de seguimientos de proyectos como por ejemplo trello.com (o alguna otra herramienta online) para ir viendo el avance del proyecto. Dentro de esto se debe indicar en detalle las entregas de cada fase, módulo y/o tarea.
    • El desarrollador debe indicar continuamente todas las fases/etapas del proyecto que va a realizar y en las que esté trabajando.
    • Las funcionalidades a realizar, están también detalladas en la parte que indico de lo del sistema CodeIgniter.
    • Si el desarrollador determina que se le hace más fácil y rápido comenzar mejor a su manera desarrollar el sistema en Laravel, se acepta sin problema que lo quiera hacer así.
    • Antes de comenzar el proyecto, el desarrollador tiene que presentar los diagramas respectivos de lo que va a realizar en el sistema: diagrama entidad-relación para la base de datos, diagrama de los módulos que va a tener el sistema y otros diagramas que el desarrollador considere pertinentes.
    • El desarrollo debe realizarse en Linux ya que como está indicado en el proyecto,  se debe utilizar el componente Task Scheduling el cual va directamente enlazado a los crontab de Linux.
    • Para el proyecto se debe utilizar la reciente versión de Laravel 5.7.
    • Como sistema va a ser desarrollado en Laravel, la base de datos a utilizar debe ser independiente, es decir puede ser generada en PostgreSQL o MariaDB/MySQL o cualquier otra. En este caso se debe tomar en cuenta que sea generada en PostgreSQL.
    • Para realizar el trabajo pueden basarse en este sistema (código fuente en Laravel) que es similar a lo que se está requiriendo y ya tiene muchas funcionalidades desarrolladas de lo que se necesita: http://bit.ly/2ECLXy9
    • Para el desarrollo de la interfaz, se debe utilizar alguna plantilla basada en bootstrap 4 y también utilizar Vue.js.
    • Para las vistas de listado en Laravel, la paginación debe realizarse utilizando paginación real, es decir, no se debe hacer aquella en que primero se cargan en la página todos los registros (que pueden ser miles) y luego sólo realizan presentación de grupo de registros como que así fuera paginación.
    • Guardar en base de datos todos los logs de errores que se puedan sucitar en el sistema como por ejemplo: error de conexión al reloj biométrico y otros del sistema en general. Con esto, desde el mismo sistema se puede ver los errores para así sirva de guía en cómo solucionarlos. Como para que sirva de referencia, en el sistema "triton" indicado en el proyecto está también la parte de captura y guardado de este tipo de logs.

    • Para la realización del trabajo entrego el código fuente del sistema actual en CodeIgniter para que lo puedan revisar con detalle.
    • Como para que se pueda acelerar el desarrollo del proyecto, hay que utilizar lo más que se pueda componentes propios de laravel o de terceros que sean ampliamente utilizados y/o actualizados como es el caso de "Laravel-Excel" o de "Laravel-dompdf".
    • Se entrega una base de datos de ejemplo para que puedan realizar las pruebas o si desean también pueden generar registros de ejemplos para las pruebas mediante la utilización de Factories de Laravel.
    • Como para que tengan idea de la parte de reportes, puedo hacer la entrega de reportes ejemplos de referencia.
    • Una vez terminado el proyecto, deben entregar el código fuente del desarrollo.
    • Todo el código fuente debe dejarlo bien documentado.
    • Indicar y entregar guía/manual sobre como dejar en producción y listo para instalar/configurar el sistema en Ubuntu.

Quien realice el trabajo demuestre que es una persona muy profesional y pueda dar las mejores alternativas de solución al desarrollo e ideas de mejora, será considerado para futuros proyectos ya que estoy buscando con quien tener una relación profesional a largo plazo.

La fortaleza que debe tener quien tome el trabajo es que sepa ser ágil en análisis de requisitos y funcional ya que ese es el 70% del trabajo.

Category IT & Programming
Subcategory Web development
What is the scope of the project? Create a new custom site
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Roles needed Developer, Business analyst

Delivery term: December 04, 2018

Skills needed